X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fbadguy%2Fdarttrap.cpp;h=b2e7f55e471b7dd5ea686e2d5b4d5543239f09ad;hb=13c84268f16872f9b442251c4175a3a1a7a7899a;hp=fa76173a6b835eb4745e1cd4daa667d4e5317766;hpb=cb941f239a04ee0588c99bfcdcd6aff62e1fbc98;p=supertux.git diff --git a/src/badguy/darttrap.cpp b/src/badguy/darttrap.cpp index fa76173a6..b2e7f55e4 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 @@ -23,19 +23,21 @@ #include "dart.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) : set_direction(true), initial_direction(LEFT), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE) +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) { - reader.get("x", start_position.x); - reader.get("y", start_position.y); reader.get("initial-delay", initial_delay); reader.get("fire-delay", fire_delay); reader.get("ammo", ammo); - bbox.set_size(11, 37); - sprite = sprite_manager->create("images/creatures/darttrap/darttrap.sprite"); 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 @@ -51,17 +53,18 @@ DartTrap::write(lisp::Writer& writer) } void -DartTrap::activate() +DartTrap::initialize() { - if (set_direction) dir = initial_direction; - state = IDLE; sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); +} - if (initial_delay == 0) initial_delay = 0.1; +void +DartTrap::activate() +{ fire_timer.start(initial_delay); } -HitResponse +HitResponse DartTrap::collision_player(Player& , const CollisionHit& ) { return ABORT_MOVE; @@ -99,11 +102,10 @@ DartTrap::fire() float py = get_pos().y; py += MUZZLE_Y; - sound_manager->play("sounds/squish.wav", get_pos()); - Sector::current()->add_object(new Dart(px, py, dir, this)); + sound_manager->play("sounds/dartfire.wav", get_pos()); + Sector::current()->add_object(new Dart(Vector(px, py), dir, this)); state = IDLE; sprite->set_action(dir == LEFT ? "idle-left" : "idle-right"); } IMPLEMENT_FACTORY(DartTrap, "darttrap") -