SuperMarioOdysseyOnline/include/game/GameData/GameDataHolder.h

111 lines
3.5 KiB
C++

/**
* @file GameDataHolder.h
* @brief Holds scenario / game data.
*/
#pragma once
#include "basis/seadTypes.h"
#include "game/GameData/GameDataFile.h"
#include "game/GameData/GameDataHolderBase.h"
#include "game/WorldList/WorldList.h"
class GameDataHolder : public al::GameDataHolderBase
{
public:
// GameDataHolder(al::MessageSystem const *);
GameDataHolder();
virtual ~GameDataHolder();
virtual char* getSceneObjName() const;
// virtual al::MessageSystem* getMessageSystem() const;
void setPlayingFileId(s32 file);
void intitalizeData();
void initialzeDataCommon();
void resetTempSaveData(bool);
void initializeDataId(s32);
void readByamlData(s32, char const *);
s32 tryFindEmptyFileId() const;
bool isRequireSave() const;
void setRequireSave();
void setRequireSaveFalse();
void setRequireSaveFrame();
void updateRequireSaveFrame();
bool isInvalidSaveForMoonGet() const;
void invalidateSaveForMoonGet();
void validateSaveForMoonGet();
void setLanguage(char const *);
char* getLanguage() const;
void resetLocationName();
void changeNextStageWithDemoWorldWarp(char const *);
bool tryChangeNextStageWithWorldWarpHole(char const *);
void returnPrevStage();
char* getNextStageName() const;
char* getNextStageName(s32 idx) const;
GameDataFile* getGameDataFile(s32 idx) const;
// u64 getNextPlayerStartId() const;
char* getCurrentStageName() const;
char* tryGetCurrentStageName() const;
char* getCurrentStageName(s32 idx) const;
// void setCheckpointId(al::PlacementId const *);
char* tryGetRestartPointIdString() const;
void endStage();
void startStage(char const *, s32);
// void onObjNoWriteSaveData(al::PlacementId const *);
// void offObjNoWriteSaveData(al::PlacementId const *);
// bool isOnObjNoWriteSaveData(al::PlacementId const *) const;
// void onObjNoWriteSaveDataResetMiniGame(al::PlacementId const*);
// void offObjNoWriteSaveDataResetMiniGame(al::PlacementId const *);
// bool isOnObjNoWriteSaveDataResetMiniGame(al::PlacementId const *) const;
// void onObjNoWriteSaveDataInSameScenario(al::PlacementId const *);
// bool isOnObjNoWriteSaveDataInSameScenario(al::PlacementId const *) const;
void writeTempSaveDataToHash(char const *, bool);
void resetMiniGameData();
s32 getPlayingFileId() const;
s32 findUnlockShineNum(bool *, s32) const;
s32 calcBeforePhaseWorldNumMax(s32) const;
bool isFindKoopaNext(s32) const;
bool isBossAttackedHomeNext(s32) const;
void playScenarioStartCamera(s32);
bool isPlayAlreadyScenarioStartCamera() const;
s32 getShineAnimFrame(s32) const;
s32 getCoinCollectNumMax(s32) const;
void readFromSaveDataBufferCommonFileOnlyLanguage();
void readFromSaveDataBuffer(const char *bufferName);
void changeNextStage(struct ChangeStageInfo const*, int);
int findUseScenarioNo(char const*);
// unsigned char padding_20[0x20 - sizeof(al::ISceneObj)];
// GameDataFile* mGameDataFile;
int padding; // 0x10
GameDataFile** mDataFileArr; // 0x18
GameDataFile* mGameDataFile; // 0x20
u64 _28;
u64 _30;
u64* _38; // SaveDataAccessSequence*
u32 _40;
u32 mRequireSaveFrame; // _44
bool mIsInvalidSaveForMoonGet; // _48
bool mChangeStageRelated; // _49
u8 _4A;
u8 _4B;
u32 _4C;
sead::BufferedSafeString mLanguage; // _50
u8 _58[0x90-0x68];
sead::Heap* _90;
u8 _98[0xB9-0xA0];
u64* _B8; // TempSaveData*
u8 _C0[0x1A0-0xD0];
WorldList* mWorldList; // 0x190
};