X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplayer.h;h=da36ef8c23a16bbe651c340e0868ea1f9e34840e;hb=a4f680b2b769595e2c4369a399de417fbc0c6641;hp=b0edbd23c340a033d8f8f93765c47a2edde826a9;hpb=734dad6deb86707d985d2af76b5b09db7a14d259;p=supertux.git diff --git a/src/player.h b/src/player.h index b0edbd23c..da36ef8c2 100644 --- a/src/player.h +++ b/src/player.h @@ -31,8 +31,9 @@ /* Times: */ -#define TUX_SAFE_TIME 750 +#define TUX_SAFE_TIME 1250 #define TUX_INVINCIBLE_TIME 10000 +#define TUX_INVINCIBLE_TIME_WARNING 2000 #define TIME_WARNING 20000 /* When to alert player they're low on time! */ /* One-ups... */ @@ -65,6 +66,7 @@ struct player_input_type int right; int left; int up; + int old_up; int down; int fire; int old_fire; @@ -75,57 +77,62 @@ void player_input_init(player_input_type* pplayer_input); class Sprite; extern Surface* tux_life; -extern std::vector tux_right; -extern std::vector tux_left; -extern Surface* smalltux_jump_left; -extern Surface* smalltux_jump_right; -extern Surface* smalltux_stand_left; -extern Surface* smalltux_stand_right; -extern Sprite* bigtux_right; -extern Sprite* bigtux_left; -extern Sprite* bigtux_right_jump; -extern Sprite* bigtux_left_jump; -extern Sprite* ducktux_right; -extern Sprite* ducktux_left; -extern Surface* skidtux_right; -extern Surface* skidtux_left; -extern Surface* firetux_right[3]; -extern Surface* firetux_left[3]; -extern Surface* bigfiretux_right[3]; -extern Surface* bigfiretux_left[3]; -extern Surface* bigfiretux_right_jump; -extern Surface* bigfiretux_left_jump; -extern Surface* duckfiretux_right; -extern Surface* duckfiretux_left; -extern Surface* skidfiretux_right; -extern Surface* skidfiretux_left; -extern Surface* cape_right[2]; -extern Surface* cape_left[2]; -extern Surface* bigcape_right[2]; -extern Surface* bigcape_left[2]; - -class Player + +extern Sprite* smalltux_gameover; +extern Sprite* smalltux_star; +extern Sprite* largetux_star; + +struct PlayerSprite +{ + Sprite* stand_left; + Sprite* stand_right; + Sprite* walk_right; + Sprite* walk_left; + Sprite* jump_right; + Sprite* jump_left; + Sprite* kick_left; + Sprite* kick_right; + Sprite* skid_right; + Sprite* skid_left; + Sprite* grab_left; + Sprite* grab_right; + Sprite* duck_right; + Sprite* duck_left; +}; + +extern PlayerSprite smalltux; +extern PlayerSprite largetux; +extern PlayerSprite firetux; +extern PlayerSprite icetux; + +class Player : public GameObject { public: + enum HurtMode { KILL, SHRINK }; + enum Power { NONE_POWER, FIRE_POWER, ICE_POWER }; + player_input_type input; - bool got_coffee; + int got_power; int size; bool duck; + bool holding_something; DyingType dying; Direction dir; + Direction old_dir; bool jumping; + bool can_jump; + bool butt_jump; int frame_; int frame_main; - base_type base; - base_type old_base; base_type previous_base; Timer invincible_timer; Timer skidding_timer; Timer safe_timer; Timer frame_timer; + Timer kick_timer; Physic physic; public: @@ -137,13 +144,16 @@ public: void grabdistros(); void draw(); void collision(void* p_c_object, int c_object); - void kill(int mode); + void kill(HurtMode mode); void is_dying(); bool is_dead(); void player_remove_powerups(); - void keep_in_bounds(); + void check_bounds(bool back_scrolling, bool hor_autoscroll); bool on_ground(); bool under_solid(); + void grow(); + + std::string type() { return "Player";}; private: void handle_horizontal_input();