#include "log.hpp"
#include "level.hpp"
-static const float IDLE_TIME = 0.2; /**< time to wait before and after throwing */
-static const float THROW_TIME = 4.6; /**< time to spend throwing */
+static const float IDLE_TIME = 0.2f; /**< time to wait before and after throwing */
+static const float THROW_TIME = 4.6f; /**< time to spend throwing */
static const float THROW_INTERVAL = 1; /**< time between two thrown rocks */
static const float THROW_VELOCITY = 400; /**< initial velocity of thrown rocks */
Mole::Mole(const lisp::Lisp& reader)
- : BadGuy(reader, "images/creatures/mole/mole.sprite", LAYER_TILES-1), state(PRE_THROWING)
+ : BadGuy(reader, "images/creatures/mole/mole.sprite", LAYER_TILES-1), state(PRE_THROWING)
{
physic.enable_gravity(false);
+ sound_manager->preload("sounds/fall.wav");
+ sound_manager->preload("sounds/squish.wav");
+ sound_manager->preload("sounds/dartfire.wav");
}
Mole::Mole(const Vector& pos)
- : BadGuy(pos, "images/creatures/mole/mole.sprite", LAYER_TILES-1), state(PRE_THROWING)
+ : BadGuy(pos, "images/creatures/mole/mole.sprite", LAYER_TILES-1), state(PRE_THROWING)
{
physic.enable_gravity(false);
+ sound_manager->preload("sounds/fall.wav");
+ sound_manager->preload("sounds/squish.wav");
+ sound_manager->preload("sounds/dartfire.wav");
}
void
}
bool
-Mole::collision_squished(Player& )
+Mole::collision_squished(GameObject& )
{
set_state(DEAD);
sound_manager->play("sounds/squish.wav", get_pos());
switch (state) {
case PRE_THROWING:
if (timer.check()) {
- set_state(THROWING);
+ set_state(THROWING);
}
break;
case THROWING:
if (throw_timer.check()) {
throw_rock();
- throw_timer.start(THROW_INTERVAL);
+ throw_timer.start(THROW_INTERVAL);
}
if (timer.check()) {
- set_state(POST_THROWING);
+ set_state(POST_THROWING);
}
break;
case POST_THROWING:
if (timer.check()) {
- set_state(PEEKING);
+ set_state(PEEKING);
}
break;
case PEEKING:
if (sprite->animation_done()) {
- set_state(PRE_THROWING);
+ set_state(PRE_THROWING);
}
break;
case DEAD:
}
-void
+void
Mole::set_state(MoleState new_state)
{
switch (new_state) {
case PRE_THROWING:
sprite->set_action("idle");
- set_group(COLGROUP_DISABLED);
+ set_colgroup_active(COLGROUP_DISABLED);
timer.start(IDLE_TIME);
break;
case THROWING:
sprite->set_action("idle");
- set_group(COLGROUP_DISABLED);
+ set_colgroup_active(COLGROUP_DISABLED);
timer.start(THROW_TIME);
throw_timer.start(THROW_INTERVAL);
break;
case POST_THROWING:
sprite->set_action("idle");
- set_group(COLGROUP_DISABLED);
+ set_colgroup_active(COLGROUP_DISABLED);
timer.start(IDLE_TIME);
break;
case PEEKING:
sprite->set_action("peeking", 1);
- set_group(COLGROUP_STATIC);
+ set_colgroup_active(COLGROUP_STATIC);
break;
case DEAD:
sprite->set_action("idle");
- set_group(COLGROUP_DISABLED);
+ set_colgroup_active(COLGROUP_DISABLED);
break;
}
}
IMPLEMENT_FACTORY(Mole, "mole")
-