X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Froot.cpp;h=e1fd55f3e123cf720510cdd1e5fd7dafaceb0286;hb=08bddcf4d4fbe2edf9a0078dc6f3c3275ef05302;hp=6fa949e202039bd907bab5c65da82476e987a78d;hpb=9598330d85ae6dae2ced6f7542b642288f094728;p=supertux.git diff --git a/src/badguy/root.cpp b/src/badguy/root.cpp index 6fa949e20..e1fd55f3e 100644 --- a/src/badguy/root.cpp +++ b/src/badguy/root.cpp @@ -1,12 +1,10 @@ -// $Id$ -// // SuperTux - "Will-O-Wisp" Badguy // Copyright (C) 2006 Christoph Sommer // -// 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 @@ -14,25 +12,28 @@ // 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. -#include +// along with this program. If not, see . -#include "root.hpp" +#include "badguy/root.hpp" +#include "sprite/sprite.hpp" #include "sprite/sprite_manager.hpp" static const float SPEED_GROW = 256; static const float SPEED_SHRINK = 128; +static const float HATCH_TIME = 0.75; -Root::Root(const Vector& pos) - : BadGuy(pos, "images/creatures/ghosttree/root.sprite", LAYER_TILES-1), - mystate(STATE_APPEARING), offset_y(0) +Root::Root(const Vector& pos) : + BadGuy(pos, "images/creatures/ghosttree/root.sprite", LAYER_TILES-1), + mystate(STATE_APPEARING), + base_sprite(), + offset_y(0), + hatch_timer() { - base_sprite.reset(sprite_manager->create("images/creatures/ghosttree/root-base.sprite")); + base_sprite = sprite_manager->create("images/creatures/ghosttree/root-base.sprite"); base_sprite->set_action("appearing", 1); base_sprite->set_animation_loops(1); // TODO: necessary because set_action ignores loops for default action physic.enable_gravity(false); + set_colgroup_active(COLGROUP_TOUCHABLE); } Root::~Root() @@ -40,22 +41,23 @@ Root::~Root() } void -Root::activate() -{ - set_group(COLGROUP_TOUCHABLE); -} - -void Root::deactivate() { - remove_me(); + remove_me(); + //no dead script } void Root::active_update(float elapsed_time) { if (mystate == STATE_APPEARING) { - if (base_sprite->animation_done()) mystate = STATE_GROWING; + if (base_sprite->animation_done()) { + hatch_timer.start(HATCH_TIME); + mystate = STATE_HATCHING; + } + } + if (mystate == STATE_HATCHING) { + if (!hatch_timer.started()) mystate = STATE_GROWING; } else if (mystate == STATE_GROWING) { offset_y -= elapsed_time * SPEED_GROW; @@ -88,3 +90,4 @@ Root::draw(DrawingContext& context) if ((mystate != STATE_APPEARING) && (mystate != STATE_VANISHING)) BadGuy::draw(context); } +/* EOF */