X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fplayer.hpp;h=f27decd4a232f4c02374451d9c7351a2b0ddea94;hb=9ba388a672ff024010e38b09e576edf8730bb454;hp=ce94e29e019f4b28baba9f31a6a1f5da5bb251c4;hpb=a1bbd50a338ffcda9933848e20bb1de344f25104;p=supertux.git diff --git a/src/object/player.hpp b/src/object/player.hpp index ce94e29e0..f27decd4a 100644 --- a/src/object/player.hpp +++ b/src/object/player.hpp @@ -39,12 +39,13 @@ class BadGuy; class Portable; +class Climbable; /* Times: */ -static const float TUX_SAFE_TIME = 1.8; -static const float TUX_INVINCIBLE_TIME = 10.0; -static const float TUX_INVINCIBLE_TIME_WARNING = 2.0; -static const float GROWING_TIME = 0.35; +static const float TUX_SAFE_TIME = 1.8f; +static const float TUX_INVINCIBLE_TIME = 10.0f; +static const float TUX_INVINCIBLE_TIME_WARNING = 2.0f; +static const float GROWING_TIME = 0.35f; static const int GROWING_FRAMES = 7; class Camera; @@ -68,7 +69,7 @@ public: void set_action(std::string action, int loops = -1); void one_time_animation(); - void draw(DrawingContext& context, const Vector& pos, int layer); + void draw(DrawingContext& context, const Vector& pos, int layer, Portable* grabbed_object); Sprite* head; Sprite* body; @@ -90,8 +91,8 @@ public: PlayerStatus* player_status; bool duck; bool dead; - //Tux can only go this fast. If set to 0 no special limit is used, only the default limits. - void set_speedlimit(float newlimit); + //Tux can only go this fast. If set to 0 no special limit is used, only the default limits. + void set_speedlimit(float newlimit); float get_speedlimit(); private: @@ -259,10 +260,21 @@ public: * Orders the current GameSession to start a sequence */ void trigger_sequence(std::string sequence_name); + + /** + * Requests that the player start climbing the given Climbable + */ + void start_climbing(Climbable& climbable); + + /** + * Requests that the player stop climbing the given Climbable + */ + void stop_climbing(Climbable& climbable); private: void handle_input(); void handle_input_ghost(); /**< input handling while in ghost mode */ + void handle_input_climbing(); /**< input handling while climbing */ bool deactivated; void init(); @@ -295,6 +307,8 @@ private: bool ghost_mode; /**< indicates if Tux should float around and through solid objects */ Timer unduck_hurt_timer; /**< if Tux wants to stand up again after ducking and cannot, this timer is started */ + + Climbable* climbing; /**< Climbable object we are currently climbing, null if none */ }; #endif /*SUPERTUX_PLAYER_H*/