mirror of
https://github.com/isledecomp/isle.git
synced 2026-05-02 04:53:57 +00:00
Clear unknowns in LegoPathStruct
This commit is contained in:
parent
2c20492bf6
commit
e5f9888aea
@ -94,8 +94,8 @@ class LegoPathStruct : public LegoPathStructBase {
|
|||||||
void SetAtomId(const MxAtomId& p_atomId) { m_atomId = p_atomId; }
|
void SetAtomId(const MxAtomId& p_atomId) { m_atomId = p_atomId; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxBool HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data, MxBool p_bool);
|
MxBool HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data, MxBool p_invertDirection);
|
||||||
void FUN_1001bc40(const char* p_name, MxU32 p_data, MxBool p_bool);
|
void HandleAction(const char* p_name, MxU32 p_data, MxBool p_start);
|
||||||
void PlayMusic(MxBool p_direction, MxU32 p_data);
|
void PlayMusic(MxBool p_direction, MxU32 p_data);
|
||||||
|
|
||||||
LegoWorld* m_world; // 0x0c
|
LegoWorld* m_world; // 0x0c
|
||||||
|
|||||||
@ -19,24 +19,24 @@ DECOMP_SIZE_ASSERT(LegoPathStruct, 0x14)
|
|||||||
extern MxU32 g_isleFlags;
|
extern MxU32 g_isleFlags;
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f119c
|
// GLOBAL: LEGO1 0x100f119c
|
||||||
MxBool g_unk0x100f119c = FALSE;
|
MxBool g_alsoInvertDirection = FALSE;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001b700
|
// FUNCTION: LEGO1 0x1001b700
|
||||||
void LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data)
|
void LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data)
|
||||||
{
|
{
|
||||||
if (!HandleTrigger(p_actor, p_direction, p_data, FALSE) && g_unk0x100f119c) {
|
if (!HandleTrigger(p_actor, p_direction, p_data, FALSE) && g_alsoInvertDirection) {
|
||||||
HandleTrigger(p_actor, p_direction, p_data, TRUE);
|
HandleTrigger(p_actor, p_direction, p_data, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001b740
|
// FUNCTION: LEGO1 0x1001b740
|
||||||
// FUNCTION: BETA10 0x100c26c5
|
// FUNCTION: BETA10 0x100c26c5
|
||||||
MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data, MxBool p_bool)
|
MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data, MxBool p_invertDirection)
|
||||||
{
|
{
|
||||||
MxBool triggered = FALSE;
|
MxBool triggered = FALSE;
|
||||||
MxBool bool2 = p_bool ? !p_direction : p_direction;
|
MxBool actualDirection = p_invertDirection ? !p_direction : p_direction;
|
||||||
|
|
||||||
MxU32 flags = bool2 ? c_bit5 : c_bit6;
|
MxU32 flags = actualDirection ? c_bit5 : c_bit6;
|
||||||
flags |= p_actor->GetCameraFlag() ? c_bit1 : (c_bit2 | c_bit3 | c_bit4);
|
flags |= p_actor->GetCameraFlag() ? c_bit1 : (c_bit2 | c_bit3 | c_bit4);
|
||||||
|
|
||||||
if ((m_flags & flags & (c_bit5 | c_bit6 | c_bit7)) && (m_flags & flags & (c_bit1 | c_bit2 | c_bit3 | c_bit4))) {
|
if ((m_flags & flags & (c_bit5 | c_bit6 | c_bit7)) && (m_flags & flags & (c_bit1 | c_bit2 | c_bit3 | c_bit4))) {
|
||||||
@ -45,7 +45,7 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
|
|||||||
switch (m_name[2]) {
|
switch (m_name[2]) {
|
||||||
case c_camAnim:
|
case c_camAnim:
|
||||||
if (g_isleFlags & Isle::c_playCamAnims) {
|
if (g_isleFlags & Isle::c_playCamAnims) {
|
||||||
PlayCamAnim(p_actor, bool2, p_data, TRUE);
|
PlayCamAnim(p_actor, actualDirection, p_data, TRUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case c_d: {
|
case c_d: {
|
||||||
@ -61,7 +61,7 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case c_e:
|
case c_e:
|
||||||
FUN_1001bc40(m_name, p_data, !(p_bool == FALSE));
|
HandleAction(m_name, p_data, !(p_invertDirection == FALSE));
|
||||||
break;
|
break;
|
||||||
case c_g:
|
case c_g:
|
||||||
break;
|
break;
|
||||||
@ -87,7 +87,7 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FUN_1001bc40(m_name, p_data, p_bool == FALSE);
|
HandleAction(m_name, p_data, p_invertDirection == FALSE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case c_w: {
|
case c_w: {
|
||||||
@ -106,13 +106,13 @@ MxBool LegoPathStruct::HandleTrigger(LegoPathActor* p_actor, MxBool p_direction,
|
|||||||
|
|
||||||
// FUNCTION: LEGO1 0x1001bc40
|
// FUNCTION: LEGO1 0x1001bc40
|
||||||
// FUNCTION: BETA10 0x100c2a6c
|
// FUNCTION: BETA10 0x100c2a6c
|
||||||
void LegoPathStruct::FUN_1001bc40(const char* p_name, MxU32 p_data, MxBool p_bool)
|
void LegoPathStruct::HandleAction(const char* p_name, MxU32 p_data, MxBool p_start)
|
||||||
{
|
{
|
||||||
MxDSAction action;
|
MxDSAction action;
|
||||||
action.SetObjectId(p_data);
|
action.SetObjectId(p_data);
|
||||||
action.SetAtomId(m_atomId);
|
action.SetAtomId(m_atomId);
|
||||||
|
|
||||||
if (p_bool) {
|
if (p_start) {
|
||||||
action.SetUnknown24(-1);
|
action.SetUnknown24(-1);
|
||||||
Start(&action);
|
Start(&action);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
#include "scripts.h"
|
#include "scripts.h"
|
||||||
|
|
||||||
// Defined in legopathstruct.cpp
|
// Defined in legopathstruct.cpp
|
||||||
extern MxBool g_unk0x100f119c;
|
extern MxBool g_alsoInvertDirection;
|
||||||
|
|
||||||
// Defined in jetski.cpp
|
// Defined in jetski.cpp
|
||||||
extern const char* g_varJSFRNTY5;
|
extern const char* g_varJSFRNTY5;
|
||||||
@ -70,7 +70,7 @@ MxResult JetskiRace::Create(MxDSAction& p_dsAction)
|
|||||||
InvokeAction(Extra::e_start, m_atomId, raceCarDashboardStreamId, NULL);
|
InvokeAction(Extra::e_start, m_atomId, raceCarDashboardStreamId, NULL);
|
||||||
InvokeAction(Extra::e_start, m_atomId, JetraceScript::c_JetskiDashboard, NULL);
|
InvokeAction(Extra::e_start, m_atomId, JetraceScript::c_JetskiDashboard, NULL);
|
||||||
|
|
||||||
g_unk0x100f119c = TRUE;
|
g_alsoInvertDirection = TRUE;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ DECOMP_SIZE_ASSERT(RaceState::Entry, 0x06)
|
|||||||
DECOMP_SIZE_ASSERT(RaceState, 0x2c)
|
DECOMP_SIZE_ASSERT(RaceState, 0x2c)
|
||||||
|
|
||||||
// Defined in legopathstruct.cpp
|
// Defined in legopathstruct.cpp
|
||||||
extern MxBool g_unk0x100f119c;
|
extern MxBool g_alsoInvertDirection;
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10015aa0
|
// FUNCTION: LEGO1 0x10015aa0
|
||||||
LegoRace::LegoRace()
|
LegoRace::LegoRace()
|
||||||
@ -56,7 +56,7 @@ MxResult LegoRace::Create(MxDSAction& p_dsAction)
|
|||||||
// FUNCTION: BETA10 0x100c7ab5
|
// FUNCTION: BETA10 0x100c7ab5
|
||||||
LegoRace::~LegoRace()
|
LegoRace::~LegoRace()
|
||||||
{
|
{
|
||||||
g_unk0x100f119c = FALSE;
|
g_alsoInvertDirection = FALSE;
|
||||||
if (m_pathActor) {
|
if (m_pathActor) {
|
||||||
SetUserActor(m_pathActor);
|
SetUserActor(m_pathActor);
|
||||||
NavController()->ResetMaxLinearVel(m_pathActor->GetMaxLinearVel());
|
NavController()->ResetMaxLinearVel(m_pathActor->GetMaxLinearVel());
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user