mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 18:51:16 +00:00
Fixes/matches/refactor
This commit is contained in:
parent
1e4c939db9
commit
5b53446ea5
@ -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
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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");
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user