#include "EngineAudioSystem.h" #include "../Engine_Audio/AudioSoundEffect.h" // Constructor EngineAudioSystem::EngineAudioSystem(Scene& inputScene, ResourceManagement& inputResourceManager) : EngineMessageSystem(inputScene), resourceManagement(&inputResourceManager) { audio.reserve(MAX_NO_OF_SOUNDS); } // Destructor to delete old sounds EngineAudioSystem::~EngineAudioSystem() { std::vector>::iterator deleteIterator = audio.begin(); while (deleteIterator != audio.end()) { if ((*deleteIterator).first->getStatus() == sf::SoundSource::Stopped) { delete (*deleteIterator).first; deleteIterator = audio.erase(deleteIterator); } } } // Play Audio - Read the file and Step through the Audio void EngineAudioSystem::play(const sf::Time& elaspedTime) { engineAudioSystemProfiler.startTime(); // Event que auto Enginemessages = scene->getEntityManagement().getMessageSystemEventType(MessageSystemEventType::AUDIO_TYPE); for (auto messages : *Enginemessages) { auto sound = static_cast(messages.first); if (sound->currentlyPlaying) { auto newSound = new sf::Sound(); newSound->setBuffer(*resourceManagement->getSound(sound->getSoundID())); newSound->play(); sound->currentlyPlaying = false; audio.push_back(std::make_pair(newSound, sound)); } } engineAudioSystemProfiler.finishProfiler(); } void EngineAudioSystem::clear() { std::vector>::iterator deleteIterator = audio.begin(); while (deleteIterator != audio.end()) { if ((*deleteIterator).first->getStatus() == sf::SoundSource::Stopped) { delete (*deleteIterator).first; deleteIterator = audio.erase(deleteIterator); } } }