From: Ingo Ruhnke Date: Thu, 22 May 2008 20:20:43 +0000 (+0000) Subject: Rolled back bomb to old behaviour, some bomb gfx tuning X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=013a5ca196545a094f27c1b708facd0084d58d55;p=supertux.git Rolled back bomb to old behaviour, some bomb gfx tuning SVN-Revision: 5508 --- diff --git a/data/images/creatures/mr_bomb/bomb.sprite b/data/images/creatures/mr_bomb/bomb.sprite index de0076a42..dbb83b807 100644 --- a/data/images/creatures/mr_bomb/bomb.sprite +++ b/data/images/creatures/mr_bomb/bomb.sprite @@ -2,21 +2,43 @@ (action (name "ticking-left") - (fps 15.0) - (hitbox 4 6 32 34) - (images "exploding-left-0.png" - "exploding-left-1.png" - "exploding-left-2.png" - "exploding-left-3.png" - "exploding-left-2.png" - "exploding-left-1.png" - )) - + (fps 5.0) + (hitbox 5 8 32 32) + (images + "exploding-left-0.png" + "exploding-left-1.png" + "exploding-left-2.png" + "exploding-left-3.png" + "exploding-left-4.png" + "exploding-left-3.png" + "exploding-left-2.png" + "exploding-left-1.png" + "exploding-left-0.png" + "exploding-left-1.png" + "exploding-left-2.png" + "exploding-left-3.png" + "exploding-left-4.png" + "exploding-left-3.png" + "exploding-left-2.png" + "exploding-left-1.png" + "exploding-left-0.png" + "exploding-left-2.png" + "exploding-left-4.png" + "exploding-left-2.png" + "exploding-left-0.png" + "exploding-left-2.png" + "exploding-left-4.png" + "exploding-left-2.png" + "exploding-left-0.png" + "exploding-left-4.png" + "exploding-left-0.png" + "exploding-left-4.png" + )) (action (name "ticking-right") - (fps 15.0) - (hitbox 10 8 31.8 31.8) + (fps 5.0) + (hitbox 5 8 32 32) (mirror-action "ticking-left")) -) + ) diff --git a/data/images/creatures/mr_bomb/exploding-left-1.png b/data/images/creatures/mr_bomb/exploding-left-1.png index eb459cf5a..069050f1d 100644 Binary files a/data/images/creatures/mr_bomb/exploding-left-1.png and b/data/images/creatures/mr_bomb/exploding-left-1.png differ diff --git a/data/images/creatures/mr_bomb/exploding-left-2.png b/data/images/creatures/mr_bomb/exploding-left-2.png index 22d127f93..b3181b678 100644 Binary files a/data/images/creatures/mr_bomb/exploding-left-2.png and b/data/images/creatures/mr_bomb/exploding-left-2.png differ diff --git a/data/images/creatures/mr_bomb/exploding-left-3.png b/data/images/creatures/mr_bomb/exploding-left-3.png index f02a9b1dc..e5ee6223f 100644 Binary files a/data/images/creatures/mr_bomb/exploding-left-3.png and b/data/images/creatures/mr_bomb/exploding-left-3.png differ diff --git a/data/images/creatures/mr_bomb/exploding-left-4.png b/data/images/creatures/mr_bomb/exploding-left-4.png new file mode 100644 index 000000000..09b086f2d Binary files /dev/null and b/data/images/creatures/mr_bomb/exploding-left-4.png differ diff --git a/data/images/creatures/mr_bomb/mr_bomb.sprite b/data/images/creatures/mr_bomb/mr_bomb.sprite index e27a872cd..85ff24239 100644 --- a/data/images/creatures/mr_bomb/mr_bomb.sprite +++ b/data/images/creatures/mr_bomb/mr_bomb.sprite @@ -2,7 +2,7 @@ (action (name "left") (fps 10.0) - (hitbox 4 6 32 34) + (hitbox 5 8 32 32) (images "left.png" "center.png" "right.png" @@ -11,7 +11,7 @@ (action (name "right") (fps 10.0) - (hitbox 4 6 32 34) + (hitbox 5 8 32 32) (mirror-action "left")) (action @@ -27,16 +27,42 @@ (action (name "ticking-left") (fps 10.0) - (hitbox 3 12 31.8 31.8) - (images "ticking-0.png" - "ticking-1.png" - "ticking-2.png" - "ticking-3.png")) + (hitbox 5 8 32 32) + (images "exploding-left-0.png" + "exploding-left-1.png" + "exploding-left-2.png" + "exploding-left-3.png" + "exploding-left-4.png" + "exploding-left-3.png" + "exploding-left-2.png" + "exploding-left-1.png" + "exploding-left-0.png" + "exploding-left-1.png" + "exploding-left-2.png" + "exploding-left-3.png" + "exploding-left-4.png" + "exploding-left-3.png" + "exploding-left-2.png" + "exploding-left-1.png" + "exploding-left-0.png" + "exploding-left-2.png" + "exploding-left-4.png" + "exploding-left-2.png" + "exploding-left-0.png" + "exploding-left-2.png" + "exploding-left-4.png" + "exploding-left-2.png" + "exploding-left-0.png" + "exploding-left-4.png" + "exploding-left-0.png" + "exploding-left-4.png" + )) + (action (name "ticking-right") (fps 10.0) - (hitbox 7 12 31.8 31.8) + (hitbox 5 8 32 32) (mirror-action "ticking-left")) ) diff --git a/src/badguy/mrbomb.cpp b/src/badguy/mrbomb.cpp index 558b27097..cc74c01a4 100644 --- a/src/badguy/mrbomb.cpp +++ b/src/badguy/mrbomb.cpp @@ -20,14 +20,10 @@ #include #include "mrbomb.hpp" +#include "bomb.hpp" #include "object/explosion.hpp" #include "sprite/sprite_manager.hpp" #include "audio/sound_manager.hpp" -#include "level.hpp" - -namespace { - const float TICKING_TIME = 1.0f; /**< delay until ticking MrBomb explodes */ -} MrBomb::MrBomb(const lisp::Lisp& reader) : WalkingBadguy(reader, "images/creatures/mr_bomb/mr_bomb.sprite", "left", "right") @@ -36,16 +32,9 @@ MrBomb::MrBomb(const lisp::Lisp& reader) max_drop_height = 16; grabbed = false; + //Prevent stutter when Tux jumps on Mr Bomb sound_manager->preload("sounds/explosion.wav"); - ticking.reset(sound_manager->create_sound_source("sounds/fizz.wav")); - ticking->set_position(get_pos()); - ticking->set_looping(true); - ticking->set_gain(2.0); - ticking->set_reference_distance(32); - - state = STATE_IDLE; - //Check if we need another sprite if( !reader.get( "sprite", sprite_name ) ){ return; @@ -66,14 +55,6 @@ MrBomb::MrBomb(const Vector& pos, Direction d) max_drop_height = 16; grabbed = false; sound_manager->preload("sounds/explosion.wav"); - - state = STATE_IDLE; - - ticking.reset(sound_manager->create_sound_source("sounds/fizz.wav")); - ticking->set_position(get_pos()); - ticking->set_looping(true); - ticking->set_gain(2.0); - ticking->set_reference_distance(32); } void @@ -103,58 +84,21 @@ MrBomb::collision_player(Player& player, const CollisionHit& hit) bool MrBomb::collision_squished(GameObject& object) { - if(frozen) unfreeze(); - Player* player = dynamic_cast(&object); - if (player) { - player->bounce(*this); - } - if (state == STATE_IDLE) { - if (player && countMe) Sector::current()->get_level()->stats.badguys++; - state = STATE_TICKING; - - // TODO: currently we need to re-create ticking sound object every time, in case we had to stop it - ticking.reset(sound_manager->create_sound_source("sounds/fizz.wav")); - ticking->set_position(get_pos()); - ticking->set_looping(true); - ticking->set_gain(2.0); - ticking->set_reference_distance(32); - - ticking->play(); - ticking_timer.start(TICKING_TIME); - walk_left_action = "ticking-left"; - walk_right_action = "ticking-right"; - sprite->set_action(dir == LEFT ? walk_left_action : walk_right_action); - } + remove_me(); + Sector::current()->add_object(new Bomb(get_pos(), dir, sprite_name )); + kill_squished(object); return true; } void MrBomb::active_update(float elapsed_time) { - if (state == STATE_TICKING) { - ticking->set_position(get_pos()); - if(ticking_timer.check()) { - explode(); - } - } if(grabbed) return; WalkingBadguy::active_update(elapsed_time); } void -MrBomb::explode() -{ - ticking->stop(); - - remove_me(); - Explosion* explosion = new Explosion(get_bbox().get_middle()); - Sector::current()->add_object(explosion); - - run_dead_script(); -} - -void MrBomb::kill_fall() { remove_me(); @@ -188,19 +132,6 @@ MrBomb::freeze() { WalkingBadguy::freeze(); sprite->set_action(dir == LEFT ? "iced-left" : "iced-right"); - if (state == STATE_TICKING) { - ticking_timer.stop(); - ticking->stop(); - walk_left_action = "left"; - walk_right_action = "right"; - state = STATE_IDLE; - } -} - -void -MrBomb::unfreeze() -{ - WalkingBadguy::unfreeze(); } bool diff --git a/src/badguy/mrbomb.hpp b/src/badguy/mrbomb.hpp index 4f28ce602..14f326dec 100644 --- a/src/badguy/mrbomb.hpp +++ b/src/badguy/mrbomb.hpp @@ -41,21 +41,11 @@ public: bool is_portable() const; void freeze(); - void unfreeze(); bool is_freezable() const; - void explode(); + virtual MrBomb* clone() const { return new MrBomb(*this); } protected: - enum State { - STATE_IDLE, - STATE_TICKING - }; - - State state; - std::auto_ptr ticking; - Timer ticking_timer; - bool collision_squished(GameObject& object); private: