| 1 | #pragma once |
|---|---|
| 2 | |
| 3 | #include <container/seadPtrArray.h> |
| 4 | |
| 5 | namespace al { |
| 6 | struct ExecuteOrder; |
| 7 | struct ExecuteSystemInitInfo; |
| 8 | class ExecutorListActorModelDrawBase; |
| 9 | class ExecutorListActorDraw; |
| 10 | class ExecutorListBase; |
| 11 | class ExecutorListFunctor; |
| 12 | class ExecutorListIUseExecutorDraw; |
| 13 | class ExecutorListLayoutDrawBase; |
| 14 | class FunctorBase; |
| 15 | class IUseExecutor; |
| 16 | class LayoutActor; |
| 17 | class LiveActor; |
| 18 | |
| 19 | class ExecuteTableHolderDraw { |
| 20 | public: |
| 21 | ExecuteTableHolderDraw(); |
| 22 | virtual ~ExecuteTableHolderDraw(); |
| 23 | void init(const char* name, const ExecuteSystemInitInfo& initInfo, const ExecuteOrder* orders, |
| 24 | s32 orderCount); |
| 25 | void registerExecutorListActorModel(ExecutorListActorModelDrawBase* listActorModel); |
| 26 | void registerExecutorListActor(ExecutorListActorDraw* listActor); |
| 27 | void registerExecutorListLayout(ExecutorListLayoutDrawBase* listLayout); |
| 28 | void registerExecutorListUser(ExecutorListIUseExecutorDraw* listUser); |
| 29 | void registerExecutorListFunctor(ExecutorListFunctor* listFunctor); |
| 30 | void registerExecutorListAll(ExecutorListBase* list); |
| 31 | void tryRegisterActor(LiveActor* actor, const char* listName); |
| 32 | void tryRegisterActorModel(LiveActor* actor, const char* listName); |
| 33 | void tryRegisterLayout(LayoutActor* layout, const char* listName); |
| 34 | void tryRegisterUser(IUseExecutor* user, const char* listName); |
| 35 | void tryRegisterFunctor(const FunctorBase& functor, const char* listName); |
| 36 | void createExecutorListTable(); |
| 37 | void execute() const; |
| 38 | void executeList(const char* listName) const; |
| 39 | bool isActive() const; |
| 40 | |
| 41 | const char* getName() { return mName; } |
| 42 | |
| 43 | private: |
| 44 | const char* mName; |
| 45 | sead::PtrArray<ExecutorListBase> mActiveExecutors; |
| 46 | sead::PtrArray<ExecutorListBase> mExecutorsAll; |
| 47 | sead::PtrArray<ExecutorListActorDraw> mExecutorsActor; |
| 48 | sead::PtrArray<ExecutorListActorModelDrawBase> mExecutorsActorModel; |
| 49 | sead::PtrArray<ExecutorListLayoutDrawBase> mExecutorsLayout; |
| 50 | sead::PtrArray<ExecutorListIUseExecutorDraw> mExecutorsUser; |
| 51 | sead::PtrArray<ExecutorListFunctor> mExecutorsFunctor; |
| 52 | }; |
| 53 | |
| 54 | static_assert(sizeof(ExecuteTableHolderDraw) == 0x80); |
| 55 | |
| 56 | } // namespace al |
| 57 |