Add dynamic_cast for playSound

makes it so developers don't need to dynamic_cast any time they want to play sound
This commit is contained in:
Modnark
2022-10-11 21:28:19 -04:00
parent 9df862f72e
commit af5c31d5d0
3 changed files with 11 additions and 6 deletions

View File

@@ -10,7 +10,7 @@ public:
~SoundService(void);
float getMusicVolume();
void playSound(SoundInstance* sound);
void playSound(Instance* sound);
private:
float musicVolume;
};

View File

@@ -525,10 +525,10 @@ void PartInstance::onTouch()
case Enum::Sound::NoSound:
break;
case Enum::Sound::Victory:
sndService->playSound(dynamic_cast<SoundInstance*>(sndService->findFirstChild("Victory")));
sndService->playSound(sndService->findFirstChild("Victory"));
break;
case Enum::Sound::Boing:
sndService->playSound(dynamic_cast<SoundInstance*>(sndService->findFirstChild("Boing")));
sndService->playSound(sndService->findFirstChild("Boing"));
break;
}
}

View File

@@ -71,10 +71,15 @@ SoundService::~SoundService(void)
{
}
void SoundService::playSound(SoundInstance* sound)
void SoundService::playSound(Instance* sound)
{
std::string soundId = sound->getSoundId();
AudioPlayer::playSound(GetFileInPath(soundId));
// Try to dynamic_cast it to SoundInstance
SoundInstance* sndInst = dynamic_cast<SoundInstance*>(sound);
if(sndInst != NULL)
{
std::string soundId = sndInst->getSoundId();
AudioPlayer::playSound(GetFileInPath(soundId));
}
}
float SoundService::getMusicVolume()