X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Fyeti_stalactite.cpp;h=4e869d93146896d13faf0af0ee05414044c07fe7;hb=HEAD;hp=6673a272e523af1270d66169aa3bbd705ab3bfa1;hpb=08813a74da6ac1fd045a105e4e8105f1d7f716f0;p=supertux.git diff --git a/src/badguy/yeti_stalactite.cpp b/src/badguy/yeti_stalactite.cpp index 6673a272e..4e869d931 100644 --- a/src/badguy/yeti_stalactite.cpp +++ b/src/badguy/yeti_stalactite.cpp @@ -16,9 +16,10 @@ #include "badguy/yeti_stalactite.hpp" +#include "sprite/sprite.hpp" #include "supertux/object_factory.hpp" -static const float SHAKE_TIME = .8f; +static const float YT_SHAKE_TIME = .8f; YetiStalactite::YetiStalactite(const Reader& lisp) : Stalactite(lisp) @@ -32,8 +33,11 @@ YetiStalactite::~YetiStalactite() void YetiStalactite::start_shaking() { - timer.start(SHAKE_TIME); + timer.start(YT_SHAKE_TIME); state = STALACTITE_SHAKING; + if(((int)get_pos().x / 32) % 2 == 0) { + physic.set_velocity_y(100); + } } bool @@ -51,6 +55,21 @@ YetiStalactite::active_update(float elapsed_time) Stalactite::active_update(elapsed_time); } -IMPLEMENT_FACTORY(YetiStalactite, "yeti_stalactite"); +void +YetiStalactite::update(float elapsed_time) +{ + // Respawn instead of removing once squished + if(get_state() == STATE_SQUISHED && check_state_timer()) { + set_state(STATE_ACTIVE); + state = STALACTITE_HANGING; + // Hopefully we shouldn't come into contact with anything... + sprite->set_action("normal"); + set_pos(start_position); + set_colgroup_active(COLGROUP_TOUCHABLE); + } + + // Call back to badguy to do normal stuff + BadGuy::update(elapsed_time); +} /* EOF */