X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fdarttrap.cpp;h=1fb822edddb59cac0ed30515cc0ea895db8bcfd4;hb=db14b806439363d7f4809d0d5e4187e356295841;hp=be6cc1d0174a40a50fd6540898bf24f2c8ec9730;hpb=4c676c4c0c70f0efa7f1536b92de01976b1977a0;p=supertux.git diff --git a/src/badguy/darttrap.cpp b/src/badguy/darttrap.cpp index be6cc1d01..1fb822edd 100644 --- a/src/badguy/darttrap.cpp +++ b/src/badguy/darttrap.cpp @@ -1,12 +1,10 @@ -// $Id$ -// // DartTrap - Shoots a Dart at regular intervals // 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,49 +12,49 @@ // 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 +#include "badguy/dart.hpp" +#include "badguy/darttrap.hpp" -#include "darttrap.hpp" -#include "dart.hpp" +#include "audio/sound_manager.hpp" +#include "sprite/sprite.hpp" +#include "supertux/object_factory.hpp" +#include "supertux/sector.hpp" +#include "util/reader.hpp" namespace { - const float MUZZLE_Y = 25; /**< [px] muzzle y-offset from top */ +const float MUZZLE_Y = 25; /**< [px] muzzle y-offset from top */ } -DartTrap::DartTrap(const lisp::Lisp& reader) - : BadGuy(reader, "images/creatures/darttrap/darttrap.sprite", LAYER_TILES-1), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE) +DartTrap::DartTrap(const Reader& reader) : + BadGuy(reader, "images/creatures/darttrap/darttrap.sprite", LAYER_TILES-1), + initial_delay(0), + fire_delay(2), + ammo(-1), + state(IDLE), + fire_timer() { reader.get("initial-delay", initial_delay); reader.get("fire-delay", fire_delay); reader.get("ammo", ammo); countMe = false; - sound_manager->preload("sounds/dartfire.wav"); - if (start_dir == AUTO) log_warning << "Setting a DartTrap's direction to AUTO is no good idea" << std::endl; + SoundManager::current()->preload("sounds/dartfire.wav"); + if (start_dir == AUTO) { log_warning << "Setting a DartTrap's direction to AUTO is no good idea" << std::endl; } + state = IDLE; + set_colgroup_active(COLGROUP_DISABLED); + if (initial_delay == 0) initial_delay = 0.1f; } void -DartTrap::write(lisp::Writer& writer) +DartTrap::initialize() { - writer.start_list("darttrap"); - writer.write_float("x", start_position.x); - writer.write_float("y", start_position.y); - writer.write_float("initial-delay", initial_delay); - writer.write_float("fire-delay", fire_delay); - writer.write_int("ammo", ammo); - writer.end_list("darttrap"); + sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); } void DartTrap::activate() { - state = IDLE; - sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); - set_group(COLGROUP_DISABLED); - - if (initial_delay == 0) initial_delay = 0.1f; fire_timer.start(initial_delay); } @@ -98,10 +96,10 @@ DartTrap::fire() float py = get_pos().y; py += MUZZLE_Y; - sound_manager->play("sounds/dartfire.wav", get_pos()); - Sector::current()->add_object(new Dart(Vector(px, py), dir, this)); + SoundManager::current()->play("sounds/dartfire.wav", get_pos()); + Sector::current()->add_object(std::make_shared(Vector(px, py), dir, this)); state = IDLE; sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); } -IMPLEMENT_FACTORY(DartTrap, "darttrap") +/* EOF */