X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fyeti_stalactite.cpp;h=4e869d93146896d13faf0af0ee05414044c07fe7;hb=d794aac09d4a3b3f5f93985cd74381bb4de4ce84;hp=86e1f91880f7a08418d44ecb775fa519ac828027;hpb=1d613f782e21f55f915b6e5fa808e7435896461a;p=supertux.git diff --git a/src/badguy/yeti_stalactite.cpp b/src/badguy/yeti_stalactite.cpp index 86e1f9188..4e869d931 100644 --- a/src/badguy/yeti_stalactite.cpp +++ b/src/badguy/yeti_stalactite.cpp @@ -1,8 +1,27 @@ -#include "yeti_stalactite.h" +// SuperTux +// Copyright (C) 2006 Matthias Braun +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . -static const float SHAKE_TIME = .8; +#include "badguy/yeti_stalactite.hpp" -YetiStalactite::YetiStalactite(const lisp::Lisp& lisp) +#include "sprite/sprite.hpp" +#include "supertux/object_factory.hpp" + +static const float YT_SHAKE_TIME = .8f; + +YetiStalactite::YetiStalactite(const Reader& lisp) : Stalactite(lisp) { } @@ -14,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 @@ -25,12 +47,29 @@ YetiStalactite::is_hanging() } void -YetiStalactite::active_action(float elapsed_time) +YetiStalactite::active_update(float elapsed_time) { if(state == STALACTITE_HANGING) return; - Stalactite::active_action(elapsed_time); + Stalactite::active_update(elapsed_time); +} + +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); } -IMPLEMENT_FACTORY(YetiStalactite, "yeti_stalactite") +/* EOF */