The BIG COMMIT(tm)
[supertux.git] / src / badguy.h
index 0db6b61..5b94445 100644 (file)
 
 #include "SDL.h"
 
-#include "special/timer.h"
-#include "video/surface.h"
+#include "utils/lispreader.h"
+#include "timer.h"
 #include "math/physic.h"
-#include "special/sprite.h"
-#include "app/defines.h"
+#include "defines.h"
 #include "special/moving_object.h"
 #include "collision.h"
 #include "serializable.h"
 #include "scene.h"
 
-/* Timing constants (in ms): */
+using namespace SuperTux;
 
-#define KICKING_TIME 200
+/* Timing constants */
+#define KICKING_TIME .2
 
 /* Bad guy kinds: */
 enum BadGuyKind {
@@ -48,6 +48,7 @@ enum BadGuyKind {
   BAD_STALACTITE,
   BAD_FLAME,
   BAD_FISH,
+  BAD_FLAMEFISH,
   BAD_BOUNCINGSNOWBALL,
   BAD_FLYINGSNOWBALL,
   BAD_SPIKY,
@@ -61,17 +62,18 @@ enum BadGuyKind {
 
 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,
@@ -94,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
@@ -109,7 +111,6 @@ public:
   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)
@@ -117,8 +118,9 @@ private:
   Physic physic;
   float angle;
 
-  Sprite*   sprite_left;
-  Sprite*   sprite_right;
+  std::string action_left, action_right;
+
+  BadGuySpecs* specs;
 
   int animation_offset;
 
@@ -144,8 +146,7 @@ public:
   /** initializes the badguy (when he appears on screen) */
   void activate(Direction direction);  // should only be used by BadGuy's objects
 
-  Surface* get_image()
-    { return sprite_left->get_frame(0); }
+  Surface* get_image();
 
 private:
   void init();
@@ -181,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*/