From f9b14f0fbc23923f0058ffa0d6abb9a53d821f32 Mon Sep 17 00:00:00 2001 From: jonschz Date: Sun, 2 Feb 2025 10:48:15 +0100 Subject: [PATCH] Clean up, document, add BETA10 references --- LEGO1/lego/legoomni/include/jetski.h | 4 +-- LEGO1/lego/legoomni/include/legoactor.h | 1 + LEGO1/lego/legoomni/include/legogamestate.h | 1 + .../legoomni/src/actors/islepathactor.cpp | 1 + LEGO1/lego/legoomni/src/actors/jetski.cpp | 27 ++++++++++++++----- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/LEGO1/lego/legoomni/include/jetski.h b/LEGO1/lego/legoomni/include/jetski.h index cf2139d5..984c7751 100644 --- a/LEGO1/lego/legoomni/include/jetski.h +++ b/LEGO1/lego/legoomni/include/jetski.h @@ -35,7 +35,7 @@ class Jetski : public IslePathActor { void ActivateSceneActions(); - MxS16 GetUnknown0x160() { return m_unk0x160; } + MxS16 GetUnknown0x160() { return m_jetskiDashboardStreamId; } // SYNTHETIC: LEGO1 0x1007e5c0 // Jetski::`scalar deleting destructor' @@ -43,7 +43,7 @@ class Jetski : public IslePathActor { private: void RemoveFromWorld(); - MxS16 m_unk0x160; // 0x160 + MxS16 m_jetskiDashboardStreamId; // 0x160 }; #endif // JETSKI_H diff --git a/LEGO1/lego/legoomni/include/legoactor.h b/LEGO1/lego/legoomni/include/legoactor.h index 47c399f9..79d8ffeb 100644 --- a/LEGO1/lego/legoomni/include/legoactor.h +++ b/LEGO1/lego/legoomni/include/legoactor.h @@ -58,6 +58,7 @@ class LegoActor : public LegoEntity { virtual MxFloat VTable0x5c() { return m_unk0x70; } // vtable+0x5c // FUNCTION: LEGO1 0x10002d00 + // FUNCTION: BETA10 0x1000f4a0 virtual MxU8 GetActorId() { return m_actorId; } // vtable+0x60 // FUNCTION: LEGO1 0x10002d10 diff --git a/LEGO1/lego/legoomni/include/legogamestate.h b/LEGO1/lego/legoomni/include/legogamestate.h index 291e58d0..8d1d4d61 100644 --- a/LEGO1/lego/legoomni/include/legogamestate.h +++ b/LEGO1/lego/legoomni/include/legogamestate.h @@ -199,6 +199,7 @@ class LegoGameState { void SwitchArea(Area p_area); void Init(); + // FUNCTION: BETA10 0x10083ff5 MxU8 GetActorId() { return m_actorId; } // FUNCTION: BETA10 0x1004a2d0 diff --git a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp index 75e9b03a..e3bbf85f 100644 --- a/LEGO1/lego/legoomni/src/actors/islepathactor.cpp +++ b/LEGO1/lego/legoomni/src/actors/islepathactor.cpp @@ -71,6 +71,7 @@ MxLong IslePathActor::Notify(MxParam& p_param) } // FUNCTION: LEGO1 0x1001a350 +// FUNCTION: BETA10 0x100365ad void IslePathActor::Enter() { m_roi->SetVisibility(FALSE); diff --git a/LEGO1/lego/legoomni/src/actors/jetski.cpp b/LEGO1/lego/legoomni/src/actors/jetski.cpp index 00c85142..b8e36964 100644 --- a/LEGO1/lego/legoomni/src/actors/jetski.cpp +++ b/LEGO1/lego/legoomni/src/actors/jetski.cpp @@ -80,6 +80,7 @@ void Jetski::Exit() // FUNCTION: BETA10 0x10037621 MxLong Jetski::HandleClick() { +#ifndef BETA10 if (!FUN_1003ef60()) { return 1; } @@ -92,27 +93,41 @@ MxLong Jetski::HandleClick() if (GameState()->GetActorId() != UserActor()->GetActorId()) { ((IslePathActor*) UserActor())->Exit(); } +#endif - MxS32 local8 = DuneBuggy::GetColorOffset(g_varJSWNSHY5); - m_unk0x160 = 10 * (local8 + 3); - MxS32 local1c = DuneBuggy::GetColorOffset(g_varJSFRNTY5); - m_unk0x160 += local1c; + // Selects the windshield from `IsleScript::c_JetskiDashboard11_Bitmap` (=41) + // to `IsleScript::c_JetskiDashboard66_Bitmap` based on the user's color selection + MxS32 colorOffset = DuneBuggy::GetColorOffset(g_varJSWNSHY5); + m_jetskiDashboardStreamId = 10 * (colorOffset + 3); + colorOffset = DuneBuggy::GetColorOffset(g_varJSFRNTY5); + m_jetskiDashboardStreamId += colorOffset; - InvokeAction(Extra::ActionType::e_start, *g_isleScript, m_unk0x160, NULL); + InvokeAction(Extra::ActionType::e_start, *g_isleScript, m_jetskiDashboardStreamId, NULL); InvokeAction(Extra::ActionType::e_start, *g_isleScript, IsleScript::c_JetskiDashboard, NULL); + +#ifdef BETA10 + if (UserActor()->GetActorId() != GameState()->GetActorId()) { + ((IslePathActor*)UserActor())->Exit(); + } + Enter(); + ControlManager()->Register(this); + PlayCamAnim(this, FALSE, 0x44, TRUE); +#else GetCurrentAction().SetObjectId(-1); AnimationManager()->FUN_1005f6d0(FALSE); AnimationManager()->FUN_10064670(NULL); Enter(); ControlManager()->Register(this); +#endif + return 1; } // FUNCTION: LEGO1 0x1007e880 void Jetski::RemoveFromWorld() { - RemoveFromCurrentWorld(*g_isleScript, m_unk0x160); + RemoveFromCurrentWorld(*g_isleScript, m_jetskiDashboardStreamId); RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_JetskiArms_Ctl); RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_JetskiInfo_Ctl); RemoveFromCurrentWorld(*g_isleScript, IsleScript::c_JetskiSpeedMeter);