X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy.h;h=5b944457029bd2f65260da42e21e2d0e1d8011b8;hb=d46c78c842ab4090a3f46e560c891234167f124b;hp=d1a6b843d461d82363e034b74f8f9a2de35fbb1d;hpb=03fe5c560a616e7d38a8b1d5d11bfe4675fa8896;p=supertux.git diff --git a/src/badguy.h b/src/badguy.h index d1a6b843d..5b9444570 100644 --- a/src/badguy.h +++ b/src/badguy.h @@ -24,13 +24,20 @@ #define SUPERTUX_BADGUY_H #include "SDL.h" + +#include "utils/lispreader.h" #include "timer.h" -#include "screen/texture.h" -#include "physic.h" -#include "sprite.h" -#include "moving_object.h" +#include "math/physic.h" +#include "defines.h" +#include "special/moving_object.h" #include "collision.h" #include "serializable.h" +#include "scene.h" + +using namespace SuperTux; + +/* Timing constants */ +#define KICKING_TIME .2 /* Bad guy kinds: */ enum BadGuyKind { @@ -41,28 +48,32 @@ enum BadGuyKind { BAD_STALACTITE, BAD_FLAME, BAD_FISH, + BAD_FLAMEFISH, BAD_BOUNCINGSNOWBALL, BAD_FLYINGSNOWBALL, BAD_SPIKY, BAD_SNOWBALL, BAD_WINGLING, BAD_WALKINGTREE, - NUM_BadGuyKinds + NUM_BadGuyKinds, + + BAD_INVALID }; BadGuyKind badguykind_from_string(const std::string& str); std::string badguykind_to_string(BadGuyKind kind); -void load_badguy_gfx(); -void free_badguy_gfx(); + +#if 0 class Player; +class BadGuySpecs; /* Badguy type: */ class BadGuy : public MovingObject, public Serializable { public: /* Enemy modes: */ - enum BadGuyMode { + enum BadGuyState { NORMAL=0, FLAT, KICK, @@ -85,9 +96,9 @@ public: BGM_SMALL }; public: - DyingType dying; - BadGuyKind kind; - BadGuyMode mode; + DyingType dying; + BadGuyKind kind; + BadGuyState state; /** If true the enemy will stay on its current platform, ie. if he reaches the edge he will turn around and walk into the other @@ -95,21 +106,21 @@ public: bool stay_on_platform; Direction dir; + Vector start_position; Timer frozen_timer; // gets frozen when a ice shot hits it private: - bool removable; bool seen; int squishcount; /// number of times this enemy was squiched Vector target; // Target that badguy is aiming for (wingling uses this) Timer timer; - Vector start_position; Physic physic; float angle; - Sprite* sprite_left; - Sprite* sprite_right; + std::string action_left, action_right; + + BadGuySpecs* specs; int animation_offset; @@ -132,6 +143,11 @@ public: */ void kill_me(int score); + /** initializes the badguy (when he appears on screen) */ + void activate(Direction direction); // should only be used by BadGuy's objects + + Surface* get_image(); + private: void init(); @@ -149,16 +165,10 @@ private: void action_wingling(double frame_ratio); void action_walkingtree(double frame_ratio); - /** initializes the badguy (when he appears on screen) */ - void activate(Direction direction); - /** handles falling down. disables gravity calculation when we're back on * ground */ void fall(); - /** let the player jump a bit (used when you hit a badguy) */ - void make_player_jump(Player* player); - /** Turn enemy into a bomb. To explode right way pass true */ void explode(bool right_away); @@ -172,13 +182,10 @@ private: void squish(Player* player); /** squish ourself, give player score and set dying to DYING_SQICHED */ void squish_me(Player* player); - /** set image of the badguy */ - void set_sprite(Sprite* left, Sprite* right); + /** set sprite's action of the badguy */ + void set_action(std::string action_left, std::string action_right); }; -#endif /*SUPERTUX_BADGUY_H*/ - -/* Local Variables: */ -/* mode:c++ */ -/* End: */ +#endif +#endif /*SUPERTUX_BADGUY_H*/