2024-09-30 00:02:23 -06:00
|
|
|
#ifndef _CSYSTEMSTATE
|
|
|
|
|
#define _CSYSTEMSTATE
|
2022-04-09 20:17:06 -04:00
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
2022-10-09 01:13:17 -04:00
|
|
|
#include "MetroidPrime/TGameTypes.hpp"
|
|
|
|
|
|
2022-04-09 20:17:06 -04:00
|
|
|
#include "rstl/pair.hpp"
|
|
|
|
|
#include "rstl/reserved_vector.hpp"
|
|
|
|
|
#include "rstl/vector.hpp"
|
|
|
|
|
|
2024-09-30 00:02:23 -06:00
|
|
|
class CSystemState {
|
2022-04-09 20:17:06 -04:00
|
|
|
public:
|
2024-09-30 00:02:23 -06:00
|
|
|
CSystemState();
|
|
|
|
|
explicit CSystemState(CInputStream&);
|
|
|
|
|
~CSystemState();
|
2022-10-11 21:35:41 +03:00
|
|
|
void PutTo(COutputStream&) const;
|
2022-04-09 20:17:06 -04:00
|
|
|
|
|
|
|
|
void SetHasFusion(bool v);
|
2022-10-01 02:19:09 -04:00
|
|
|
bool GetHasFusion() const { return xd0_28_fusionSuitActive; }
|
2022-04-09 20:17:06 -04:00
|
|
|
|
2022-10-02 18:27:13 -04:00
|
|
|
bool GetCinematicState(rstl::pair< CAssetId, TEditorId > cineId) const;
|
|
|
|
|
void SetCinematicState(rstl::pair< CAssetId, TEditorId > cineId, bool state);
|
2022-10-02 13:13:35 +03:00
|
|
|
|
2026-02-25 23:42:55 -07:00
|
|
|
int GetAutoMapperKeyState() const { return xbc_autoMapperKeyState; }
|
|
|
|
|
void SetAutoMapperKeyState(int state) { xbc_autoMapperKeyState = state; }
|
|
|
|
|
|
2022-10-05 21:05:56 +03:00
|
|
|
bool GetShowPowerBombAmmoMessage() const;
|
|
|
|
|
void IncrementPowerBombAmmoCount();
|
|
|
|
|
|
|
|
|
|
bool GetAllItemsCollected() const { return xd0_29_allItemsCollected; }
|
|
|
|
|
void SetAllItemsCollected(bool);
|
|
|
|
|
|
2024-09-30 00:02:23 -06:00
|
|
|
// MP1R
|
|
|
|
|
bool AreFreezeInstructionsStillEnabledFirstPerson() const;
|
|
|
|
|
bool AreFreezeInstructionsStillEnabledMorphBall() const;
|
|
|
|
|
void IncNumFreezeInstructionsPrintedFirstPerson();
|
|
|
|
|
|
2022-04-09 20:17:06 -04:00
|
|
|
private:
|
2022-10-09 01:37:23 -04:00
|
|
|
rstl::reserved_vector< uchar, 98 > x0_nesState;
|
2022-04-09 20:17:06 -04:00
|
|
|
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;
|
|
|
|
|
};
|
|
|
|
|
|
2024-09-30 00:02:23 -06:00
|
|
|
#endif // _CSYSTEMSTATE
|