OdysseyDecomp/lib/al/Library/Demo/DemoSyncedEventKeeper.cpp

74 lines
2.3 KiB
C++

#include "Library/Demo/DemoSyncedEventKeeper.h"
#include "Library/Audio/AudioDirector.h"
#include "Library/Audio/AudioEventController.h"
#include "Library/Demo/DemoSyncedBgmCtrl.h"
#include "Library/Demo/DemoSyncedSeCtrl.h"
#include "Library/Se/SeKeeper.h"
namespace al {
DemoSyncedEventKeeper::DemoSyncedEventKeeper(AudioDirector* audioDirector)
: mAudioDirector(audioDirector) {
mDemoSyncedBgmCtrl = DemoSyncedBgmCtrl::tryCreate(mAudioDirector);
mDemoSyncedSeCtrl = DemoSyncedSeCtrl::tryCreate(mAudioDirector);
}
void DemoSyncedEventKeeper::updateOnlyWhenDemoRun(s32 param) {
if (mDemoSyncedBgmCtrl)
mDemoSyncedBgmCtrl->update(param);
if (mDemoSyncedSeCtrl)
mDemoSyncedSeCtrl->update(param);
}
void DemoSyncedEventKeeper::finalize() {
if (mDemoSyncedBgmCtrl)
mDemoSyncedBgmCtrl->finalize();
if (mDemoSyncedSeCtrl)
mDemoSyncedSeCtrl->finalize();
mDemoName = nullptr;
}
void DemoSyncedEventKeeper::startDemo(const char* demoName) {
endDemo(false, false);
alAudioEventControllerFunction::deactivateAudioEventCtrl(mAudioDirector);
mDemoName = demoName;
if (mDemoSyncedBgmCtrl)
mDemoSyncedBgmCtrl->startDemo(demoName);
if (mDemoSyncedSeCtrl)
mDemoSyncedSeCtrl->startDemo(mDemoName);
}
// TODO: parameter names
void DemoSyncedEventKeeper::endDemo(bool param_1, bool param_2) {
if (!mDemoName)
return;
if (mDemoSyncedBgmCtrl)
mDemoSyncedBgmCtrl->endDemo(mDemoName, param_2);
if (mDemoSyncedSeCtrl)
mDemoSyncedSeCtrl->endDemo(mDemoName, param_2);
if (!param_1)
alAudioEventControllerFunction::activateAudioEventCtrl(mAudioDirector);
mDemoName = nullptr;
}
} // namespace al
void alDemoSyncedEventFunction::tryCreateAndSetSeKeeper(al::DemoSyncedEventKeeper* keeper,
al::AudioDirector* audioDirector,
const char* seName) {
if (!seName)
return;
al::SeKeeper* seKeeper =
al::SeKeeper::create(audioDirector->getAudioSystemInfo(), audioDirector->getSeDirector(),
seName, nullptr, nullptr, nullptr, nullptr);
if (al::DemoSyncedSeCtrl* seCtrl = keeper->getDemoSyncedSeCtrl())
seCtrl->setSeKeeper(seKeeper);
}