Fixes/matches/refactor

This commit is contained in:
Christian Semmler 2024-02-26 11:02:05 -05:00
parent 1e4c939db9
commit 5b53446ea5
13 changed files with 126 additions and 109 deletions

View File

@ -90,7 +90,7 @@ class LegoGameState {
// SIZE 0x0c // SIZE 0x0c
struct Username { struct Username {
Username(); Username();
MxResult ReadWrite(LegoStorage* p_stream); MxResult ReadWrite(LegoStorage* p_storage);
Username* operator=(const Username* p_other); Username* operator=(const Username* p_other);
MxS16 m_letters[7]; // 0x00 MxS16 m_letters[7]; // 0x00
@ -151,14 +151,14 @@ class LegoGameState {
void SetCurrentAct(Act p_currentAct); void SetCurrentAct(Act p_currentAct);
void FindLoadedAct(); void FindLoadedAct();
void SetVehicle(MxU8 p_actorId); void SetActor(MxU8 p_actorId);
void FUN_10039940(); void FUN_10039940();
private: private:
void RegisterState(LegoState* p_state); void RegisterState(LegoState* p_state);
MxResult WriteVariable(LegoStorage* p_stream, MxVariableTable* p_from, const char* p_variableName); MxResult WriteVariable(LegoStorage* p_storage, MxVariableTable* p_from, const char* p_variableName);
MxResult WriteEndOfVariables(LegoStorage* p_stream); MxResult WriteEndOfVariables(LegoStorage* p_storage);
MxS32 ReadVariable(LegoStorage* p_stream, MxVariableTable* p_to); MxS32 ReadVariable(LegoStorage* p_storage, MxVariableTable* p_to);
void SetColors(); void SetColors();
void SetROIHandlerFunction(); void SetROIHandlerFunction();
@ -185,4 +185,7 @@ class LegoGameState {
MxBool ROIHandlerFunction(char* p_input, char* p_output, MxU32 p_copyLen); MxBool ROIHandlerFunction(char* p_input, char* p_output, MxU32 p_copyLen);
// SYNTHETIC: LEGO1 0x1003c860
// LegoGameState::ScoreItem::ScoreItem
#endif // LEGOGAMESTATE_H #endif // LEGOGAMESTATE_H

View File

@ -216,7 +216,7 @@ class LegoOmni : public MxOmni {
ViewLODListManager* GetViewLODListManager() { return m_viewLODListManager; } ViewLODListManager* GetViewLODListManager() { return m_viewLODListManager; }
LegoWorld* GetCurrentWorld() { return m_currentWorld; } LegoWorld* GetCurrentWorld() { return m_currentWorld; }
LegoNavController* GetNavController() { return m_navController; } LegoNavController* GetNavController() { return m_navController; }
IslePathActor* GetCurrentVehicle() { return m_currentVehicle; } IslePathActor* GetCurrentActor() { return m_currentActor; }
LegoPlantManager* GetLegoPlantManager() { return m_plantManager; } LegoPlantManager* GetLegoPlantManager() { return m_plantManager; }
LegoAnimationManager* GetAnimationManager() { return m_animationManager; } LegoAnimationManager* GetAnimationManager() { return m_animationManager; }
LegoBuildingManager* GetLegoBuildingManager() { return m_buildingManager; } LegoBuildingManager* GetLegoBuildingManager() { return m_buildingManager; }
@ -228,7 +228,7 @@ class LegoOmni : public MxOmni {
LegoWorldList* GetWorldList() { return m_worldList; } LegoWorldList* GetWorldList() { return m_worldList; }
inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; } inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; }
inline void SetCurrentVehicle(IslePathActor* p_currentVehicle) { m_currentVehicle = p_currentVehicle; } inline void SetCurrentActor(IslePathActor* p_currentActor) { m_currentActor = p_currentActor; }
inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; } inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; }
inline void SetExit(MxBool p_exit) { m_exit = p_exit; } inline void SetExit(MxBool p_exit) { m_exit = p_exit; }
@ -246,7 +246,7 @@ class LegoOmni : public MxOmni {
LegoWorld* m_currentWorld; // 0x7c LegoWorld* m_currentWorld; // 0x7c
MxBool m_exit; // 0x80 MxBool m_exit; // 0x80
LegoNavController* m_navController; // 0x84 LegoNavController* m_navController; // 0x84
IslePathActor* m_currentVehicle; // 0x88 IslePathActor* m_currentActor; // 0x88
LegoUnkSaveDataWriter* m_saveDataWriter; // 0x8c LegoUnkSaveDataWriter* m_saveDataWriter; // 0x8c
LegoPlantManager* m_plantManager; // 0x90 LegoPlantManager* m_plantManager; // 0x90
LegoAnimationManager* m_animationManager; // 0x94 LegoAnimationManager* m_animationManager; // 0x94
@ -272,7 +272,7 @@ LegoAnimationManager* AnimationManager();
LegoNavController* NavController(); LegoNavController* NavController();
LegoBuildingManager* BuildingManager(); LegoBuildingManager* BuildingManager();
LegoControlManager* ControlManager(); LegoControlManager* ControlManager();
IslePathActor* CurrentVehicle(); IslePathActor* CurrentActor();
ViewManager* GetViewManager(); ViewManager* GetViewManager();
LegoPlantManager* PlantManager(); LegoPlantManager* PlantManager();
LegoWorld* CurrentWorld(); LegoWorld* CurrentWorld();
@ -281,7 +281,7 @@ LegoTextureContainer* TextureContainer();
ViewLODListManager* GetViewLODListManager(); ViewLODListManager* GetViewLODListManager();
void FUN_10015820(MxBool p_disable, MxU16 p_flags); void FUN_10015820(MxBool p_disable, MxU16 p_flags);
void SetROIUnknown0x0c(const char* p_name, undefined p_unk0x0c); void SetROIUnknown0x0c(const char* p_name, undefined p_unk0x0c);
void SetCurrentVehicle(IslePathActor* p_currentVehicle); void SetCurrentActor(IslePathActor* p_currentActor);
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid); LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
LegoROI* FindROI(const char* p_name); LegoROI* FindROI(const char* p_name);
MxDSAction& GetCurrentAction(); MxDSAction& GetCurrentAction();

View File

@ -55,7 +55,7 @@ class LegoUnkSaveDataWriter {
public: public:
LegoUnkSaveDataWriter(); LegoUnkSaveDataWriter();
MxResult WriteSaveData3(LegoStorage* p_stream); MxResult WriteSaveData3(LegoStorage* p_storage);
LegoROI* FUN_10083500(const char*, MxBool); LegoROI* FUN_10083500(const char*, MxBool);
static void InitSaveData(); static void InitSaveData();

View File

@ -67,9 +67,9 @@ void Helicopter::VTable0xe4()
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) { if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
GameState()->SetCurrentArea(LegoGameState::e_unk60); GameState()->SetCurrentArea(LegoGameState::e_unk60);
if (CurrentVehicle()) { if (CurrentActor()) {
if (CurrentVehicle()->IsA("IslePathActor")) { if (CurrentActor()->IsA("IslePathActor")) {
((IslePathActor*) CurrentVehicle())->VTable0xe8(0x37, TRUE, 7); ((IslePathActor*) CurrentActor())->VTable0xe8(0x37, TRUE, 7);
} }
} }
} }
@ -102,9 +102,9 @@ MxU32 Helicopter::VTable0xcc()
AnimationManager()->FUN_1005f6d0(FALSE); AnimationManager()->FUN_1005f6d0(FALSE);
if (CurrentVehicle()) { if (CurrentActor()) {
if (CurrentVehicle()->GetActorId() != GameState()->GetActorId()) { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
CurrentVehicle()->VTable0xe4(); CurrentActor()->VTable0xe4();
} }
} }

View File

@ -85,10 +85,10 @@ LegoGameState::LegoGameState()
m_savePath = NULL; m_savePath = NULL;
m_stateArray = NULL; m_stateArray = NULL;
m_unk0x41c = -1; m_unk0x41c = -1;
m_unk0x26 = 0;
m_currentArea = e_noArea; m_currentArea = e_noArea;
m_previousArea = e_noArea; m_previousArea = e_noArea;
m_unk0x42c = e_noArea; m_unk0x42c = e_noArea;
m_unk0x26 = 0;
m_isDirty = FALSE; m_isDirty = FALSE;
m_loadedAct = e_actNotFound; m_loadedAct = e_actNotFound;
SetCurrentAct(e_act1); SetCurrentAct(e_act1);
@ -96,7 +96,7 @@ LegoGameState::LegoGameState()
m_backgroundColor = new LegoBackgroundColor("backgroundcolor", "set 56 54 68"); m_backgroundColor = new LegoBackgroundColor("backgroundcolor", "set 56 54 68");
VariableTable()->SetVariable(m_backgroundColor); VariableTable()->SetVariable(m_backgroundColor);
m_tempBackgroundColor = new LegoBackgroundColor("tempBackgroundcolor", "set 56 54 68"); m_tempBackgroundColor = new LegoBackgroundColor("tempBackgroundColor", "set 56 54 68");
VariableTable()->SetVariable(m_tempBackgroundColor); VariableTable()->SetVariable(m_tempBackgroundColor);
m_fullScreenMovie = new LegoFullScreenMovie("fsmovie", "disable"); m_fullScreenMovie = new LegoFullScreenMovie("fsmovie", "disable");
@ -126,28 +126,34 @@ LegoGameState::~LegoGameState()
} }
// FUNCTION: LEGO1 0x10039780 // FUNCTION: LEGO1 0x10039780
void LegoGameState::SetVehicle(MxU8 p_actorId) void LegoGameState::SetActor(MxU8 p_actorId)
{ {
if (p_actorId) { if (p_actorId) {
m_actorId = p_actorId; m_actorId = p_actorId;
} }
IslePathActor* oldVehicle = CurrentVehicle();
SetCurrentVehicle(NULL); IslePathActor* oldActor = CurrentActor();
IslePathActor* newVehicle = new IslePathActor(); SetCurrentActor(NULL);
LegoROI* roi = UnkSaveDataWriter()->FUN_10083500(LegoActor::GetActorName(m_actorId), FALSE);
IslePathActor* newActor = new IslePathActor();
const char* actorName = LegoActor::GetActorName(m_actorId);
LegoROI* roi = UnkSaveDataWriter()->FUN_10083500(actorName, FALSE);
MxDSAction action; MxDSAction action;
action.SetAtomId(*g_isleScript); action.SetAtomId(*g_isleScript);
action.SetObjectId(100000); action.SetObjectId(100000);
newVehicle->Create(action); newActor->Create(action);
newVehicle->SetActorId(p_actorId); newActor->SetActorId(p_actorId);
newVehicle->SetROI(roi, FALSE, FALSE); newActor->SetROI(roi, FALSE, FALSE);
if (oldVehicle) {
newVehicle->GetROI()->FUN_100a58f0(oldVehicle->GetROI()->GetLocal2World()); if (oldActor) {
newVehicle->SetUnknown88(oldVehicle->GetUnknown88()); newActor->GetROI()->FUN_100a58f0(oldActor->GetROI()->GetLocal2World());
delete oldVehicle; newActor->SetUnknown88(oldActor->GetUnknown88());
delete oldActor;
} }
newVehicle->ClearFlag(0x2);
SetCurrentVehicle(newVehicle); newActor->ClearFlag(0x02);
SetCurrentActor(newActor);
} }
// STUB: LEGO1 0x10039940 // STUB: LEGO1 0x10039940
@ -221,55 +227,58 @@ void LegoGameState::SetSavePath(char* p_savePath)
} }
// FUNCTION: LEGO1 0x10039f70 // FUNCTION: LEGO1 0x10039f70
MxResult LegoGameState::WriteVariable(LegoStorage* p_stream, MxVariableTable* p_from, const char* p_variableName) MxResult LegoGameState::WriteVariable(LegoStorage* p_storage, MxVariableTable* p_from, const char* p_variableName)
{ {
MxResult result = FAILURE; MxResult result = FAILURE;
const char* variableValue = p_from->GetVariable(p_variableName); const char* variableValue = p_from->GetVariable(p_variableName);
if (variableValue) { if (variableValue) {
MxU8 length = strlen(p_variableName); MxU8 length = strlen(p_variableName);
if (p_stream->Write((char*) &length, 1) == SUCCESS) { if (p_storage->Write((char*) &length, 1) == SUCCESS) {
if (p_stream->Write(p_variableName, length) == SUCCESS) { if (p_storage->Write(p_variableName, length) == SUCCESS) {
length = strlen(variableValue); length = strlen(variableValue);
if (p_stream->Write((char*) &length, 1) == SUCCESS) { if (p_storage->Write((char*) &length, 1) == SUCCESS) {
result = p_stream->Write((char*) variableValue, length); result = p_storage->Write((char*) variableValue, length);
} }
} }
} }
} }
return result; return result;
} }
// FUNCTION: LEGO1 0x1003a020 // FUNCTION: LEGO1 0x1003a020
MxResult LegoGameState::WriteEndOfVariables(LegoStorage* p_stream) MxResult LegoGameState::WriteEndOfVariables(LegoStorage* p_storage)
{ {
MxU8 len = strlen(g_endOfVariables); MxU8 len = strlen(g_endOfVariables);
if (p_stream->Write(&len, 1) == SUCCESS) {
return p_stream->Write(g_endOfVariables, len); if (p_storage->Write(&len, 1) == SUCCESS) {
return p_storage->Write(g_endOfVariables, len);
} }
return FAILURE; return FAILURE;
} }
// 95% match, just some instruction ordering differences on the call to // 95% match, just some instruction ordering differences on the call to
// MxVariableTable::SetVariable at the end. // MxVariableTable::SetVariable at the end.
// FUNCTION: LEGO1 0x1003a080 // FUNCTION: LEGO1 0x1003a080
MxS32 LegoGameState::ReadVariable(LegoStorage* p_stream, MxVariableTable* p_to) MxS32 LegoGameState::ReadVariable(LegoStorage* p_storage, MxVariableTable* p_to)
{ {
MxS32 result = 1; MxS32 result = 1;
MxU8 length; MxU8 length;
if (p_stream->Read((char*) &length, 1) == SUCCESS) { if (p_storage->Read((char*) &length, 1) == SUCCESS) {
char nameBuffer[256]; char nameBuffer[256];
if (p_stream->Read(nameBuffer, length) == SUCCESS) { if (p_storage->Read(nameBuffer, length) == SUCCESS) {
nameBuffer[length] = '\0'; nameBuffer[length] = '\0';
if (strcmp(nameBuffer, g_endOfVariables) == 0) { if (strcmp(nameBuffer, g_endOfVariables) == 0) {
// 2 -> "This was the last entry, done reading." // 2 -> "This was the last entry, done reading."
result = 2; result = 2;
} }
else { else {
if (p_stream->Read((char*) &length, 1) == SUCCESS) { if (p_storage->Read((char*) &length, 1) == SUCCESS) {
char valueBuffer[256]; char valueBuffer[256];
if (p_stream->Read(valueBuffer, length) == SUCCESS) { if (p_storage->Read(valueBuffer, length) == SUCCESS) {
result = 0; result = 0;
valueBuffer[length] = '\0'; valueBuffer[length] = '\0';
p_to->SetVariable(nameBuffer, valueBuffer); p_to->SetVariable(nameBuffer, valueBuffer);
@ -278,6 +287,7 @@ MxS32 LegoGameState::ReadVariable(LegoStorage* p_stream, MxVariableTable* p_to)
} }
} }
} }
return result; return result;
} }
@ -590,7 +600,7 @@ void LegoGameState::SwitchArea(Area p_area)
case e_garadoor: case e_garadoor:
LoadIsle(); LoadIsle();
VariableTable()->SetVariable("VISIBILITY", "Hide Gas"); VariableTable()->SetVariable("VISIBILITY", "Hide Gas");
CurrentVehicle()->ResetWorldTransform(FALSE); CurrentActor()->ResetWorldTransform(FALSE);
NavController()->SetLocation(0x3b); NavController()->SetLocation(0x3b);
VideoManager()->Get3DManager()->SetFrustrum(90, 0.1f, 250.0f); VideoManager()->Get3DManager()->SetFrustrum(90, 0.1f, 250.0f);
InvokeAction(Extra::ActionType::e_start, *g_isleScript, 1160, NULL); InvokeAction(Extra::ActionType::e_start, *g_isleScript, 1160, NULL);
@ -603,10 +613,10 @@ void LegoGameState::SwitchArea(Area p_area)
} }
else { else {
SetCameraControllerFromIsle(); SetCameraControllerFromIsle();
CurrentVehicle()->ResetWorldTransform(TRUE); CurrentActor()->ResetWorldTransform(TRUE);
AnimationManager()->FUN_1005f0b0(); AnimationManager()->FUN_1005f0b0();
} }
CurrentVehicle()->VTable0xe8(p_area, TRUE, 7); CurrentActor()->VTable0xe8(p_area, TRUE, 7);
break; break;
} }
case e_hospital: case e_hospital:
@ -616,9 +626,9 @@ void LegoGameState::SwitchArea(Area p_area)
case e_unk33: case e_unk33:
LoadIsle(); LoadIsle();
SetCameraControllerFromIsle(); SetCameraControllerFromIsle();
CurrentVehicle()->ResetWorldTransform(TRUE); CurrentActor()->ResetWorldTransform(TRUE);
AnimationManager()->FUN_1005f0b0(); AnimationManager()->FUN_1005f0b0();
CurrentVehicle()->VTable0xe8(p_area, TRUE, 7); CurrentActor()->VTable0xe8(p_area, TRUE, 7);
break; break;
case e_police: case e_police:
VideoManager()->SetUnk0x554(TRUE); VideoManager()->SetUnk0x554(TRUE);
@ -683,9 +693,10 @@ void LegoGameState::SwitchArea(Area p_area)
// FUNCTION: LEGO1 0x1003ba90 // FUNCTION: LEGO1 0x1003ba90
void LegoGameState::SetColors() void LegoGameState::SetColors()
{ {
MxVariableTable* variables = VariableTable(); MxVariableTable* variableTable = VariableTable();
for (int i = 0; i < _countof(g_colorSaveData); i++) {
variables->SetVariable(g_colorSaveData[i].m_targetName, g_colorSaveData[i].m_colorName); for (MxS32 i = 0; i < _countof(g_colorSaveData); i++) {
variableTable->SetVariable(g_colorSaveData[i].m_targetName, g_colorSaveData[i].m_colorName);
} }
} }
@ -768,22 +779,24 @@ void LegoGameState::RegisterState(LegoState* p_state)
// FUNCTION: LEGO1 0x1003c670 // FUNCTION: LEGO1 0x1003c670
LegoGameState::Username::Username() LegoGameState::Username::Username()
{ {
memset(m_letters, 0, sizeof(m_letters)); memset(m_letters, -1, sizeof(m_letters));
} }
// FUNCTION: LEGO1 0x1003c690 // FUNCTION: LEGO1 0x1003c690
MxResult LegoGameState::Username::ReadWrite(LegoStorage* p_stream) MxResult LegoGameState::Username::ReadWrite(LegoStorage* p_storage)
{ {
if (p_stream->IsReadMode()) { if (p_storage->IsReadMode()) {
for (MxS16 i = 0; i < 7; i++) { for (MxS16 i = 0; i < 7; i++) {
p_stream->Read(&m_letters[i], 2); p_storage->Read(&m_letters[i], sizeof(m_letters[i]));
} }
} }
else if (p_stream->IsWriteMode()) { else if (p_storage->IsWriteMode()) {
for (MxS16 i = 0; i < 7; i++) { for (MxS16 i = 0; i < 7; i++) {
p_stream->Write(&m_letters[i], 2); MxS16 letter = m_letters[i];
p_storage->Write(&letter, sizeof(letter));
} }
} }
return SUCCESS; return SUCCESS;
} }

View File

@ -41,7 +41,7 @@ void LegoUnkSaveDataWriter::FUN_100832a0()
} }
// FUNCTION: LEGO1 0x10083310 // FUNCTION: LEGO1 0x10083310
MxResult LegoUnkSaveDataWriter::WriteSaveData3(LegoStorage* p_stream) MxResult LegoUnkSaveDataWriter::WriteSaveData3(LegoStorage* p_storage)
{ {
MxResult result = FAILURE; MxResult result = FAILURE;
@ -51,34 +51,34 @@ MxResult LegoUnkSaveDataWriter::WriteSaveData3(LegoStorage* p_stream)
const LegoSaveDataEntry3* end = &g_saveData3[66]; const LegoSaveDataEntry3* end = &g_saveData3[66];
while (TRUE) { while (TRUE) {
if (p_stream->Write(&entry->m_savePart1, 4) != SUCCESS) { if (p_storage->Write(&entry->m_savePart1, 4) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart2, 4) != SUCCESS) { if (p_storage->Write(&entry->m_savePart2, 4) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart3, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart3, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_currentFrame, 1) != SUCCESS) { if (p_storage->Write(&entry->m_currentFrame, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart5, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart5, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart6, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart6, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart7, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart7, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart8, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart8, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart9, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart9, 1) != SUCCESS) {
break; break;
} }
if (p_stream->Write(&entry->m_savePart10, 1) != SUCCESS) { if (p_storage->Write(&entry->m_savePart10, 1) != SUCCESS) {
break; break;
} }
if (++entry >= end) { if (++entry >= end) {
@ -86,6 +86,7 @@ MxResult LegoUnkSaveDataWriter::WriteSaveData3(LegoStorage* p_stream)
break; break;
} }
} }
return result; return result;
} }

View File

@ -588,10 +588,10 @@ void LegoWorld::Enable(MxBool p_enable)
else if (!p_enable && m_set0xd0.empty()) { else if (!p_enable && m_set0xd0.empty()) {
MxPresenter* presenter; MxPresenter* presenter;
LegoPathController* controller; LegoPathController* controller;
IslePathActor* vehicle = CurrentVehicle(); IslePathActor* actor = CurrentActor();
if (vehicle) { if (actor) {
FUN_1001fc80(vehicle); FUN_1001fc80(actor);
} }
AnimationManager()->FUN_1005ee80(FALSE); AnimationManager()->FUN_1005ee80(FALSE);

View File

@ -201,7 +201,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
if (!m_unk0x1d4) { if (!m_unk0x1d4) {
PlayMusic(JukeBox::e_informationCenter); PlayMusic(JukeBox::e_informationCenter);
GameState()->SetVehicle(m_selectedCharacter); GameState()->SetActor(m_selectedCharacter);
switch (m_selectedCharacter) { switch (m_selectedCharacter) {
case e_pepper: case e_pepper:
@ -303,7 +303,7 @@ MxLong Infocenter::HandleEndAction(MxEndActionNotificationParam& p_param)
case 5: case 5:
if (action->GetObjectId() == m_currentInfomainScript) { if (action->GetObjectId() == m_currentInfomainScript) {
if (GameState()->GetCurrentAct() != LegoGameState::e_act3 && m_selectedCharacter != e_noCharacter) { if (GameState()->GetCurrentAct() != LegoGameState::e_act3 && m_selectedCharacter != e_noCharacter) {
GameState()->SetVehicle(m_selectedCharacter); GameState()->SetActor(m_selectedCharacter);
} }
TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE); TransitionManager()->StartTransition(MxTransitionManager::e_pixelation, 50, FALSE, FALSE);
m_infocenterState->SetUnknown0x74(14); m_infocenterState->SetUnknown0x74(14);
@ -734,7 +734,7 @@ MxU8 Infocenter::HandleButtonUp(MxS32 p_x, MxS32 p_y)
switch (m_mapAreas[m_unk0x1c8].m_unk0x04) { switch (m_mapAreas[m_unk0x1c8].m_unk0x04) {
case 3: case 3:
GameState()->SetVehicle(m_selectedCharacter); GameState()->SetActor(m_selectedCharacter);
switch (m_selectedCharacter) { switch (m_selectedCharacter) {
case e_pepper: case e_pepper:
@ -1292,7 +1292,7 @@ void Infocenter::Reset()
InitializeBitmaps(); InitializeBitmaps();
m_selectedCharacter = e_pepper; m_selectedCharacter = e_pepper;
GameState()->SetVehicle(e_pepper); GameState()->SetActor(e_pepper);
HelicopterState* state = (HelicopterState*) GameState()->GetState("HelicopterState"); HelicopterState* state = (HelicopterState*) GameState()->GetState("HelicopterState");

View File

@ -46,8 +46,8 @@ Isle::~Isle()
InputManager()->ClearWorld(); InputManager()->ClearWorld();
} }
if (CurrentVehicle() != NULL) { if (CurrentActor() != NULL) {
VTable0x6c(CurrentVehicle()); VTable0x6c(CurrentActor());
} }
NotificationManager()->Unregister(this); NotificationManager()->Unregister(this);
@ -121,7 +121,7 @@ MxLong Isle::Notify(MxParam& p_param)
case c_notificationType18: case c_notificationType18:
switch (m_act1state->GetUnknown18()) { switch (m_act1state->GetUnknown18()) {
case 4: case 4:
result = CurrentVehicle()->Notify(p_param); result = CurrentActor()->Notify(p_param);
break; break;
case 8: case 8:
result = m_towtrack->Notify(p_param); result = m_towtrack->Notify(p_param);

View File

@ -29,8 +29,8 @@ MxLong JukeBoxEntity::Notify(MxParam& p_param)
return 1; return 1;
} }
if (CurrentVehicle()->GetActorId() != GameState()->GetActorId()) { if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
CurrentVehicle()->VTable0xe4(); CurrentActor()->VTable0xe4();
} }
((Isle*) FindWorld(*g_isleScript, 0))->SetUnknown13c(0x35); ((Isle*) FindWorld(*g_isleScript, 0))->SetUnknown13c(0x35);

View File

@ -179,9 +179,9 @@ LegoNavController* NavController()
} }
// FUNCTION: LEGO1 0x10015790 // FUNCTION: LEGO1 0x10015790
IslePathActor* CurrentVehicle() IslePathActor* CurrentActor()
{ {
return LegoOmni::GetInstance()->GetCurrentVehicle(); return LegoOmni::GetInstance()->GetCurrentActor();
} }
// FUNCTION: LEGO1 0x100157a0 // FUNCTION: LEGO1 0x100157a0
@ -249,9 +249,9 @@ void SetROIUnknown0x0c(const char* p_name, undefined p_unk0x0c)
} }
// FUNCTION: LEGO1 0x10015880 // FUNCTION: LEGO1 0x10015880
void SetCurrentVehicle(IslePathActor* p_currentVehicle) void SetCurrentActor(IslePathActor* p_currentActor)
{ {
LegoOmni::GetInstance()->SetCurrentVehicle(p_currentVehicle); LegoOmni::GetInstance()->SetCurrentActor(p_currentActor);
} }
// FUNCTION: LEGO1 0x100158c0 // FUNCTION: LEGO1 0x100158c0
@ -484,7 +484,7 @@ void LegoOmni::Init()
m_worldList = NULL; m_worldList = NULL;
m_currentWorld = NULL; m_currentWorld = NULL;
m_exit = FALSE; m_exit = FALSE;
m_currentVehicle = NULL; m_currentActor = NULL;
m_saveDataWriter = NULL; m_saveDataWriter = NULL;
m_plantManager = NULL; m_plantManager = NULL;
m_gameState = NULL; m_gameState = NULL;

View File

@ -44,7 +44,7 @@ void PoliceState::FUN_1005ea40()
return; return;
} }
switch (CurrentVehicle()->GetActorId()) { switch (CurrentActor()->GetActorId()) {
case 4: case 4:
policeScript = Police::PoliceScript::c_lauraAnim; policeScript = Police::PoliceScript::c_lauraAnim;
m_policeScript = policeScript; m_policeScript = policeScript;

View File

@ -28,47 +28,47 @@ MxResult TowTrackMissionState::VTable0x1c(LegoFile* p_legoFile)
} }
if (p_legoFile->IsReadMode()) { if (p_legoFile->IsReadMode()) {
p_legoFile->Read(&m_unk0x12, sizeof(MxU16)); p_legoFile->Read(&m_unk0x12, sizeof(m_unk0x12));
p_legoFile->Read(&m_unk0x14, sizeof(MxU16)); p_legoFile->Read(&m_unk0x14, sizeof(m_unk0x14));
p_legoFile->Read(&m_unk0x16, sizeof(MxU16)); p_legoFile->Read(&m_unk0x16, sizeof(m_unk0x16));
p_legoFile->Read(&m_unk0x18, sizeof(MxU16)); p_legoFile->Read(&m_unk0x18, sizeof(m_unk0x18));
p_legoFile->Read(&m_unk0x1a, sizeof(MxU16)); p_legoFile->Read(&m_unk0x1a, sizeof(m_unk0x1a));
p_legoFile->Read(&m_unk0x1c, sizeof(MxU16)); p_legoFile->Read(&m_unk0x1c, sizeof(m_unk0x1c));
p_legoFile->Read(&m_color1, sizeof(MxU16)); p_legoFile->Read(&m_color1, sizeof(m_color1));
p_legoFile->Read(&m_color2, sizeof(MxU16)); p_legoFile->Read(&m_color2, sizeof(m_color2));
p_legoFile->Read(&m_color3, sizeof(MxU16)); p_legoFile->Read(&m_color3, sizeof(m_color3));
p_legoFile->Read(&m_color4, sizeof(MxU16)); p_legoFile->Read(&m_color4, sizeof(m_color4));
} }
else if (p_legoFile->IsWriteMode()) { else if (p_legoFile->IsWriteMode()) {
MxU16 write = m_unk0x12; MxU16 write = m_unk0x12;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_unk0x14; write = m_unk0x14;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_unk0x16; write = m_unk0x16;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_unk0x18; write = m_unk0x18;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_unk0x1a; write = m_unk0x1a;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_unk0x1c; write = m_unk0x1c;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_color1; write = m_color1;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_color2; write = m_color2;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_color3; write = m_color3;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
write = m_color4; write = m_color4;
p_legoFile->Write(&write, sizeof(MxU16)); p_legoFile->Write(&write, sizeof(m_unk0x12));
} }
return SUCCESS; return SUCCESS;