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 */