1#pragma once
2
3#include <container/seadPtrArray.h>
4#include <container/seadStrTreeMap.h>
5#include <math/seadVector.h>
6#include <prim/seadSafeString.h>
7
8struct StagePosInfo {};
9
10struct StageDBEntry {
11 sead::FixedSafeString<0x80> stageName;
12 sead::FixedSafeString<0x40> stageCategory;
13 s32 useScenario;
14};
15
16struct WorldListEntry {
17 const char* mainStageName;
18 const char* worldDevelopName;
19 s32 questInfoCount;
20 s32 clearMainScenario;
21 s32 endingScenario;
22 s32 moonRockScenario;
23 s32* mainQuestIndexes;
24 sead::PtrArray<StageDBEntry> stageNames;
25};
26
27class WorldList {
28public:
29 WorldList();
30
31 s32 getWorldNum() const;
32 s32 getMainQuestMin(s32, s32) const;
33 const char* getMainStageName(s32) const;
34 s32 tryFindWorldIndexByMainStageName(const char*) const;
35 s32 tryFindWorldIndexByStageName(const char*) const;
36 s32 tryFindWorldIndexByDevelopName(const char*) const;
37 bool isEqualClearMainScenarioNo(s32, s32) const;
38 s32 getAfterEndingScenarioNo(s32) const;
39 bool isEqualAfterEndingScenarioNo(s32, s32) const;
40 s32 getMoonRockScenarioNo(s32) const;
41 bool isEqualMoonRockScenarioNo(s32, s32) const;
42 const char* getWorldDevelopName(s32) const;
43 s32 getWorldScenarioNum(s32) const;
44 s32 findUseScenarioNo(const char*) const;
45 bool checkNeedTreasureMessageStage(const char*) const;
46 bool checkIsMainStage(const char*) const;
47 bool tryFindTransOnMainStageByStageName(sead::Vector3f*, const char*, s32) const;
48 bool tryFindHintTransByScenarioNo(sead::Vector3f*, s32, s32) const;
49
50private:
51 sead::PtrArray<WorldListEntry> mWorldList;
52 sead::StrTreeMap<128, StagePosInfo*> mStagePosList;
53 sead::PtrArrayImpl field_30;
54};
55
56static_assert(sizeof(WorldList) == 0x40, "WorldList Size");
57