X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Fdarttrap.cpp;h=8d78c97dddbb1683c38b7dc8ea6f842c758e4800;hb=788a9153f60fb3d25a52fd184387ebbde7636719;hp=e1f4751dffb55369414db688b50ee93f51e9e80f;hpb=c307442e4bf1352cf1807b171b5ab175ba063b31;p=supertux.git diff --git a/src/badguy/darttrap.cpp b/src/badguy/darttrap.cpp index e1f4751df..8d78c97dd 100644 --- a/src/badguy/darttrap.cpp +++ b/src/badguy/darttrap.cpp @@ -1,7 +1,7 @@ // $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 @@ -22,12 +22,19 @@ #include "darttrap.hpp" #include "dart.hpp" +#include "object_factory.hpp" +#include "audio/sound_manager.hpp" +#include "lisp/writer.hpp" +#include "sector.hpp" +#include "lisp/lisp.hpp" +#include "sprite/sprite.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", LAYER_TILES-1), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE) + : BadGuy(reader, "images/creatures/darttrap/darttrap.sprite", LAYER_TILES-1), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE) { reader.get("initial-delay", initial_delay); reader.get("fire-delay", fire_delay); @@ -35,28 +42,32 @@ DartTrap::DartTrap(const lisp::Lisp& reader) 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) { 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.write("x", start_position.x); + writer.write("y", start_position.y); + writer.write("initial-delay", initial_delay); + writer.write("fire-delay", fire_delay); + writer.write("ammo", ammo); writer.end_list("darttrap"); } void -DartTrap::activate() +DartTrap::initialize() { - state = IDLE; sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); - set_group(COLGROUP_DISABLED); +} - if (initial_delay == 0) initial_delay = 0.1f; +void +DartTrap::activate() +{ fire_timer.start(initial_delay); }