#ifndef _CSYSTEMSTATE #define _CSYSTEMSTATE #include "types.h" #include "MetroidPrime/TGameTypes.hpp" #include "rstl/pair.hpp" #include "rstl/reserved_vector.hpp" #include "rstl/vector.hpp" class CSystemState { public: CSystemState(); explicit CSystemState(CInputStream&); ~CSystemState(); void PutTo(COutputStream&) const; void SetHasFusion(bool v); bool GetHasFusion() const { return xd0_28_fusionSuitActive; } bool GetCinematicState(rstl::pair< CAssetId, TEditorId > cineId) const; void SetCinematicState(rstl::pair< CAssetId, TEditorId > cineId, bool state); bool GetShowPowerBombAmmoMessage() const; void IncrementPowerBombAmmoCount(); bool GetAllItemsCollected() const { return xd0_29_allItemsCollected; } void SetAllItemsCollected(bool); // MP1R bool AreFreezeInstructionsStillEnabledFirstPerson() const; bool AreFreezeInstructionsStillEnabledMorphBall() const; void IncNumFreezeInstructionsPrintedFirstPerson(); private: rstl::reserved_vector< uchar, 98 > x0_nesState; rstl::reserved_vector< bool, 64 > x68_; rstl::vector< rstl::pair< CAssetId, TEditorId > > xac_cinematicStates; int xbc_autoMapperKeyState; int xc0_frozenFpsCount; int xc4_frozenBallCount; int xc8_powerBombAmmoCount; int xcc_logScanPercent; bool xd0_24_fusionLinked : 1; bool xd0_25_normalModeBeat : 1; bool xd0_26_hardModeBeat : 1; bool xd0_27_fusionBeat : 1; bool xd0_28_fusionSuitActive : 1; bool xd0_29_allItemsCollected : 1; }; #endif // _CSYSTEMSTATE