#include "sound_effects.hpp" #include "sound.hpp" namespace sound { #if 0 class MissileFlySoundEffect : public SoundEffect { MissileFlySoundEffect(const game::Missile *missile) : m_missileId(missile->id) , m_handle(sound::playSound(sound::playFrequency(440, 0.3)) { } ~MissileFlySoundEffect() { delete(m_handle); } bool advance(float dt) { for (const game::StateUpdateEvent *event : updates) { handleUpdateEvent(event); } // TODO: add event if sth. comes into life or dies in a state // cycle.. delete objects that died last cycle in the current cycle // so pointers don't get invalid. bool keep = false; for (const game::Missile *missile : state->missiles) { if (missile->id == m_missileId) { keep = true; break; } } if (!keep) { sound::stopSound(m_handle); sound::deleteSound(m_handle); return false; } return true; } private: SoundHandle *m_handle; size_t m_missileId; }; void SoundEffects::advance(float dt, const std::list &updates) { //StateUpdateEvent::LifeCycle::Create, //StateUpdateEvent::Type::Explosion std::vector rm; for (SoundEffect *effect : m_effects) { bool keep = effect->advance(dt, m_gameState); if (!keep) { rm.push_back(effect); } } for (SoundEffect *effect : rm) { m_effects.remove(rm); delete(rm); } // spawn new sounds //for (const game::Missile *missile : state->missiles) { // for (SoundEffect // if (missile-> //} } #endif }