Implement/match Isle::HandleEndAction and Isle::HandleElevatorEndAction (#691)

* WIP

* Match
This commit is contained in:
Christian Semmler
2024-03-18 15:00:58 -04:00
committed by GitHub
parent d96679ea9e
commit 52d74647be
11 changed files with 149 additions and 46 deletions

View File

@@ -101,7 +101,7 @@ protected:
MxS32 m_unk0x014; // 0x014
MxU32 m_unk0x018; // 0x018
MxS16 m_elevFloor; // 0x01c
undefined m_unk0x01e; // 0x01e
MxBool m_unk0x01e; // 0x01e
MxBool m_unk0x01f; // 0x01f
MxBool m_planeActive; // 0x020
undefined m_unk0x021; // 0x021

View File

@@ -78,10 +78,11 @@ public:
void Enable(MxBool p_enable) override; // vtable+68
virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c
MxLong StopAction(MxParam& p_param);
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
MxLong HandleClick(LegoControlManagerEvent& p_param);
MxLong HandleType19Notification(MxParam& p_param);
MxLong HandleTransitionEnd();
void HandleElevatorEndAction();
void FUN_10031590();
void FUN_10032620();
void FUN_100330e0();

View File

@@ -3,6 +3,15 @@
#include "legoentity.h"
namespace JukeboxScript
{
#ifdef COMPAT_MODE
enum Script : int;
#else
enum Script;
#endif
} // namespace JukeboxScript
// VTABLE: LEGO1 0x100da8a0
// SIZE 0x6c
class JukeBoxEntity : public LegoEntity {
@@ -26,7 +35,7 @@ public:
}
void StartAction();
void StopAction(MxU32 p_state);
void StopAction(JukeboxScript::Script p_script);
inline MxBool IsBackgroundAudioEnabled() { return m_audioEnabled; }

View File

@@ -17,6 +17,15 @@ struct ColorStringStruct {
const char* m_colorName;
};
namespace JukeboxScript
{
#ifdef COMPAT_MODE
enum Script : int;
#else
enum Script;
#endif
} // namespace JukeboxScript
// SIZE 0x430
class LegoGameState {
public:
@@ -159,7 +168,7 @@ public:
inline Act GetLoadedAct() { return m_loadedAct; }
inline Area GetCurrentArea() { return m_currentArea; }
inline Area GetPreviousArea() { return m_previousArea; }
inline MxU32 GetUnknown0x41c() { return m_unk0x41c; }
inline JukeboxScript::Script GetUnknown0x41c() { return m_unk0x41c; }
inline Area GetUnknown0x42c() { return m_unk0x42c; }
inline History* GetHistory() { return &m_history; }
@@ -167,7 +176,7 @@ public:
inline void SetCurrentArea(Area p_currentArea) { m_currentArea = p_currentArea; }
inline void SetPreviousArea(Area p_previousArea) { m_previousArea = p_previousArea; }
inline void SetActorId(MxU8 p_actorId) { m_actorId = p_actorId; }
inline void SetUnknown0x41c(undefined4 p_unk0x41c) { m_unk0x41c = p_unk0x41c; }
inline void SetUnknown0x41c(JukeboxScript::Script p_unk0x41c) { m_unk0x41c = p_unk0x41c; }
inline void SetUnknown0x42c(Area p_unk0x42c) { m_unk0x42c = p_unk0x42c; }
inline Username* GetPlayersIndex(MxS32 p_index) { return &m_players[p_index]; }
inline MxS16 GetPlayerCount() { return m_playerCount; }
@@ -202,10 +211,10 @@ public:
Username m_players[9]; // 0x28
private:
History m_history; // 0xa6
undefined2 m_unk0x41a; // 0x41a
undefined4 m_unk0x41c; // 0x41c
MxBool m_isDirty; // 0x420
History m_history; // 0xa6
undefined2 m_unk0x41a; // 0x41a
JukeboxScript::Script m_unk0x41c; // 0x41c
MxBool m_isDirty; // 0x420
public:
Area m_currentArea; // 0x424