| 1 | #pragma once |
| 2 | |
| 3 | #include <container/seadPtrArray.h> |
| 4 | |
| 5 | #include "Library/Scene/DemoDirector.h" |
| 6 | |
| 7 | namespace al { |
| 8 | class PlayerHolder; |
| 9 | class GraphicsSystemInfo; |
| 10 | class WipeSimple; |
| 11 | } // namespace al |
| 12 | class IUseDemoSkip; |
| 13 | class Shine; |
| 14 | class ShineTowerRocket; |
| 15 | class RiseMapPartsHolder; |
| 16 | class DemoChangeEffectObj; |
| 17 | class DemoHackFirstDirector; |
| 18 | |
| 19 | class ProjectDemoDirector : public al::DemoDirector { |
| 20 | public: |
| 21 | enum class DemoType { |
| 22 | RiseMapParts = 0x1, |
| 23 | EndHack = 0x3, |
| 24 | UNK5 = 0x4, |
| 25 | UNK6 = 0x5, |
| 26 | ShineGet = 0x6, |
| 27 | UNK8 = 0x7, |
| 28 | UNK9 = 0x8, |
| 29 | UNK10 = 0x9, |
| 30 | }; |
| 31 | |
| 32 | ProjectDemoDirector(const al::PlayerHolder*, al::GraphicsSystemInfo*); |
| 33 | |
| 34 | void endInit(const al::ActorInitInfo&) override; |
| 35 | void updateSystemOnly(); |
| 36 | void updateDemoSyncEventKeeper(); |
| 37 | void updateDemoActor(al::EffectSystem*) override; |
| 38 | bool isActiveDemo(const char*); |
| 39 | bool isActiveDemoWithPlayer(); |
| 40 | bool isActiveDemoWithCinemaCaption() const; |
| 41 | bool requestStartDemo(const char*, ProjectDemoDirector::DemoType); |
| 42 | void requestEndDemo(const char*, ProjectDemoDirector::DemoType); |
| 43 | bool requestStartDemoShineMainGet(Shine*, const char*); |
| 44 | void requestEndDemoShineMainGet(const char*); |
| 45 | bool requestStartDemoShineGrandGet(Shine*, const char*); |
| 46 | void requestEndDemoShineGrandGet(const char*); |
| 47 | void setShine(Shine*); |
| 48 | void clearShine(); |
| 49 | bool requestStartDemoScenarioCamera(const char*); |
| 50 | void requestEndDemoScenarioCamera(const char*); |
| 51 | void addDemoAppearFromHomeToList(ShineTowerRocket*); |
| 52 | bool requestStartDemoAppearFromHome(const char*); |
| 53 | void requestEndDemoAppearFromHome(const char*); |
| 54 | void addDemoReturnToHomeToList(ShineTowerRocket*); |
| 55 | bool requestStartDemoReturnToHome(const char*); |
| 56 | void requestEndDemoReturnToHome(const char*); |
| 57 | void addDemoRiseMapPartsToList(RiseMapPartsHolder*); |
| 58 | bool requestStartDemoRiseMapParts(const char*); |
| 59 | void requestEndDemoRiseMapParts(const char*); |
| 60 | bool isExistDemoWorldLandInList() const; |
| 61 | bool isExistDemoAppearFromHomeInList() const; |
| 62 | bool isExistDemoReturnToHome() const; |
| 63 | bool isExistDemoRiseMapPartsInList() const; |
| 64 | void startCloseDemoFade(s32); |
| 65 | void startOpenDemoFade(s32); |
| 66 | bool isDemoFadeCloseEnd() const; |
| 67 | bool isDemoFadeOpenEnd() const; |
| 68 | bool () const; |
| 69 | DemoHackFirstDirector* tryCreateDemoHackFirstDirector(al::LiveActor*, s32, |
| 70 | const al::ActorInitInfo&); |
| 71 | void noticeDemoStartToDemoHackFirstDirector(); |
| 72 | void setDemoEnvironmentChangeFlag(bool); |
| 73 | void registerDemoChangeEffectObj(DemoChangeEffectObj*); |
| 74 | bool startDemo(const char*) override; |
| 75 | void endDemo(const char*) override; |
| 76 | |
| 77 | private: |
| 78 | al::PlayerHolder* mPlayerHolder; |
| 79 | al::GraphicsSystemInfo* mGfxSysInfo; |
| 80 | ShineTowerRocket* mShineTowerRocket; |
| 81 | RiseMapPartsHolder* mRiseMapPartsHolder; |
| 82 | s32* mDemoList; |
| 83 | Shine* mDemoShine; |
| 84 | DemoType mDemoType; |
| 85 | IUseDemoSkip* mDemoSkipRequester; |
| 86 | bool mIsDemoSkipping; |
| 87 | void* mCinemaCaption; |
| 88 | al::WipeSimple* mDemoWipe; |
| 89 | DemoHackFirstDirector* mDemoHackFirstDirector; |
| 90 | void* _b0; |
| 91 | bool mIsDemoEnvironmentChangeFlag; |
| 92 | sead::PtrArray<DemoChangeEffectObj> mDemoChangeEffectObjArray; |
| 93 | s32 _d0; |
| 94 | void* _d8; |
| 95 | u16 _e0; |
| 96 | s32 _e4; |
| 97 | }; |
| 98 | |