1#pragma once
2
3#include <basis/seadTypes.h>
4
5#include "Library/Execute/IUseExecutor.h"
6#include "Library/HostIO/HioNode.h"
7
8namespace al {
9class StageSwitchListener;
10class PlacementId;
11class StageSwitchAccesser;
12class ExecuteDirector;
13class StageSwitchWatcherHolder;
14struct StageSwitchInfo;
15
16class StageSwitchDirector : public HioNode, public IUseExecutor {
17public:
18 StageSwitchDirector(ExecuteDirector* executeDirector);
19
20 s32 useSwitch(const StageSwitchAccesser* accesser);
21 s32 findSwitchNoFromObjId(const PlacementId* placementId);
22 void onSwitch(const StageSwitchAccesser* accesser);
23 void offSwitch(const StageSwitchAccesser* accesser);
24 bool isOnSwitch(const StageSwitchAccesser* accesser);
25 void addListener(StageSwitchListener* listener, StageSwitchAccesser* accesser);
26 void execute() override;
27
28private:
29 StageSwitchInfo* mSwitchInfos = nullptr;
30 s32 mSwitchInfoCapacity = 128;
31 s32 mSwitchInfoCount = 0;
32 StageSwitchWatcherHolder* mSwitchWatcherHolder = nullptr;
33};
34
35static_assert(sizeof(StageSwitchDirector) == 0x20);
36
37} // namespace al
38