1#pragma once
2
3#include <framework/seadFramework.h>
4#include <heap/seadHeap.h>
5#include <prim/seadRuntimeTypeInfo.h>
6#include <prim/seadSafeString.h>
7
8namespace sead
9{
10class GameFramework : public Framework
11{
12 SEAD_RTTI_OVERRIDE(GameFramework, Framework);
13
14public:
15 GameFramework();
16 // TODO: implement (missing unk1)
17 ~GameFramework() override;
18
19 void createSystemTasks(TaskBase* base,
20 const Framework::CreateSystemTaskArg& createSystemTaskArg) override;
21 void quitRun_(Heap* heap) override;
22 // TODO: implement (missing TaskBase::SystemMgrTaskArg, sead::TTaskFactory)
23 virtual void createControllerMgr(TaskBase* base);
24 virtual void createHostIOMgr(TaskBase* base, HostIOMgr::Parameter* hostioParam, Heap* heap);
25 virtual void createProcessMeter(TaskBase* base);
26 virtual void createSeadMenuMgr(TaskBase* base);
27 virtual void createInfLoopChecker(TaskBase* base, const TickSpan&, int);
28 virtual void createCuckooClock(TaskBase* base);
29 virtual float calcFps() = 0;
30 virtual void saveScreenShot(const SafeString&);
31 virtual bool isScreenShotBusy() const;
32 virtual void waitStartDisplayLoop_();
33 virtual void initHostIO_();
34
35 void startDisplay();
36 void initialize(const Framework::InitializeArg&);
37 void lockFrameDrawContext();
38 void unlockFrameDrawContext();
39
40private:
41 int mDisplayStarted = 0;
42 sead::SafeString mUnk1 = "";
43 sead::SafeString mUnk2 = "";
44 sead::SafeString mUnk3 = "";
45 void* mUnk4 = nullptr;
46 void (*mUnk5)(bool) = nullptr;
47 void (*mUnk6)(bool);
48};
49} // namespace sead
50