mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-05-11 09:48:29 +00:00
74 lines
2.3 KiB
C++
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);
|
|
}
|