Rolled back bomb to old behaviour, some bomb gfx tuning
[supertux.git] / src / badguy / yeti.hpp
index 43fab19..a3c996f 100644 (file)
@@ -1,7 +1,8 @@
 //  $Id$
 //
-//  SuperTux
-//  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
+//  SuperTux - Boss "Yeti"
+//  Copyright (C) 2005 Matthias Braun <matze@braunis.de>
+//  Copyright (C) 2006 Christoph Sommer <christoph.sommer@2006.expires.deltadevelopment.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
@@ -20,6 +21,8 @@
 #ifndef __YETI_H__
 #define __YETI_H__
 
+#include <memory>
+
 #include "badguy.hpp"
 
 class Yeti : public BadGuy
@@ -30,33 +33,40 @@ public:
 
   void draw(DrawingContext& context);
   void write(lisp::Writer& writer);
+  void initialize();
   void active_update(float elapsed_time);
-  HitResponse collision_solid(GameObject& object, const CollisionHit& hit);
-  bool collision_squished(Player& player);
+  void collision_solid(const CollisionHit& hit);
+  bool collision_squished(GameObject& object);
+  void kill_squished(GameObject& object);
   void kill_fall();
 
+  virtual Yeti* clone() const { return new Yeti((Yeti&)*this); }
+
 private:
-  void go_right();
-  void go_left();
-  void angry_jumping();
+  void run();
+  void jump_up();
+  void be_angry();
   void drop_stalactite();
   void summon_snowball();
-  
+  void jump_down();
+
+  void draw_hit_points(DrawingContext& context);
+
+  void take_hit(Player& player);
+
   enum YetiState {
-    INIT,
-    ANGRY_JUMPING,
-    THROW_SNOWBALL,
-    GO_RIGHT,
-    GO_LEFT
+    JUMP_DOWN,
+    RUN,
+    JUMP_UP,
+    BE_ANGRY,
+    SQUISHED
   };
-  Direction side;
   YetiState state;
-  Timer timer;
+  Timer state_timer;
   Timer safe_timer;
-  int jumpcount;
+  int stomp_count;
   int hit_points;
-  std::string dead_script;
+  std::auto_ptr<Surface> hud_head;
 };
 
 #endif
-