X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fbadguy.hpp;h=092ff54c84099338cbf7d4bdc733e58d9e4d7732;hb=d794aac09d4a3b3f5f93985cd74381bb4de4ce84;hp=b6aa075165f53d8f445bb3789051fd39ef9393d2;hpb=12a28b64dcce9c7ff706451b4f3aecd201cc8a5f;p=supertux.git diff --git a/src/badguy/badguy.hpp b/src/badguy/badguy.hpp index b6aa07516..092ff54c8 100644 --- a/src/badguy/badguy.hpp +++ b/src/badguy/badguy.hpp @@ -53,7 +53,7 @@ public: /** Set the badguy to kill/falling state, which makes him falling of the screen (his sprite is turned upside-down) */ virtual void kill_fall(); - + /** Call this, if you use custom kill_fall() or kill_squashed(GameObject& object) */ virtual void run_dead_script(); @@ -96,6 +96,8 @@ public: bool is_frozen() const; + bool is_in_water() const; + protected: enum State { STATE_INIT, @@ -131,7 +133,7 @@ protected: /** called immediately before the first call to initialize */ virtual void initialize(); - + /** called when the badguy has been activated. (As a side effect the dir variable might have been changed so that it faces towards the player. */ @@ -146,6 +148,10 @@ protected: State get_state() const { return state; } + bool check_state_timer() { + return state_timer.check(); + } + /** returns a pointer to the nearest player or 0 if no player is available */ Player* get_nearest_player(); @@ -181,7 +187,7 @@ protected: bool is_active(); /** changes colgroup_active. Also calls set_group when badguy is in STATE_ACTIVE */ - void set_colgroup_active(CollisionGroup group); + void set_colgroup_active(CollisionGroup group); private: void try_activate(); @@ -189,14 +195,14 @@ private: protected: Physic physic; -public: +public: /** Count this badguy to the statistics? This value should not be changed during runtime. */ bool countMe; protected: /** true if initialize() has already been called */ - bool is_initialized; + bool is_initialized; Vector start_position; @@ -208,6 +214,7 @@ protected: bool frozen; bool ignited; /**< true if this badguy is currently on fire */ + bool in_water; /** < true if the badguy is currently in water */ std::string dead_script; /**< script to execute when badguy is killed */ @@ -216,18 +223,18 @@ private: /** true if state was STATE_ACTIVE at the beginning of the last call to update() */ - bool is_active_flag; + bool is_active_flag; Timer state_timer; /** true if we touched something solid from above and update_on_ground_flag was called last frame */ - bool on_ground_flag; + bool on_ground_flag; /** floor normal stored the last time when update_on_ground_flag was called and we touched something solid from above */ - Vector floor_normal; - + Vector floor_normal; + /** CollisionGroup the badguy should be in while active */ CollisionGroup colgroup_active;