Add LegoGameState::Area enum (#552)

* Add area enum

* Fix

* Fix

* Fix

* empty
This commit is contained in:
Christian Semmler
2024-02-10 13:17:07 -05:00
committed by GitHub
parent 0463d48540
commit c8930815c5
15 changed files with 236 additions and 172 deletions

View File

@@ -2,6 +2,7 @@
#define ELEVATORBOTTOM_H
#include "decomp.h"
#include "legogamestate.h"
#include "legoworld.h"
class LegoControlManagerEvent;
@@ -41,7 +42,7 @@ public:
// ElevatorBottom::`scalar deleting destructor'
private:
undefined4 m_unk0xf8; // 0xf8
LegoGameState::Area m_unk0xf8; // 0xf8
MxLong HandleClick(LegoControlManagerEvent& p_param);
};

View File

@@ -1,6 +1,7 @@
#ifndef INFOCENTER_H
#define INFOCENTER_H
#include "legogamestate.h"
#include "legoworld.h"
#include "mxrect32.h"
#include "radio.h"
@@ -229,20 +230,20 @@ private:
void PlayBookAnimation();
void StopBookAnimation();
InfomainScript m_currentInfomainScript; // 0xf8
MxS16 m_selectedCharacter; // 0xfc
InfocenterState* m_infocenterState; // 0x100
undefined4 m_transitionDestination; // 0x104
Cutscene m_currentCutscene; // 0x108
Radio m_radio; // 0x10c
MxStillPresenter* m_unk0x11c; // 0x11c
InfocenterMapEntry m_mapAreas[7]; // 0x120
MxS16 m_unk0x1c8; // 0x1c8
MxStillPresenter* m_frameHotBitmap; // 0x1cc
MxS16 m_infoManDialogueTimer; // 0x1d0
MxS16 m_bookAnimationTimer; // 0x1d2
MxU16 m_unk0x1d4; // 0x1d4
MxS16 m_unk0x1d6; // 0x1d6
InfomainScript m_currentInfomainScript; // 0xf8
MxS16 m_selectedCharacter; // 0xfc
InfocenterState* m_infocenterState; // 0x100
LegoGameState::Area m_transitionDestination; // 0x104
Cutscene m_currentCutscene; // 0x108
Radio m_radio; // 0x10c
MxStillPresenter* m_unk0x11c; // 0x11c
InfocenterMapEntry m_mapAreas[7]; // 0x120
MxS16 m_unk0x1c8; // 0x1c8
MxStillPresenter* m_frameHotBitmap; // 0x1cc
MxS16 m_infoManDialogueTimer; // 0x1d0
MxS16 m_bookAnimationTimer; // 0x1d2
MxU16 m_unk0x1d4; // 0x1d4
MxS16 m_unk0x1d6; // 0x1d6
};
#endif // INFOCENTER_H

View File

@@ -1,6 +1,7 @@
#ifndef INFOCENTERDOOR_H
#define INFOCENTERDOOR_H
#include "legogamestate.h"
#include "legoworld.h"
class LegoControlManagerEvent;
@@ -40,7 +41,7 @@ public:
// InfocenterDoor::`scalar deleting destructor'
private:
MxS32 m_unk0xf8; // 0xf8
LegoGameState::Area m_unk0xf8; // 0xf8
MxLong HandleClick(LegoControlManagerEvent& p_param);
};

View File

@@ -22,9 +22,68 @@ class LegoGameState {
public:
enum Act {
e_actNotFound = -1,
e_act1 = 0,
e_act2 = 1,
e_act3 = 2
e_act1,
e_act2,
e_act3
};
enum Area {
e_noArea = 0,
e_previousArea = 0,
e_isle,
e_infomain,
e_infodoor,
e_unk4,
e_elevbott,
e_unk6,
e_unk7,
e_unk8,
e_unk9,
e_unk10,
e_unk11,
e_regbook,
e_infoscor,
e_jetrace,
e_unk15,
e_unk16,
e_unk17,
e_carrace,
e_unk19,
e_unk20,
e_unk21,
e_unk22,
e_unk25 = 25,
e_garage,
e_unk27,
e_unk29 = 29,
e_hospital,
e_unk31,
e_unk32,
e_police = 34,
e_unk35,
e_copter,
e_dunecar,
e_jetski,
e_racecar,
e_act2main = 46,
e_act3script,
e_jukeboxw = 53,
e_histbook = 56,
e_unk57,
e_unk58,
e_unk59,
e_unk60,
e_unk61,
e_unk64 = 64,
e_unk66 = 66
};
LegoGameState();
@@ -40,21 +99,21 @@ public:
LegoState* CreateState(const char* p_stateName);
void GetFileSavePath(MxString* p_outPath, MxULong p_slotn);
void StopArea(MxU32 p_area = 0);
void SwitchArea(MxU32 p_area);
void StopArea(Area p_area);
void SwitchArea(Area p_area);
inline MxU8 GetUnknownC() { return m_unk0x0c; }
inline Act GetCurrentAct() { return m_currentAct; }
inline Act GetLoadedAct() { return m_loadedAct; }
inline MxU32 GetCurrentArea() { return m_currentArea; }
inline MxU32 GetPreviousArea() { return m_previousArea; }
inline MxU32 GetUnknown0x42c() { return m_unk0x42c; }
inline Area GetCurrentArea() { return m_currentArea; }
inline Area GetPreviousArea() { return m_previousArea; }
inline Area GetUnknown0x42c() { return m_unk0x42c; }
inline void SetDirty(MxBool p_dirty) { m_isDirty = p_dirty; }
inline void SetCurrentArea(MxU32 p_currentArea) { m_currentArea = p_currentArea; }
inline void SetPreviousArea(MxU32 p_previousArea) { m_previousArea = p_previousArea; }
inline void SetCurrentArea(Area p_currentArea) { m_currentArea = p_currentArea; }
inline void SetPreviousArea(Area p_previousArea) { m_previousArea = p_previousArea; }
inline void SetUnknown0x0c(MxU8 p_unk0x0c) { m_unk0x0c = p_unk0x0c; }
inline void SetUnknown0x42c(undefined4 p_unk0x42c) { m_unk0x42c = p_unk0x42c; }
inline void SetUnknown0x42c(Area p_unk0x42c) { m_unk0x42c = p_unk0x42c; }
void SetCurrentAct(Act p_currentAct);
void FindLoadedAct();
@@ -90,9 +149,9 @@ private:
ScoreStruct m_unk0xa6; // 0xa6
undefined m_unk0x41a[8]; // 0x41a - might be part of the structure at 0xa6
MxBool m_isDirty; // 0x420
MxU32 m_currentArea; // 0x424
MxU32 m_previousArea; // 0x428
undefined4 m_unk0x42c; // 0x42c
Area m_currentArea; // 0x424
Area m_previousArea; // 0x428
Area m_unk0x42c; // 0x42c
};
MxBool ROIHandlerFunction(char* p_input, char* p_output, MxU32 p_copyLen);

View File

@@ -2,6 +2,7 @@
#define POLICE_H
#include "decomp.h"
#include "legogamestate.h"
#include "legoworld.h"
#include "mxdsaction.h"
#include "policestate.h"
@@ -44,9 +45,9 @@ private:
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleKeyPress(LegoEventNotificationParam& p_param);
Radio m_radio; // 0xf8
PoliceState* m_policeState; // 0x108
undefined4 m_transitionDestination; // 0x10c
Radio m_radio; // 0xf8
PoliceState* m_policeState; // 0x108
LegoGameState::Area m_transitionDestination; // 0x10c
};
#endif // POLICE_H

View File

@@ -3,6 +3,7 @@
#include "legocontrolmanager.h"
#include "legoeventnotificationparam.h"
#include "legogamestate.h"
#include "legoworld.h"
#include "mxactionnotificationparam.h"
#include "scorestate.h"
@@ -43,7 +44,7 @@ public:
void FillArea(MxU32 p_x, MxU32 p_y, MxS16 p_color);
protected:
undefined4 m_unk0xf8;
LegoGameState::Area m_unk0xf8;
ScoreState* m_state;
MxU8* m_surface;