#ifndef __YETI_H__
#define __YETI_H__
+#include <memory>
+
#include "badguy.hpp"
class Yeti : public BadGuy
void draw(DrawingContext& context);
void write(lisp::Writer& writer);
- void activate();
+ 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 run();
void jump_up();
void drop_stalactite();
void summon_snowball();
void jump_down();
- void die(Player& player);
-
+
+ void draw_hit_points(DrawingContext& context);
+
+ void take_hit(Player& player);
+
enum YetiState {
JUMP_DOWN,
RUN,
JUMP_UP,
- BE_ANGRY
+ BE_ANGRY,
+ SQUISHED
};
YetiState state;
- Timer stomp_timer;
+ Timer state_timer;
Timer safe_timer;
int stomp_count;
int hit_points;
- std::string dead_script;
+ std::auto_ptr<Surface> hud_head;
};
#endif
-