From 13cda6b24b2d8c7ea53d0fbe44dd8fc6aa8cbbec Mon Sep 17 00:00:00 2001 From: Wolfgang Becker Date: Sun, 20 Jan 2008 12:34:22 +0000 Subject: [PATCH] AUTO-canon always shoots towards tux. SVN-Revision: 5285 --- data/images/creatures/dispenser/dispenser.sprite | 12 +++++++++ data/images/creatures/dispenser/swivel-left.png | Bin 0 -> 5655 bytes data/images/creatures/dispenser/swivel-right.png | Bin 0 -> 5678 bytes src/badguy/dispenser.cpp | 31 +++++++++++++++++++++-- src/badguy/dispenser.hpp | 2 ++ 5 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 data/images/creatures/dispenser/swivel-left.png create mode 100644 data/images/creatures/dispenser/swivel-right.png diff --git a/data/images/creatures/dispenser/dispenser.sprite b/data/images/creatures/dispenser/dispenser.sprite index 7636dfc8c..cc2f3be84 100644 --- a/data/images/creatures/dispenser/dispenser.sprite +++ b/data/images/creatures/dispenser/dispenser.sprite @@ -23,5 +23,17 @@ (name "broken-right") (hitbox 4 12 55 40) (mirror-action "broken-left")) + + (action + (name "swivel-left") + (hitbox 5 12 55 40) + (images "swivel-right.png" + "swivel-left.png" + "working.png")) + + (action + (name "swivel-right") + (hitbox 4 12 55 40) + (mirror-action "swivel-left")) ) diff --git a/data/images/creatures/dispenser/swivel-left.png b/data/images/creatures/dispenser/swivel-left.png new file mode 100644 index 0000000000000000000000000000000000000000..55dccfadbc06e7d9456f06c343a45596ebe690cc GIT binary patch literal 5655 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 zzUmngr~qTset_action(dir == LEFT ? "working-left" : "working-right"); + if( start_dir == AUTO ){ + autotarget = true; + } } else {sprite->set_action("dropper");} bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height()); @@ -62,6 +66,9 @@ Dispenser::activate() { if(frozen) return; + if (badguy == "mrrocket") { + sprite->set_action(dir == LEFT ? "working-left" : "working-right"); + } dispense_timer.start(cycle, true); launch_badguy(); } @@ -89,7 +96,27 @@ void Dispenser::active_update(float ) { if (dispense_timer.check()) { - launch_badguy(); + // auto always shoots in Tux's direction + if( autotarget ){ + if( sprite->animation_done()) { + sprite->set_action(dir == LEFT ? "working-left" : "working-right"); + swivel = false; + } + + Player* player = this->get_nearest_player(); + if( player && !swivel ){ + Direction targetdir = (player->get_pos().x > get_pos().x) ? RIGHT : LEFT; + if( dir != targetdir ){ // no target: swivel cannon + swivel = true; + dir = targetdir; + sprite->set_action(dir == LEFT ? "swivel-left" : "swivel-right", 1); + } else { // tux in sight: shoot + launch_badguy(); + } + } + } else { + launch_badguy(); + } } } diff --git a/src/badguy/dispenser.hpp b/src/badguy/dispenser.hpp index e553d545d..95b5cad2b 100644 --- a/src/badguy/dispenser.hpp +++ b/src/badguy/dispenser.hpp @@ -45,6 +45,8 @@ protected: float cycle; std::string badguy; Timer dispense_timer; + bool autotarget; + bool swivel; }; #endif -- 2.11.0