/** * @file GameDataFile.h * @brief Holds data for an individual save file. */ #pragma once #include "al/scene/SceneObjHolder.h" #include "types.h" #include "UniqueObjInfo.h" #include "sead/math/seadVector.h" #include "sead/stream/seadStream.h" namespace al { class ActorInitInfo; class PlacementInfo; class PlacementId; } class GameDataHolder; class ShineInfo; class GameDataFile { public: GameDataFile(GameDataHolder *); void initializeData(void); void tryReadByamlData(uchar const*); void tryFindCoinCollectInfo(char const*,char const*); void tryFindShineIndexByUniqueId(int); void tryFindCoinCollectIndexByUniqueId(int); void buyDefaultItem(void); void unlockAchievementShineName(void); void updateWorldMapIndex(void); void updateWorldWarpIndex(void); void initializeCheckpointTable(void); void generateSaveDataIdForPrepo(void); void resetMapIcon(void); void wearDefault(void); void initializeHintList(void); void initializeCoinCollectList(void); void resetTempData(void); void addPlayTime(int,al::IUseSceneObjHolder const*); void updateSaveTime(void); void updateSaveTimeForDisp(void); void updateSaveInfoForDisp(void); void generateSaveDataIdForPrepoForWrite(void); void resetSaveDataIdForPrepoForWrite(void); void startStage(char const*,int); void checkIsHomeStage(char const*); void setGameClear(void); void startDemoStage(char const*); void changeNextStage(struct ChangeStageInfo const*,int); void returnPrevStage(void); void changeNextStageWithDemoWorldWarp(char const*); void changeNextStageWithWorldWarpHole(char const*); void restartStage(void); void calcNextScenarioNo(void); void tryGetStageNameCurrent(void); void changeWipeType(char const*); void setRestartPointId(al::PlacementId const*); void clearStartId(void); void tryGetRestartPointIdString(void); void endStage(void); void missAndRestartStage(void); void checkGotShine(char const*); void tryGetNextMainScenarioLabel(sead::BufferedSafeString *,sead::BufferedSafeString *); void tryGetNextMainScenarioPos(sead::Vector3f *); void tryFindNextMainScenarioInfo(void); void addPayShine(int); void addPayShineCurrentAll(void); void addKey(int); void addOpenDoorLockNum(int); void tryFindSaveObjS32(al::PlacementId const*); void addSessionMember(struct SessionMusicianType const&); void addCoinCollect(al::PlacementId const*); void useCoinCollect(int); void tryFindExistCoinCollectStageName(int); void payCoinToSphinx(void); void answerCorrectSphinxQuiz(void); void answerCorrectSphinxQuizAll(void); void talkLocalLanguage(void); void saveWorldTravelingStatus(char const*); void startWorldTravelingPeach(void); void setGrowFlowerTime(al::PlacementId const*,ulong); void addGrowFlowerGrowLevel(al::PlacementId const*,uint); void findGrowFlowerPotIdFromSeedId(al::PlacementId const*); void addCoin(int); void addPlayerJumpCount(void); void addPlayerThrowCapCount(void); void readFromStream(sead::ReadStream *,uchar *); void tryReadByamlDataFromStream(sead::ReadStream *,uchar *,int); void writeToStream(sead::WriteStream *,sead::Heap *); void tryWriteByByaml(sead::WriteStream *,sead::Heap *); void calcCheckpointIndexInScenario(int); void changeNextSceneByGotCheckpoint(int); void changeNextSceneByWarp(void); void changeNextSceneByHome(void); void startYukimaruRace(void); void startYukimaruRaceTutorial(void); void startRaceManRace(void); void registerCheckpointTrans(al::PlacementId const*,sead::Vector3f const&); void calcGetCheckpointNum(void); void calcRestHintNum(void); void unlockHint(void); void unlockHintImpl(int); void unlockHintAmiibo(void); void unlockHintAddByMoonRock(void); void calcHintNum(void); void calcHintTrans(int); void findHint(int); void calcHintTransMostEasy(void); void findHintInfoMostEasy(void); void calcHintMoonRockNum(void); void calcHintMoonRockTrans(int); void findHintMoonRock(int); void tryUnlockShineName(int,int); void calcShineIndexTableNameAvailable(int *,int *,int); void calcShineIndexTableNameUnlockable(int *,int *,int); void unlockWorld(int); void noPlayDemoWorldWarp(void); void calcWorldWarpHoleThroughNum(void); void enteredStage(void); //void buyItem(ShopItem::ItemInfo const*,bool); //void tryFindItemList(ShopItem::ItemInfo const*); void calcHaveClothNum(void); void calcHaveCapNum(void); void calcHaveStickerNum(void); void calcHaveGiftNum(void); void buyItemAll(void); void wearCostume(char const*); void wearCap(char const*); void addHackDictionary(char const*); void findShine(int,int); void calcShineNumInOneShine(int,int); void checkAchievementShine(int,int); void winRace(void); void findRaceRecord(char const*); void incrementRaceLoseCount(int); void setUpdateJumpingRopeScoreFlag(void); void setVolleyballBestCount(int); void setUpdateVolleyballScoreFlag(void); void setAmiiboNpcTrans(sead::Vector3f const&); void setTimeBalloonNpcTrans(sead::Vector3f const&); void setPoetterTrans(sead::Vector3f const&); void setShopNpcTrans(sead::Vector3f const&,char const*,int); void setMoonRockTrans(sead::Vector3f const&); void setMiniGameInfo(sead::Vector3f const&,char const*); void calcMiniGameNum(void); void showExplainCheckpointFlag(void); void calcShopNum(void); void talkKakku(void); void talkWorldTravelingPeach(void); void talkCollectBgmNpc(void); void noFirstNetwork(void); void calcIsGetMainShineAll(al::IUseSceneObjHolder const*); void calcIsGetShineAllInWorld(int); void tryFindLinkedShineIndex(al::ActorInitInfo const&,al::IUseSceneObjHolder const*); void tryFindLinkedShineIndex(al::ActorInitInfo const&,int,al::IUseSceneObjHolder const*); void tryFindLinkedShineIndexByLinkName(al::IUseSceneObjHolder const*,al::ActorInitInfo const&,char const*); void calcLinkedShineNum(al::ActorInitInfo const&); void tryFindShineIndex(al::ActorInitInfo const&); void tryFindShineIndex(char const*,char const*); void disableHintById(int); void enableHintById(int); void setHintTrans(int,sead::Vector3f const&); void resetHintTrans(int); void registerShineInfo(ShineInfo const*,sead::Vector3f const&); void calcRestShineInStageWithWorldProgress(char const*); // void calcGetShineNumByObjectNameOrOptionalId(char const*, GameDataFile::CountType); void calcGetShineNumByObjectNameWithWorldId(char const*,int); void calcAllShineNumByObjectNameOrOptionalId(char const*); void calcGetShineNumByStageName(char const*); void tryFindAndInitShineInfoByOptionalId(ShineInfo *,char const*); void tryFindUniqueId(ShineInfo const*); void findUnlockShineNumCurrentWorld(bool *); void trySetCollectedBgm(char const*,char const*); // void setGotShine(GameDataFile::HintInfo const*); // void tryWriteByByaml(al::ByamlWriter *); int getTotalShineNum(void); void getCollectBgmByIndex(int); u8 getMainScenarioNoCurrent(void) const; int getStartShineNextIndex(void); void getTokimekiMayorNpcFavorabilityRating(void); void getShopNpcIconNumMax(void); void getShopNpcTrans(int); void getPoetterTrans(void); void getTimeBalloonNpcTrans(void); void getMiniGameNumMax(void); void getRaceLoseCount(int); int getWorldTotalShineNum(int); int getWorldWarpHoleThroughNumMax(void); void getCheckpointObjIdInWorld(int); void getCheckpointNumMaxInWorld(void); void getPlayerThrowCapCount(void); void getPlayerJumpCount(void); void getGrowFlowerGrowLevel(al::PlacementId const*); void getGrowFlowerTime(al::PlacementId const*); void getWorldTravelingStatus(void); void getCoinCollectNum(void); void getKeyNum(void); int getPayShineNum(int); int getShineNum(void); void getAchievement(char const*); void getPlayerStartId(void); void getStageNameNext(void); void getStageNameCurrent(void); void getPlayerHitPointData(void); void getLastUpdateTime(void); void getPlayTimeTotal(void); void getMainScenarioNo(int); void getCollectedBgmMaxNum(void); int getScenarioNo(void) const; void getMiniGameName(int); void getWorldTotalShineNumMax(int); void getCheckpointTransInWorld(char const*); void getCoinCollectGotNum(void); void getTotalPayShineNum(void); void getShineNum(int); int getScenarioNo(int worldIndex) const; void getCollectedBgmNum(void); void getScenarioNoPlacement(void); void getMiniGameTrans(int); void getCoinCollectGotNum(int); void getTotalShopShineNum(void); void setGotShine(int); void setMainScenarioNo(int); void setStartShine(ShineInfo const*); void setKidsMode(bool); void setTokimekiMayorNpcFavorabilityRating(int); void setFlagOnTalkMessageInfo(int); void setJangoTrans(sead::Vector3f const&); void setJumpingRopeBestCount(int); void setGrowFlowerTime(al::PlacementId const*,al::PlacementId const*,ulong); void setSaveObjS32(al::PlacementId const*,int); void setStartedObj(al::PlacementId const*); void setGotShine(ShineInfo const*); void setMissRestartInfo(al::PlacementInfo const&); void setCheckpointId(al::PlacementId const*); void setActivateHome(void); void setOriginalHintTrans(int); bool isUnlockedWorld(int) const; bool isAlreadyGoWorld(int) const; bool isFirstTimeNextWorld(void) const; bool isGotShine(ShineInfo const*) const; bool isGotShine(int) const; bool isStartedObj(char const*,char const*) const; bool isAnswerCorrectSphinxQuizAll(int) const; bool isTalkAlreadyLocalLanguage(void) const; bool isBuyItem(char const*,sead::FixedSafeString<64> const*) const; bool isOpenShineName(int,int) const; bool isExistPoetter(void) const; bool isAlreadyShowExplainCheckpointFlag(void) const; bool isFlagOnTalkMessageInfo(int) const; bool isTalkKakku(void) const; bool isNextMainShine(struct QuestInfo const*) const; bool isNextMainShine(int) const; bool isMainShine(int) const; bool isLatestGetMainShine(ShineInfo const*) const; bool isEnableOpenMoonRock(int) const; bool isCollectedBgm(char const*,char const*) const; bool isPlayScenarioCamera(struct QuestInfo const*) const; bool isFirstNetwork(void) const; bool isTalkCollectBgmNpc(void) const; bool isTalkWorldTravelingPeach(void) const; bool isClearWorldMainScenario(int) const; bool isShopSellout(int) const; bool isExistTimeBalloonNpc(void) const; bool isExistJango(void) const; bool isGotShine(int,int) const; bool isExistInHackDictionary(char const*) const; // bool isBuyItem(ShopItem::ItemInfo const*) const; bool isUnlockAchievementShineName(void) const; bool isOpenMoonRock(int) const; bool isEnableUnlockHint(void) const; bool isGotCheckpoint(al::PlacementId *) const; bool isGotCheckpointInWorld(int) const; bool isPlayDemoPlayerDownForBattleKoopaAfter(void) const; bool isUsedGrowFlowerSeed(al::PlacementId const*) const; bool isStartWorldTravelingPeach(void) const; bool isFirstWorldTravelingStatus(void) const; bool isAnswerCorrectSphinxQuiz(int) const; bool isPayCoinToSphinx(void) const; bool isGotCoinCollect(al::PlacementId const*) const; bool isExistSessionMember(struct SessionMusicianType const&) const; bool isStartedObj(al::PlacementId const*,char const*) const; bool isPayShineAllInAllWorld(void) const; bool isUseMissRestartInfo(void) const; bool isGoToCeremonyFromInsideHomeShip(void) const; bool isRaceStart(void) const; bool isGameClear(void) const; bool isEmpty(void) const; bool isKidsMode(void) const; undefined padding[0x5C8]; UniqObjInfo** mUniqueInfo; // 0x5C8 void *unkPtr1; // 0x5D0 void *unkPtr2; // 0x5D8 void *unkPtr3; // 0x5E0 void* unkPtr4; // 0x5E8 void* unkPtr5; // 0x5F0 bool unkBool1; // 0x5F8 bool unkBool2; // 0x5F9 bool mIsCapEnable; // 0x5FA };