#include "supertux/object_factory.hpp"
static const float FLYTIME = 1.2f;
-static const float FLYSPEED = -100.0f;
+static const float MOVE_SPEED = -100.0f;
SpiderMite::SpiderMite(const Reader& reader) :
BadGuy(reader, "images/creatures/spidermite/spidermite.sprite"),
}
SpiderMite::SpiderMite(const Vector& pos) :
- BadGuy(pos, "images/creatures/spidermite/spidermite.sprite"),
+ BadGuy(pos, "images/creatures/spidermite/spidermite.sprite"),
mode(),
timer()
{
{
sprite->set_action(dir == LEFT ? "left" : "right");
mode = FLY_UP;
- physic.set_velocity_y(FLYSPEED);
+ physic.set_velocity_y(MOVE_SPEED);
timer.start(FLYTIME/2);
}
void
SpiderMite::active_update(float elapsed_time)
{
+ if(frozen)
+ {
+ BadGuy::active_update(elapsed_time);
+ return;
+ }
if(timer.check()) {
if(mode == FLY_UP) {
mode = FLY_DOWN;
- physic.set_velocity_y(-FLYSPEED);
+ physic.set_velocity_y(-MOVE_SPEED);
} else if(mode == FLY_DOWN) {
mode = FLY_UP;
- physic.set_velocity_y(FLYSPEED);
+ physic.set_velocity_y(MOVE_SPEED);
}
timer.start(FLYTIME);
}
}
}
+void
+SpiderMite::freeze()
+{
+ physic.enable_gravity(true);
+ BadGuy::freeze();
+}
+
+void
+SpiderMite::unfreeze()
+{
+ BadGuy::unfreeze();
+ physic.enable_gravity(false);
+ initialize();
+}
+
+bool
+SpiderMite::is_freezable() const
+{
+ return true;
+}
+
/* EOF */