| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <container/seadPtrArray.h> |
| 4 | |
| 5 | #include "Library/Area/IUseAreaObj.h" |
| 6 | #include "Library/Audio/IAudioSystemPause.h" |
| 7 | #include "Library/HostIO/HioNode.h" |
| 8 | |
| 9 | namespace aal { |
| 10 | class AudioFrameProcessMgr; |
| 11 | class IAudioFrameProcess; |
| 12 | } // namespace aal |
| 13 | |
| 14 | namespace al { |
| 15 | class SeDirector; |
| 16 | class BgmDirector; |
| 17 | class AudioMic; |
| 18 | class AudioEventController; |
| 19 | class AudioRequest; |
| 20 | class AudioRequestKeeperSyncedBgm; |
| 21 | struct AudioSystemInfo; |
| 22 | class AreaObjDirector; |
| 23 | class AudioDuckingDirector; |
| 24 | class AudioEffectController; |
| 25 | struct AudioDirectorInitInfo; |
| 26 | class PlayerHolder; |
| 27 | |
| 28 | class AudioDirector : public IUseAreaObj, public HioNode, public IAudioSystemPause { |
| 29 | public: |
| 30 | struct PauseSystemEntry { |
| 31 | const char* name; |
| 32 | bool _8; |
| 33 | bool _9; |
| 34 | }; |
| 35 | |
| 36 | AudioDirector(); |
| 37 | void init(const AudioDirectorInitInfo& info); |
| 38 | void init3D(const AudioDirectorInitInfo& info); |
| 39 | void initAfterInitPlacement(); |
| 40 | void initMic(AudioMic* mic); |
| 41 | void setDependentModule(AudioDirector* director); |
| 42 | void updatePre(); |
| 43 | void updatePost(); |
| 44 | void startFinalizeUnsafeModuleInParallelThread(); |
| 45 | void updateFinalizeUnsafeModuleInParallelThread(); |
| 46 | bool isFinalizedUnsafeModuleInParallelThread(); |
| 47 | void finalize(); |
| 48 | bool isSystemPauseNow() const; |
| 49 | void setPlayerHolder(const PlayerHolder* player_holder); |
| 50 | void addAudiioFrameProccess(aal::IAudioFrameProcess* process); |
| 51 | void removeAudiioFrameProccess(aal::IAudioFrameProcess* process); |
| 52 | void* getAudioMaximizer() const; // unknown return type |
| 53 | bool isPpausedSystem(const char* name) const; |
| 54 | |
| 55 | void pauseSystem(bool, const char*, bool, f32, bool, bool, bool) override; |
| 56 | AreaObjDirector* getAreaObjDirector() const override; |
| 57 | |
| 58 | void setIsSafeFinalizingInParallelThread(bool isSafe) { |
| 59 | mIsSafeFinalizingInParallelThread = isSafe; |
| 60 | } |
| 61 | |
| 62 | private: |
| 63 | SeDirector* mSeDirector; |
| 64 | BgmDirector* mBgmDirector; |
| 65 | AudioMic* mAudioMic; |
| 66 | AudioEventController* mAudioEventController; |
| 67 | AudioRequestKeeperSyncedBgm* mAudioRequestKeeperSyncedBgm; |
| 68 | const AudioSystemInfo* mAudioSystemInfo; |
| 69 | AreaObjDirector* mAreaObjDirector; |
| 70 | AudioDuckingDirector* mAudioDuckingDirector; |
| 71 | sead::PtrArray<PauseSystemEntry>* mPauseSystemEntries; |
| 72 | bool mIsSafeFinalizingInParallelThread; |
| 73 | aal::AudioFrameProcessMgr* mAudioFrameProcessMgr; |
| 74 | AudioEffectController* mAudioEffectController; |
| 75 | }; |
| 76 | |
| 77 | } // namespace al |
| 78 |