mirror of
https://github.com/CraftyBoss/SuperMarioOdysseyOnline.git
synced 2024-12-05 01:17:29 +00:00
69d6a732c7
- change: general game mode management more abstract and less H&S oriented
- change: split 8bit updateType into 4bit game mode and 4bit update type.
- change: don't process packets from other game modes (legacy mode for backwards compatibility)
- change: cache game mode of other players in puppet, resend GameModeInf on detected game mode change
- change: send gamemode NONE when H&S is selected but not active
- change: improved distance calculations in squared distance space
- change: change from hider to seeker when dead even if there are no other players
- fix: add hours to the minutes for the H&S GameModeInf packet
- fix: set milliseconds and hours when receiving time from server
- fix: keep the new time from the server for longer than a single frame
- fix: reset H&S icon after receiving a new state from the server
- refac: move code to generate PlayerList into own abstract LayoutPlayerList class.
- refac: to_string() method for GameTime to simplify code in the Game Mode Icon class.
- refac: rename TagInf packet to GameModeInf packet
- refac: remove param from `SocketClient::tryGetPacket()` (unused)
- refac: move all H&S specific files into the same directory (out of layouts)
- refac: move GameModeTimer.cpp from source/server/hns/ to source/server/gamemode/
- refac: clean up some unused, duplicate or complicated imports
- [mod menu] change: use the game mode name in the options & menu title
- [mod menu] change: select the next game mode in the game mode select menu
- [mod menu] change: possibility to always change the gravity setting in the H&S config menu
- [mod menu] add: toggle options to control mario/cappy collision/bounciness
(cherry picked from commit a9b2c87aa0
)
(cherry picked from commit 918f61fbfd619d781d88dc74878d392c48cfa480)
(cherry picked from commit 96aff7dd7167d8244acef7884fa3503d4c3f868a)
(cherry picked from commit 0fb6413ec91bbf679e9f8cea1aa512159101fa46)
(cherry picked from commit ab78a812fd18781655ccf38e803f619ea427d1ac)
Co-authored-by: Robin C. Ladiges <rcl.git@blackpinguin.de>
111 lines
No EOL
3.5 KiB
C++
111 lines
No EOL
3.5 KiB
C++
/**
|
|
* @file GameDataHolder.h
|
|
* @brief Holds scenario / game data.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "game/GameData/GameDataFile.h"
|
|
#include "game/GameData/GameDataHolderBase.h"
|
|
#include "game/WorldList/WorldList.h"
|
|
#include "sead/basis/seadTypes.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
|
|
}; |