1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace al {
6struct ActorInitInfo;
7class PlacementInfo;
8class PlacementId;
9class LiveActor;
10class Scene;
11class LayoutActor;
12class IUseSceneObjHolder;
13} // namespace al
14
15class SaveObjInfo;
16class GameDataHolderAccessor;
17class NpcEventDirector;
18class KoopaShip;
19class QuestInfo;
20class ShineTowerRocket;
21class WorldWarpHole;
22class GameDataHolder;
23class CapMessageBossData;
24
25namespace rs {
26SaveObjInfo* createSaveObjInfoWriteSaveData(const al::ActorInitInfo& actorInitInfo);
27SaveObjInfo* createSaveObjInfoWriteSaveData(const al::ActorInitInfo& actorInitInfo,
28 const al::PlacementInfo& placementInfo);
29SaveObjInfo* createSaveObjInfoNoWriteSaveDataInSameWorld(const al::ActorInitInfo& actorInitInfo);
30SaveObjInfo* createSaveObjInfoNoWriteSaveDataInSameWorld(const al::ActorInitInfo& actorInitInfo,
31 const al::PlacementInfo& placementInfo);
32SaveObjInfo*
33createSaveObjInfoNoWriteSaveDataInSameWorldResetMiniGame(const al::ActorInitInfo& actorInitInfo);
34SaveObjInfo*
35createSaveObjInfoNoWriteSaveDataInSameWorldResetMiniGame(const al::ActorInitInfo& actorInitInfo,
36 const al::PlacementInfo& placementInfo);
37SaveObjInfo* createSaveObjInfoNoWriteSaveDataInSameScenario(const al::ActorInitInfo& actorInitInfo);
38SaveObjInfo* createSaveObjInfoNoWriteSaveDataInSameScenario(const al::ActorInitInfo& actorInitInfo,
39 const al::PlacementInfo& placementInfo);
40SaveObjInfo* createSaveObjInfoWriteSaveData(const al::ActorInitInfo& actorInitInfo,
41 const al::PlacementId* placementId);
42SaveObjInfo* createSaveObjInfoNoWriteSaveDataInSameWorld(const al::ActorInitInfo& actorInitInfo,
43 const al::PlacementId* placementId);
44SaveObjInfo*
45createSaveObjInfoNoWriteSaveDataInSameWorldResetMiniGame(const al::ActorInitInfo& actorInitInfo,
46 const al::PlacementId* placementId);
47SaveObjInfo* createSaveObjInfoNoWriteSaveDataInSameScenario(const al::ActorInitInfo& actorInitInfo,
48 const al::PlacementId* placementId);
49void onSaveObjInfo(SaveObjInfo* saveObjInfo);
50void offSaveObjInfo(SaveObjInfo* saveObjInfo);
51bool isOnSaveObjInfo(const SaveObjInfo* saveObjInfo);
52void setGrowFlowerTime(const al::LiveActor* actor, const al::PlacementId*, const al::PlacementId*,
53 u64 time);
54void setGrowFlowerTime(const al::LiveActor* actor, const al::PlacementId*, u64 time);
55u64 getGrowFlowerTime(const al::LiveActor* actor, const al::PlacementId*);
56bool isUsedGrowFlowerSeed(const al::LiveActor* actor, const al::PlacementId*);
57void addGrowFlowerGrowLevel(const al::LiveActor* actor, const al::PlacementId*, u32 growLevel);
58u32 getGrowFlowerGrowLevel(const al::LiveActor* actor, const al::PlacementId*);
59const char* findGrowFlowerPotIdFromSeedId(const al::LiveActor* actor, const al::PlacementId*);
60bool isPlayFirstTimeBalloon(const al::LiveActor* actor);
61void playTimeBalloonFirst(const al::LiveActor* actor);
62void onShortExplainGet(const al::LiveActor* actor);
63void onShortExplainSet(const al::LiveActor* actor);
64bool isShortExplainGet(const al::LiveActor* actor);
65bool isShortExplainSet(const al::LiveActor* actor);
66void onReactedLuigiCostume(const al::LiveActor* actor);
67bool isReactedLuigiCostume(const al::LiveActor* actor);
68s32 getPlayerRank(const al::LiveActor* actor);
69s32 getPlayerRank(GameDataHolderAccessor accessor);
70void setPlayerRank(const al::LiveActor* actor, s32 rank);
71void setPlayerRank(GameDataHolderAccessor accessor, s32 rank);
72u64 getPrincipalId(const al::LiveActor* actor);
73void setPrincipalId(const al::LiveActor* actor, u64 principalId);
74bool isAnswerCorrectSphinxQuiz(GameDataHolderAccessor accessor, const char* worldName);
75void answerCorrectSphinxQuiz(const al::LiveActor* actor);
76bool isAnswerCorrectSphinxQuizAll(GameDataHolderAccessor accessor, const char* worldName);
77void answerCorrectSphinxQuizAll(const al::LiveActor* actor);
78bool isTalkAlreadyLocalLanguage(const NpcEventDirector* npcEventDirector);
79void talkLocalLanguage(const al::LiveActor* actor);
80const char* getLocalLanguageName(const al::LiveActor* actor);
81const char* getLocalLanguageName(const NpcEventDirector* npcEventDirector);
82bool isOnFlagKinopioBrigadeNpcFirstTalk(const al::LiveActor* actor);
83void onFlagKinopioBrigadeNpcFirstTalk(const al::LiveActor* actor);
84bool isOnFlagHintNpcFirstTalk(const al::LiveActor* actor);
85void onFlagHintNpcFirstTalk(const al::LiveActor* actor);
86void playScenarioStartCamera(const al::LiveActor* actor, const QuestInfo* questInfo);
87void playScenarioStartCamera(const al::LiveActor* actor, s32 idx);
88void setExistKoopaShip(const KoopaShip* koopaShip);
89void resetExistKoopaShip(const KoopaShip* koopaShip);
90bool isExistKoopaShip(const ShineTowerRocket* shineTowerRocket);
91bool isExistKoopaShipInSky(const ShineTowerRocket* shineTowerRocket);
92bool tryUnlockShineName(const al::LiveActor* actor, s32 shineIdx);
93void calcShineIndexTableNameAvailable(s32*, s32*, const al::LiveActor* actor);
94void calcShineIndexTableNameUnlockable(s32*, s32*, const al::LiveActor* actor);
95s32 calcWorldIdByWorldWarpHole(const WorldWarpHole* worldWarpHole, const char* changeStageId);
96bool checkIsOpenWorldWarpHoleCurrentScenario(const WorldWarpHole* worldWarpHole);
97bool isKidsMode(const al::LiveActor* actor);
98bool isKidsMode(const al::LayoutActor* layout);
99bool isKidsMode(const al::Scene* scene);
100bool isKidsMode(const al::IUseSceneObjHolder* user);
101bool isKidsMode(const GameDataHolder* holder);
102bool isEnableCapMessageLifeOneKidsMode(const al::LiveActor* actor);
103void disableCapMessageLifeOneKidsMode(const al::LiveActor* actor);
104bool isInvalidChangeStage(const al::LiveActor* actor);
105bool isSequenceTimeBalloonOrRace(const al::LiveActor* actor);
106bool isSequenceTimeBalloonOrRace(const al::LiveActor* actor);
107bool isTreasureBoxDeadStage(const al::LiveActor* actor);
108void findRaceRecord(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
109 const al::LiveActor* actor, const char* raceName);
110void findRaceRecord(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
111 const al::Scene* actor, const char* raceName);
112void findRaceRecordRaceManRace(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
113 const al::Scene* scene);
114void findRaceRecordRaceManRace(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
115 const al::LiveActor* actor);
116void findRaceRecordRaceManRaceWithWorldId(bool* isExistRecord, bool*, s32* record, s32*,
117 s32* lapRecord, const al::Scene* scene, s32 worldId);
118void findRaceRecordRaceManRaceWithWorldId(bool* isExistRecord, bool*, s32* record, s32*,
119 s32* lapRecord, const al::LiveActor* actor, s32 worldId);
120void findRaceRecordRadicon(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
121 const al::Scene* scene);
122void findRaceRecordRadicon(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
123 const al::LiveActor* actor);
124void findRaceRecordYukimaru(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
125 const al::Scene* scene, s32 level);
126void findRaceRecordYukimaru(bool* isExistRecord, bool*, s32* record, s32*, s32* lapRecord,
127 const al::LiveActor* actor, s32 level);
128void writeRaceRecord(const al::LiveActor* actor, const char* raceName, s32 record, s32,
129 s32 lapRecord);
130void writeRaceRecord(const al::Scene* scene, const char* raceName, s32 record, s32, s32 lapRecord);
131s32 getJumpingRopeBestCount(const al::LiveActor* actor);
132s32 getJumpingRopeBestCount(const al::Scene* scene);
133void setJumpingRopeBestCount(const al::LiveActor* actor, s32 count);
134void setJumpingRopeBestCount(const al::Scene* scene, s32 count);
135s32 getJumpingRopeDayCount(const al::LiveActor* actor);
136void setJumpingRopeDayCount(const al::LiveActor* actor, s32 count);
137void setJumpingRopeUpdateScoreFlag(const al::LiveActor* actor);
138bool isExistRecordJumpingRope(const al::LiveActor* actor);
139bool isExistRecordJumpingRope(const al::Scene* scene);
140bool isExistRecordInDayJumpingRope(const al::LayoutActor* layout);
141s32 getVolleyballBestCount(const al::LiveActor* actor);
142s32 getVolleyballBestCount(const al::Scene* scene);
143void setVolleyballBestCount(const al::LiveActor* actor, s32 count);
144void setVolleyballBestCount(const al::Scene* scene, s32 count);
145s32 getVolleyballDayCount(const al::LiveActor* actor);
146void setVolleyballDayCount(const al::LiveActor* actor, s32 count);
147void setVolleyballUpdateScoreFlag(const al::LiveActor* actor);
148bool isExistRecordVolleyball(const al::LiveActor* actor);
149bool isExistRecordVolleyball(const al::Scene* scene);
150bool isExistRecordInDayVolleyball(const al::LayoutActor* layout);
151void writeRaceRecordRaceManRace(const al::LiveActor* actor, s32 record);
152bool isTalkFirstAmiiboNpc(const al::LiveActor* actor);
153void offFlagTalkFirstAmiiboNpc(const al::LiveActor* actor);
154bool checkGetShineForWorldTravelingPeach(GameDataHolderAccessor accessor, const char* worldName);
155bool checkEnableAppearMoonWorldTravelingPeach(const al::LiveActor* actor);
156bool isStartWorldTravelingPeach(const al::LiveActor* actor);
157void startWorldTravelingPeach(const al::LiveActor* actor);
158bool checkGetEnoughShine(const al::LiveActor* actor, s32 count);
159bool checkGetEnoughShineInCurrentWorld(const al::LiveActor* actor);
160void setFlagOnStartKoopaCapture(const al::LiveActor* actor);
161bool isStartKoopaCapture(const al::LiveActor* actor);
162bool isAlreadyTalkPrevWorldInWorldWarp(const al::LiveActor* actor, s32);
163bool isAlreadyTalkNextWorldInWorldWarp(const al::LiveActor* actor, s32);
164void setAlreadyTalkPrevWorldInWorldWarp(const al::LiveActor* actor, s32);
165void setAlreadyTalkNextWorldInWorldWarp(const al::LiveActor* actor, s32);
166bool checkNeedTalkPrevWorld(const al::LiveActor* actor);
167s32 getTipsIdInWorldWarp(const al::LiveActor* actor);
168void addTipsIdInWorldWarp(const al::LiveActor* actor);
169void setTalkSpecialInWorldWarp(const al::LiveActor* actor, bool, bool);
170bool isTalkFindKoopaInWorldWarp(const al::LiveActor* actor);
171bool isTalkBossRaidInWorldWarp(const al::LiveActor* actor);
172bool isClearMainScenario(const al::LiveActor* actor, s32 worldId);
173bool checkAlreadyVisitStage(const GameDataHolder* holder, const char* stageName);
174void visitStage(const GameDataHolder* holder, const char* stageName);
175bool isSequenceGoToNextWorld(const al::IUseSceneObjHolder* user);
176bool isSequenceCollectShineBeforeGameClear(const al::IUseSceneObjHolder* user);
177bool isSequenceCollectShineForRepairHome(const al::IUseSceneObjHolder* user);
178bool isSequenceCollectShine(const al::IUseSceneObjHolder* user);
179bool isSequenceGoToMoonRock(const al::IUseSceneObjHolder* user);
180bool isEnableExplainShopCoin(const al::LiveActor* actor);
181void explainShopCoin(const al::LiveActor* actor);
182bool checkShowNewItemAndPrepareSave(const al::LiveActor* actor);
183bool isInNormalCoinShopFirst(const al::LiveActor* actor);
184void offInNormalCoinShopFirst(const al::LiveActor* actor);
185bool checkExistNewShopItem(const al::LiveActor* actor, s32, s32, bool);
186CapMessageBossData* getCapMessageBossData(const al::LiveActor* actor);
187void getYoshiFruit(SaveObjInfo* saveObjInfo);
188bool isGetYoshiFruit(const SaveObjInfo* saveObjInfo);
189bool isTalkKakku(const al::LiveActor* actor);
190void talkKakku(const al::LiveActor* actor);
191bool isTalkWorldTravelingPeach(const al::LiveActor* actor);
192void talkWorldTravelingPeach(const al::LiveActor* actor);
193bool isTalkCollectBgmNpc(const al::LiveActor* actor);
194void talkCollectBgmNpc(const al::LiveActor* actor);
195s32 getTokimekiMayorNpcFavorabilityRating(const al::LiveActor* actor);
196void setTokimekiMayorNpcFavorabilityRating(const al::LiveActor* actor, s32 rating);
197bool tryFindCoinStackSave(s32*, const al::LiveActor* actor, const al::PlacementId*);
198void saveCoinStack(const al::LiveActor* actor, const al::PlacementId*, s32);
199bool isCollectedBgmCityWorldCelemony(const al::LiveActor* actor);
200bool isCollectedBgmCityWorldCelemony2D(const al::LiveActor* actor);
201s32 calcGetShineNumCollectedBgm(GameDataHolderAccessor accessor);
202bool checkGetShineCollectedBgmAll(const al::LiveActor* actor);
203bool checkSavedHintPhoto(const al::LiveActor* actor, const char* name);
204void saveHintPhoto(const al::LiveActor* actor, const char* name);
205bool isRideSphinx(GameDataHolderAccessor accessor);
206void rideSphinx(const al::LiveActor* actor);
207bool isRideMotorcycle(GameDataHolderAccessor accessor);
208void rideMotorcycle(const al::LiveActor* actor);
209void setShowInformationPoleGrab(const al::IUseSceneObjHolder* user);
210bool isNeedShowInformationPoleGrab(const al::IUseSceneObjHolder* user);
211void setShowInformationPoleClimb(const al::IUseSceneObjHolder* user);
212bool isNeedShowInformationPoleClimb(const al::IUseSceneObjHolder* user);
213void setShowInformationPoleClimbTop(const al::IUseSceneObjHolder* user);
214bool isNeedShowInformationPoleClimbTop(const al::IUseSceneObjHolder* user);
215bool isNeedConfirmNetworkFirst(const al::IUseSceneObjHolder* user);
216void saveConfirmNetworkFirst(const al::IUseSceneObjHolder* user);
217} // namespace rs
218