Implement Isle::VTable0x50 (#432)

* push changes

* fix formatting

* Fix structure

* Fix return

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
Misha
2024-01-13 15:42:09 -05:00
committed by GitHub
parent c2da041f40
commit 5b8ea35756
10 changed files with 81 additions and 6 deletions

View File

@@ -2,6 +2,19 @@
// STUB: LEGO1 0x100334b0
Act1State::Act1State()
{
// TODO
m_unk0x1e = 0;
m_unk0x18 = 1;
m_unk0x20 = 0;
m_unk0x1f = 0;
m_unk0x21 = TRUE;
m_unk0x22 = 0;
m_unk0x1c = 1;
}
// STUB: LEGO1 0x10034d00
void Act1State::FUN_10034d00()
{
// TODO
}

View File

@@ -1,9 +1,13 @@
#include "legogamestate.h"
#include "infocenterstate.h"
#include "legoanimationmanager.h"
#include "legoomni.h"
#include "legostate.h"
#include "legostream.h"
#include "legoutil.h"
#include "legovideomanager.h"
#include "mxbackgroundaudiomanager.h"
#include "mxobjectfactory.h"
#include "mxstring.h"
#include "mxvariabletable.h"
@@ -186,9 +190,30 @@ void LegoGameState::FUN_1003a720(MxU32)
}
// STUB: LEGO1 0x1003b060
void LegoGameState::HandleAction(MxU32)
void LegoGameState::HandleAction(MxU32 p_area)
{
// TODO
m_prevArea = p_area;
BackgroundAudioManager()->Stop();
AnimationManager()->FUN_1005ef10();
VideoManager()->SetUnk0x554(0);
MxAtomId* script = g_isleScript;
switch (p_area) {
case 1:
break;
case 2:
VideoManager()->SetUnk0x554(1);
script = g_infomainScript;
break;
case 3:
VideoManager()->SetUnk0x554(1);
script = g_infodoorScript;
break;
// TODO: implement other cases
}
InvokeAction(ExtraActionType_opendisk, *script, 0, NULL);
}
// FUNCTION: LEGO1 0x1003bac0

View File

@@ -152,10 +152,22 @@ MxLong Isle::StopAction(MxParam& p_param)
return 0;
}
// STUB: LEGO1 0x10030fc0
// FUNCTION: LEGO1 0x10030fc0
void Isle::VTable0x50()
{
// TODO
LegoWorld::VTable0x50();
if (m_act1state->GetUnknown21()) {
GameState()->HandleAction(2);
m_act1state->SetUnknown18(0);
m_act1state->SetUnknown21(0);
}
else if (GameState()->GetCurrentAct()) {
FUN_1003ef00(TRUE);
FUN_10032620();
m_act1state->FUN_10034d00();
FUN_10015820(0, 7);
}
}
// STUB: LGEO1 0x10031030
@@ -176,6 +188,12 @@ void Isle::VTable0x68(MxBool p_add)
// TODO
}
// STUB: LEGO1 0x10032620
void Isle::FUN_10032620()
{
// TODO
}
// STUB: LEGO1 0x100327a0
MxLong Isle::HandleTransitionEnd()
{

View File

@@ -21,6 +21,11 @@ LegoAnimationManager::~LegoAnimationManager()
// TODO
}
// STUB: LEGO1 0x1005ef10
void LegoAnimationManager::FUN_1005ef10()
{
}
// STUB: LEGO1 0x1005f130
void LegoAnimationManager::Init()
{