X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fplayer.h;h=dedc6b19cf20c1e32f1d79bbd48fea05c7a56088;hb=1165742c88f2daea799bc4a23787423f3701bd68;hp=21a00a2dc22fd4ead6f30ace9ea88b759d0c8c60;hpb=73d5a49c30eea598c9d3c06b69dbbbcd0d315dd1;p=supertux.git diff --git a/src/player.h b/src/player.h index 21a00a2dc..dedc6b19c 100644 --- a/src/player.h +++ b/src/player.h @@ -20,15 +20,15 @@ #ifndef SUPERTUX_PLAYER_H #define SUPERTUX_PLAYER_H -#include +#include "SDL.h" + #include "bitmask.h" #include "type.h" #include "timer.h" -#include "texture.h" +#include "screen/texture.h" #include "collision.h" #include "sound.h" #include "moving_object.h" -#include "drawable.h" #include "physic.h" /* Times: */ @@ -53,6 +53,7 @@ struct PlayerKeymap { public: int jump; + int activate; int duck; int left; int right; @@ -72,19 +73,24 @@ struct player_input_type int down; int fire; int old_fire; + int activate; }; void player_input_init(player_input_type* pplayer_input); class Sprite; +class Camera; extern Surface* tux_life; extern Sprite* smalltux_gameover; extern Sprite* smalltux_star; extern Sprite* largetux_star; -extern Sprite* growingtux_left; -extern Sprite* growingtux_right; + +#define GROWING_TIME 1000 +#define GROWING_FRAMES 7 +extern Surface* growingtux_left[GROWING_FRAMES]; +extern Surface* growingtux_right[GROWING_FRAMES]; struct PlayerSprite { @@ -102,6 +108,7 @@ struct PlayerSprite Sprite* grab_right; Sprite* duck_right; Sprite* duck_left; + Sprite* stomp; }; extern PlayerSprite smalltux; @@ -109,7 +116,7 @@ extern PlayerSprite largetux; extern PlayerSprite firetux; extern PlayerSprite icetux; -class Player : public MovingObject, public Drawable +class Player : public MovingObject { public: enum HurtMode { KILL, SHRINK }; @@ -145,10 +152,13 @@ public: Timer shooting_timer; // used to show the arm when Tux is shooting Timer dying_timer; Timer growing_timer; + Timer stomp_timer; Physic physic; + + Vector stomp_pos; public: - Player(DisplayManager& display_manager); + Player(); virtual ~Player(); int key_event(SDLKey key, int state); @@ -157,14 +167,14 @@ public: void grabdistros(); virtual void action(float elapsed_time); - virtual void draw(Camera& viewport, int layer); + virtual void draw(DrawingContext& context); virtual void collision(const MovingObject& other_object, int collision_type); void collision(void* p_c_object, int c_object); void kill(HurtMode mode); void player_remove_powerups(); - void check_bounds(Camera& viewport); + void check_bounds(Camera* camera); bool on_ground(); bool under_solid(); bool tiles_on_air(int tiles);