1#pragma once
2
3#include <basis/seadTypes.h>
4
5#include "Library/HostIO/HioNode.h"
6
7namespace al {
8struct ActorInitInfo;
9class AddDemoInfo;
10class EffectSystem;
11class LiveActor;
12class PlacementId;
13
14class DemoDirector : public HioNode {
15public:
16 DemoDirector(s32);
17
18 void addDemoActorWithSubActor(LiveActor*);
19 void addDemoActor(LiveActor*);
20 virtual void endInit(const ActorInitInfo&);
21 bool isActiveDemo() const;
22 const char* getActiveDemoName() const;
23 bool requestStartDemo(const char*);
24 void requestEndDemo(const char*);
25 bool tryAddDemoActor(LiveActor*);
26 LiveActor** getDemoActorList() const;
27 s32 getDemoActorNum() const;
28 virtual void updateDemoActor(EffectSystem*);
29 AddDemoInfo* registDemoRequesterToAddDemoInfo(const PlacementId&);
30 AddDemoInfo* findOrCreateAddDemoInfo(const PlacementId&);
31 void registActorToAddDemoInfo(LiveActor*, const PlacementId&);
32 AddDemoInfo* tryFindAddDemoInfo(const PlacementId&) const;
33 // BUG: only ever returns `nullptr`
34 AddDemoInfo* findAddDemoInfo(const PlacementId&) const;
35 virtual bool startDemo(const char*);
36 virtual void endDemo(const char*);
37
38private:
39 const char* mActiveDemoName;
40 void* filler[8];
41};
42} // namespace al
43