X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fplayer.cpp;h=6608f8c48dc836242c3e7284ef48e3d6b7cc2311;hb=6e843b1780f62f45b7021bd8c38181aa211588ee;hp=3f5bb9338bfd63c51ee3ae99e058d0d912939489;hpb=8e13f4a4c6f373f40549f90cd2212815fd0d6eb7;p=supertux.git diff --git a/src/player.cpp b/src/player.cpp index 3f5bb9338..6608f8c48 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -40,13 +40,18 @@ #include "gameloop.h" #include "trigger/trigger_base.h" -// behavior definitions: -#define TILES_FOR_BUTTJUMP 3 -// animation times (in ms): -#define SHOOTING_TIME .150 - -// time before idle animation starts -#define IDLE_TIME 2.500 +static const int TILES_FOR_BUTTJUMP = 3; +static const float SHOOTING_TIME = .150; +/// time before idle animation starts +static const float IDLE_TIME = 2.5; + +static const float WALK_ACCELERATION_X = 300; +static const float RUN_ACCELERATION_X = 400; +static const float SKID_XM = 200; +static const float SKID_TIME = .3; +static const float MAX_WALK_XM = 230; +static const float MAX_RUN_XM = 320; +static const float WALK_SPEED = 100; // growing animation Surface* growingtux_left[GROWING_FRAMES]; @@ -131,7 +136,7 @@ Player::init() { holding_something = false; - bbox.set_size(32, 32); + bbox.set_size(31.8, 31.8); size = SMALL; got_power = NONE_POWER; @@ -388,6 +393,14 @@ Player::handle_horizontal_input() } #endif + // extend/shrink tux collision rectangle so that we fall through/walk over 1 + // tile holes + if(fabsf(vx) > MAX_WALK_XM) { + bbox.set_width(33); + } else { + bbox.set_width(31.8); + } + physic.set_velocity(vx, vy); physic.set_acceleration(ax, ay); } @@ -660,13 +673,13 @@ Player::handle_input() { duck = true; bbox.move(Vector(0, 32)); - bbox.set_height(32); + bbox.set_height(31.8); } else if(input.down == UP && size == BIG && duck) { // try if we can really unduck bbox.move(Vector(0, -32)); - bbox.set_height(64); + bbox.set_height(63.8); duck = false; // FIXME #if 0 @@ -676,7 +689,7 @@ Player::handle_input() } else { // undo the ducking changes bbox.move(Vector(0, 32)); - bbox.set_height(32); + bbox.set_height(31.8); } #endif } @@ -689,7 +702,7 @@ Player::grow(bool animate) return; size = BIG; - bbox.set_height(64); + bbox.set_height(63.8); bbox.move(Vector(0, -32)); if(animate) @@ -916,7 +929,7 @@ Player::kill(HurtMode mode) growing_timer.start(GROWING_TIME); safe_timer.start(TUX_SAFE_TIME + GROWING_TIME); size = SMALL; - bbox.set_height(32); + bbox.set_height(31.8); duck = false; } } @@ -938,7 +951,7 @@ Player::remove_powerups() { got_power = NONE_POWER; size = SMALL; - bbox.set_height(32); + bbox.set_height(31.8); } void