BadGuy();
~BadGuy();
- //virtual void action_activated(float elapsed_time);
-
+ /** Called when the badguy is drawn. The default implementation simply draws
+ * the badguy sprite on screen
+ */
virtual void draw(DrawingContext& context);
+ /** Called each frame. The default implementation checks badguy state and
+ * calls active_action and inactive_action
+ */
virtual void action(float elapsed_time);
+ /** Called when a collision with another object occured. The default
+ * implemetnation calls collision_player, collision_solid, collision_badguy
+ * and collision_squished
+ */
virtual HitResponse collision(GameObject& other,
const CollisionHit& hit);
+ /** Set the badguy to kill/falling state, which makes him falling of the
+ * screen (his sprite is turned upside-down)
+ */
virtual void kill_fall();
Vector get_start_position() const
STATE_SQUISHED,
STATE_FALLING
};
-
+
+ /** Called when the badguy collided with a player */
virtual HitResponse collision_player(Player& player,
const CollisionHit& hit);
+ /** Called when the badguy collided with solid ground */
virtual HitResponse collision_solid(GameObject& other,
const CollisionHit& hit);
+ /** Called when the badguy collided with another badguy */
virtual HitResponse collision_badguy(BadGuy& other,
const CollisionHit& hit);
-
+
+ /** Called when the player hit the badguy from above. You should return true
+ * if the badguy was squished, false if squishing wasn't possible
+ */
virtual bool collision_squished(Player& player);
+ /** called each frame when the badguy is activated. */
virtual void active_action(float elapsed_time);
+ /** called each frame when the badguy is not activated. */
virtual void inactive_action(float elapsed_time);
/**
}
}
-#if 0
/* In case the player has pressed Down while in a certain range of air,
enable butt jump action */
if (input.down && !butt_jump && !duck)
- if(tiles_on_air(TILES_FOR_BUTTJUMP) && jumping)
+ //if(tiles_on_air(TILES_FOR_BUTTJUMP) && jumping)
butt_jump = true;
-#endif
/* When Down is not held anymore, disable butt jump */
if(butt_jump && !input.down)
butt_jump = false;
+#if 0
// Do butt jump
if (butt_jump && on_ground() && is_big())
{
butt_jump = false;
-#if 0
// Break bricks beneath Tux
if(Sector::current()->trybreakbrick(
Vector(base.x + 1, base.y + base.height), false)
physic.set_velocity_y(2);
butt_jump = true;
}
-#endif
-#if 0
// Kill nearby badguys
std::vector<GameObject*> gameobjects = Sector::current()->gameobjects;
for (std::vector<GameObject*>::iterator i = gameobjects.begin();
}
}
}
-#endif
}
+#endif
/** jumping is only allowed if we're about to touch ground soon and if the
* button has been up in between the last jump
physic.set_acceleration(0, 0);
physic.set_velocity(0, 700);
player_status->lives -= 1;
+ player_status->bonus = NO_BONUS;
dying = true;
dying_timer.start(3.0);
flags |= FLAG_NO_COLLDET;
bbox.set_size(31.8, 31.8);
on_ground_flag = false;
duck = false;
+ last_ground_y = vector.y;
input.reset();
physic.reset();