1#pragma once
2
3#include <math/seadVector.h>
4#include <prim/seadBitFlag.h>
5#include <prim/seadSafeString.h>
6
7class GameProgressData;
8class GameDataHolder;
9
10class GameDataFile {
11public:
12 class HintInfo {
13 public:
14 enum class HintStatus { NONE, NPC, AMIIBO };
15
16 void clear();
17
18 bool isDisableByWorldWarpHole(bool) const;
19 bool isEnableUnlock(s32, bool, s32, bool) const;
20 bool isHintStatusUnlock(s32, s32, bool) const;
21 bool isHintStatusUnlockByNpc() const;
22 bool isHintStatusUnlockByAmiibo() const;
23 bool isEnableNameUnlockByScenario(s32, s32, bool) const;
24
25 bool testFunc(s32, bool, s32, bool) const;
26
27 private:
28 sead::FixedSafeString<0x80> mStageName;
29 sead::FixedSafeString<0x80> mObjId;
30 sead::FixedSafeString<0x40> mScenarioName;
31 const char* mObjectName;
32 sead::Vector3f mTrans;
33 sead::Vector3f mTransAgain;
34 void* unkPtr1;
35 void* unkPtr2;
36 void* unkPtr3;
37 void* unkPtr4;
38 s32 mMainScenarioNo;
39 s32 mWorldIndex;
40 bool mIsMoonRock;
41 bool unkBool1;
42 bool mIsAchievement;
43 bool mIsGrand;
44 bool mIsShopMoon;
45 s32 unkInt;
46 HintStatus mHintStatus;
47 s32 unkInt3;
48 s32 unkInt4;
49 void* unkPtr6;
50 s32 mUniqueID;
51 s32 mHintIdx;
52 sead::FixedSafeString<0x20> mOptionalID;
53 sead::BitFlag32 mProgressBitflag;
54 bool unkBool2;
55 bool unkBool3;
56 };
57
58 bool isGameClear() const;
59 bool isUnlockedWorld(s32 index) const;
60 bool isAlreadyGoWorld(s32 index) const;
61 void wearCostume(const char*);
62 void wearCap(const char*);
63
64private:
65 char filler0[0x6a8];
66 GameProgressData* mGameProgressData;
67 char filler1[0x1a0];
68 GameDataHolder* mGameDataHolder;
69 char filler2[0x198];
70 s32 mCurWorldId;
71 char filler3[0x170];
72};
73
74static_assert(sizeof(GameDataFile) == 0xb68);
75