X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Fdarttrap.cpp;h=3e66642ed9e61e3088ad7209b69e3f5c59e776e8;hb=12a28b64dcce9c7ff706451b4f3aecd201cc8a5f;hp=0cd62497ad4f805a3c7007c2804a3a4728b588cb;hpb=7c2f8e23f9accd00bd9ee2319da8ab8aa341c7cf;p=supertux.git diff --git a/src/badguy/darttrap.cpp b/src/badguy/darttrap.cpp index 0cd62497a..3e66642ed 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 +// 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,51 +12,52 @@ // 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" namespace { - const float MUZZLE_Y = 28; /**< [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"), 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; + 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"); - - if (initial_delay == 0) initial_delay = 0.1; fire_timer.start(initial_delay); } -HitResponse +HitResponse DartTrap::collision_player(Player& , const CollisionHit& ) { return ABORT_MOVE; @@ -102,5 +101,6 @@ DartTrap::fire() sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); } -IMPLEMENT_FACTORY(DartTrap, "darttrap") +IMPLEMENT_FACTORY(DartTrap, "darttrap"); +/* EOF */