mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 22:27:41 +00:00
Further CGameState imps
This commit is contained in:
@@ -6,15 +6,113 @@
|
||||
namespace urde
|
||||
{
|
||||
|
||||
/** Options tracked persistently between game sessions */
|
||||
class CPersistentOptions
|
||||
{
|
||||
bool x0_[98] = {};
|
||||
bool x68_[64] = {};
|
||||
std::vector<std::pair<ResId, TEditorId>> xac_cinematicStates; /* (MLVL, Cinematic) */
|
||||
u32 xb0_ = 0;
|
||||
u32 xb4_ = 0;
|
||||
u32 xb8_ = 0;
|
||||
u32 xbc_ = 0;
|
||||
u32 xc0_ = 0;
|
||||
u32 xc4_ = 0;
|
||||
u32 xc8_ = 0;
|
||||
u32 xcc_ = 0;
|
||||
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
bool xd0_24_;
|
||||
bool xd0_25_;
|
||||
bool xd0_26_;
|
||||
bool xd0_27_;
|
||||
bool xd0_28_;
|
||||
bool xd0_29_;
|
||||
};
|
||||
u16 _dummy = 0;
|
||||
};
|
||||
|
||||
public:
|
||||
CPersistentOptions() = default;
|
||||
CPersistentOptions(CBitStreamReader& stream);
|
||||
|
||||
void SetCinematicState(ResId mlvlId, TEditorId cineId, bool state);
|
||||
};
|
||||
|
||||
/** Options tracked per game session */
|
||||
class CGameOptions
|
||||
{
|
||||
u8 a = 0;
|
||||
u8 b = 0;
|
||||
u8 c = 128;
|
||||
u8 d = 128;
|
||||
u8 e = 255;
|
||||
u8 f = 255;
|
||||
bool g = true;
|
||||
public:
|
||||
enum class ESoundMode
|
||||
{
|
||||
Mono,
|
||||
Stereo,
|
||||
Surround
|
||||
};
|
||||
|
||||
private:
|
||||
bool x0_[64] = {};
|
||||
ESoundMode x44_soundMode = ESoundMode::Stereo;
|
||||
u32 x48_ = 4;
|
||||
u32 x4c_ = 0;
|
||||
u32 x50_ = 0;
|
||||
u32 x54_ = 0;
|
||||
u32 x58_ = 0x7f;
|
||||
u32 x5c_ = 0x7f;
|
||||
u32 x60_ = 0xff;
|
||||
u32 x64_ = 0xff;
|
||||
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
bool x68_24_;
|
||||
bool x68_25_;
|
||||
bool x68_26_;
|
||||
bool x68_27_;
|
||||
bool x68_28_;
|
||||
};
|
||||
u16 _dummy = 0;
|
||||
};
|
||||
|
||||
u32 x70_ = 0;
|
||||
u32 x74_ = 0;
|
||||
u32 x78_ = 0;
|
||||
|
||||
public:
|
||||
CGameOptions();
|
||||
CGameOptions(CBitStreamReader& stream);
|
||||
void InitSoundMode();
|
||||
};
|
||||
|
||||
class CHintOptions
|
||||
{
|
||||
public:
|
||||
enum class EHintState
|
||||
{
|
||||
Zero,
|
||||
One,
|
||||
Two
|
||||
};
|
||||
struct SHintState
|
||||
{
|
||||
EHintState x0_state = EHintState::Zero;
|
||||
float x4_time = 0.f;
|
||||
bool x8_flag = false;
|
||||
|
||||
SHintState() = default;
|
||||
SHintState(EHintState state, float time, bool flag)
|
||||
: x0_state(state), x4_time(time), x8_flag(flag) {}
|
||||
};
|
||||
private:
|
||||
std::vector<SHintState> x0_hintStates;
|
||||
u32 x10_nextHintIdx = -1;
|
||||
public:
|
||||
CHintOptions() = default;
|
||||
CHintOptions(CBitStreamReader& stream);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user