namespace {
-const float WALKSPEED = 80; /**< speed at which we walk around */
+const float IGEL_SPEED = 80; /**< speed at which we walk around */
const float TURN_RECOVER_TIME = 0.5; /**< seconds before we will again turn around when shot at */
const float RANGE_OF_VISION = 256; /**< range in px at which we can see bullets */
} // namespace
Igel::Igel(const Reader& reader) :
- WalkingBadguy(reader, "images/creatures/igel/igel.sprite", "walking-left", "walking-right"),
+ WalkingBadguy(reader, "images/creatures/igel/igel.sprite", "walking-left", "walking-right"),
turn_recover_timer()
{
- walk_speed = WALKSPEED;
+ walk_speed = IGEL_SPEED;
max_drop_height = 16;
}
WalkingBadguy(pos, d, "images/creatures/igel/igel.sprite", "walking-left", "walking-right"),
turn_recover_timer()
{
- walk_speed = WALKSPEED;
+ walk_speed = IGEL_SPEED;
max_drop_height = 16;
}
// check if we see a fire bullet
Sector* sector = Sector::current();
for (Sector::GameObjects::iterator i = sector->gameobjects.begin(); i != sector->gameobjects.end(); ++i) {
- Bullet* bullet = dynamic_cast<Bullet*>(*i);
+ Bullet* bullet = dynamic_cast<Bullet*>(i->get());
if (!bullet) continue;
if (bullet->get_type() != FIRE_BONUS) continue;
if (can_see(*bullet)) wants_to_flee = true;
HitResponse
Igel::collision_bullet(Bullet& bullet, const CollisionHit& hit)
{
- // default reaction if hit on front side
- if (((dir == LEFT) && hit.left) || ((dir == RIGHT) && hit.right)) {
+ // default reaction if hit on front side or for freeze and unfreeze
+ if (((dir == LEFT) && hit.left) || ((dir == RIGHT) && hit.right) ||
+ (bullet.get_type() == ICE_BONUS) || ((bullet.get_type() == FIRE_BONUS) && (frozen))) {
return BadGuy::collision_bullet(bullet, hit);
}
}
bool
+Igel::is_freezable() const
+{
+ return true;
+}
+
+bool
Igel::collision_squished(GameObject& )
{
// this will hurt