1#pragma once
2
3#include <prim/seadSafeString.h>
4
5namespace al {
6class PlacementInfo;
7}
8
9class GameDataHolder;
10
11class ChangeStageInfo {
12public:
13 // Based on usages to rs::createChangeStageInfo and ChangeStageInfo member functions
14 enum SubScenarioType : u32 {
15 NO_SUB_SCENARIO,
16 DEFAULT_SUB_SCENARIO,
17 RESET_MINI_GAME1,
18 SNOW_MAN_RACE,
19 RESET_MINI_GAME2
20 };
21
22 ChangeStageInfo(const GameDataHolder* holder, const al::PlacementInfo& info);
23 ChangeStageInfo(const GameDataHolder* holder, const al::PlacementInfo& info,
24 const char* entranceName, const char* stageName, bool isReturn = false,
25 s32 scenario = -1, SubScenarioType = SubScenarioType::NO_SUB_SCENARIO);
26 ChangeStageInfo(const GameDataHolder*, const char* entranceName, const char* stageName,
27 bool isReturn = false, s32 scenario = -1,
28 SubScenarioType subScenarioType = SubScenarioType::NO_SUB_SCENARIO);
29 void copy(const ChangeStageInfo& other);
30 void findScenarioNoByList(const GameDataHolder*);
31 void init();
32 void init(const al::PlacementInfo& info, const GameDataHolder* holder);
33 bool isSubScenarioTypeLifeRecover() const;
34 bool isSubScenarioTypeResetMiniGame() const;
35 void setWipeType(const char* wipeType);
36
37private:
38 sead::FixedSafeString<0x80> mChangeStageId;
39 sead::FixedSafeString<0x80> mChangeStageName;
40 sead::FixedSafeString<0x80> mPlacementString;
41 bool mIsReturn;
42 s32 mScenarioNo;
43 SubScenarioType mSubScenarioType;
44 sead::FixedSafeString<0x80> mWipeType;
45 s32 mHintPriority;
46};
47
48static_assert(sizeof(ChangeStageInfo) == 0x278, "ChangeStageInfo size");
49