physic.set_velocity_y(0);
sprite->set_action(dir == LEFT ? "standing-left" : "standing-right");
- float recover_time = systemRandom.randf(MIN_RECOVER_TIME,MAX_RECOVER_TIME);
+ float recover_time = gameRandom.randf(MIN_RECOVER_TIME,MAX_RECOVER_TIME);
recover_timer.start(recover_time);
} else
if (newState == CHARGING) {
bool
SkullyHop::collision_squished(GameObject& object)
{
+ if (frozen)
+ return BadGuy::collision_squished(object);
+
sprite->set_action(dir == LEFT ? "squished-left" : "squished-right");
kill_squished(object);
return true;
void
SkullyHop::collision_solid(const CollisionHit& hit)
{
+ if (frozen)
+ {
+ BadGuy::collision_solid(hit);
+ return;
+ }
+
// just default behaviour (i.e. stop at floor/walls) when squished
if (BadGuy::get_state() == STATE_SQUISHED) {
BadGuy::collision_solid(hit);
{
BadGuy::active_update(elapsed_time);
+ // no change if frozen
+ if (frozen)
+ return;
+
// charge when fully recovered
if ((state == STANDING) && (recover_timer.check())) {
set_state(CHARGING);
}
}
+void
+SkullyHop::unfreeze()
+{
+ BadGuy::unfreeze();
+ initialize();
+}
+
+bool
+SkullyHop::is_freezable() const
+{
+ return true;
+}
+
/* EOF */