X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Fmole.cpp;h=7f1bb7eb250e8a4dc342b66a22466cc69e9fe37b;hb=13c84268f16872f9b442251c4175a3a1a7a7899a;hp=765319d8315e4f5eb129ad66087ed2c77d9345ed;hpb=aa4d915cb7b05dec5722c4ad88141d4c4f9599ea;p=supertux.git diff --git a/src/badguy/mole.cpp b/src/badguy/mole.cpp index 765319d83..7f1bb7eb2 100644 --- a/src/badguy/mole.cpp +++ b/src/badguy/mole.cpp @@ -27,21 +27,27 @@ #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 @@ -74,7 +80,7 @@ Mole::collision_badguy(BadGuy& , const CollisionHit& ) } bool -Mole::collision_squished(Player& ) +Mole::collision_squished(GameObject& ) { set_state(DEAD); sound_manager->play("sounds/squish.wav", get_pos()); @@ -104,26 +110,26 @@ Mole::active_update(float elapsed_time) 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: @@ -132,33 +138,33 @@ Mole::active_update(float elapsed_time) } -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; } @@ -166,4 +172,3 @@ Mole::set_state(MoleState new_state) } IMPLEMENT_FACTORY(Mole, "mole") -