#include "supertux/object_factory.hpp"
#include "supertux/sector.hpp"
-static const float WALKSPEED = 80;
-static const float MAXDROPHEIGHT = 20;
-
LiveFire::LiveFire(const Reader& reader) :
WalkingBadguy(reader, "images/creatures/livefire/livefire.sprite", "left", "right"),
- lightsprite(sprite_manager->create("images/objects/lightmap_light/lightmap_light-medium.sprite")),
- state(STATE_WALKING)
+ lightsprite(SpriteManager::current()->create("images/objects/lightmap_light/lightmap_light-medium.sprite")),
+ death_sound("sounds/fall.wav"),
+ state(STATE_WALKING)
{
- walk_speed = WALKSPEED;
- max_drop_height = MAXDROPHEIGHT;
+ walk_speed = 80;
+ max_drop_height = 20;
lightsprite->set_blend(Blend(GL_SRC_ALPHA, GL_ONE));
lightsprite->set_color(Color(1.0f, 0.9f, 0.8f));
}
state = STATE_WAKING;
}
}
-
- BadGuy::active_update(elapsed_time);
}
-
- if(state == STATE_WAKING) {
+ else if(state == STATE_WAKING) {
if(sprite->animation_done()) {
// start walking
state = STATE_WALKING;
WalkingBadguy::initialize();
}
-
- BadGuy::active_update(elapsed_time);
}
+
+ BadGuy::active_update(elapsed_time);
}
void
LiveFire::freeze()
{
// attempting to freeze a flame causes it to go out
+ death_sound = "sounds/sizzle.ogg";
kill_fall();
}
void
LiveFire::kill_fall()
{
- //TODO: get unique sound for ice-fire encounters
- sound_manager->play("sounds/fall.wav", get_pos());
+ SoundManager::current()->play(death_sound, get_pos());
// throw a puff of smoke
Vector ppos = bbox.get_middle();
Vector pspeed = Vector(0, -150);
Vector paccel = Vector(0,0);
- Sector::current()->add_object(new SpriteParticle("images/objects/particles/smoke.sprite", "default", ppos, ANCHOR_MIDDLE, pspeed, paccel, LAYER_BACKGROUNDTILES+2));
+ Sector::current()->add_object(std::make_shared<SpriteParticle>("images/objects/particles/smoke.sprite",
+ "default", ppos, ANCHOR_MIDDLE,
+ pspeed, paccel,
+ LAYER_BACKGROUNDTILES+2));
// extinguish the flame
sprite->set_action(dir == LEFT ? "extinguish-left" : "extinguish-right", 1);
physic.set_velocity_y(0);