X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fyeti_stalactite.cpp;h=4e869d93146896d13faf0af0ee05414044c07fe7;hb=3497f1b5834627a6e1aec925410d7dfed470582c;hp=d3f2b9000f2ea45e244614332405644743369c0e;hpb=c0093d25093395cb62fc2526ab42be65a9f015b8;p=supertux.git diff --git a/src/badguy/yeti_stalactite.cpp b/src/badguy/yeti_stalactite.cpp index d3f2b9000..4e869d931 100644 --- a/src/badguy/yeti_stalactite.cpp +++ b/src/badguy/yeti_stalactite.cpp @@ -1,28 +1,27 @@ -// $Id$ -// // SuperTux -// Copyright (C) 2005 Matthias Braun +// 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 2 -// of the License, or (at your option) any later version. +// 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, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA. +// along with this program. If not, see . + +#include "badguy/yeti_stalactite.hpp" -#include "yeti_stalactite.h" +#include "sprite/sprite.hpp" +#include "supertux/object_factory.hpp" -static const float SHAKE_TIME = .8; +static const float YT_SHAKE_TIME = .8f; -YetiStalactite::YetiStalactite(const lisp::Lisp& lisp) +YetiStalactite::YetiStalactite(const Reader& lisp) : Stalactite(lisp) { } @@ -34,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 @@ -45,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 */