X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Fskull_tile.cpp;h=48d9ed2209d98042bb3ff9fcc5a861dcc0a6e938;hb=590d47c3c3cf4641d97ee1579af69edbc355e5a8;hp=d73a6d12951179ec9da5064ad6a62b1d29672849;hpb=39c8f41f9d46e3d2b890961814193363f0fa10c5;p=supertux.git diff --git a/src/object/skull_tile.cpp b/src/object/skull_tile.cpp index d73a6d129..48d9ed220 100644 --- a/src/object/skull_tile.cpp +++ b/src/object/skull_tile.cpp @@ -1,59 +1,41 @@ -// $Id: unstable_tile.cpp 2642 2005-06-26 13:38:53Z matzebraun $ -// // 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. -#include +// along with this program. If not, see . -#include "skull_tile.hpp" -#include "lisp/lisp.hpp" -#include "object_factory.hpp" -#include "player.hpp" -#include "sector.hpp" -#include "resources.hpp" -#include "sprite/sprite_manager.hpp" +#include "math/random_generator.hpp" +#include "object/player.hpp" +#include "object/skull_tile.hpp" #include "sprite/sprite.hpp" +#include "supertux/object_factory.hpp" +#include "supertux/sector.hpp" -static const float CRACKTIME = 0.3; -static const float FALLTIME = 0.8; +static const float CRACKTIME = 0.3f; +static const float FALLTIME = 0.8f; -SkullTile::SkullTile(const lisp::Lisp& lisp) - : hit(false), falling(false) +SkullTile::SkullTile(const Reader& lisp) : + MovingSprite(lisp, "images/objects/skull_tile/skull_tile.sprite", LAYER_TILES, COLGROUP_STATIC), + physic(), + timer(), + hit(false), + falling(false) { - lisp.get("x", bbox.p1.x); - lisp.get("y", bbox.p1.y); - bbox.set_size(32, 32); - sprite = sprite_manager->create("images/objects/skull_tile/skull_tile.sprite"); - flags |= FLAG_SOLID; - - set_group(COLGROUP_STATIC); -} - -SkullTile::~SkullTile() -{ - delete sprite; } HitResponse -SkullTile::collision(GameObject& other, const CollisionHit& hitdata) +SkullTile::collision(GameObject& other, const CollisionHit& ) { - if(hitdata.normal.y < 0.8) - return FORCE_MOVE; - Player* player = dynamic_cast (&other); if(player) hit = true; @@ -65,12 +47,12 @@ void SkullTile::draw(DrawingContext& context) { Vector pos = get_pos(); - // shacking + // shaking if(timer.get_timegone() > CRACKTIME) { - pos.x += (rand() % 6) - 3; - } + pos.x += graphicsRandom.rand(-3, 3); + } - sprite->draw(context, pos, LAYER_TILES); + sprite->draw(context, pos, layer); } void @@ -85,8 +67,7 @@ SkullTile::update(float elapsed_time) } else if(hit) { if(timer.check()) { falling = true; - physic.enable_gravity(true); - flags &= ~FLAG_SOLID; + physic.enable_gravity(true); timer.stop(); } else if(!timer.started()) { timer.start(FALLTIME); @@ -97,4 +78,4 @@ SkullTile::update(float elapsed_time) hit = false; } -IMPLEMENT_FACTORY(SkullTile, "skull_tile"); +/* EOF */