mirror of
https://github.com/isledecomp/isle.git
synced 2024-11-22 15:48:09 -05:00
Implement/match LegoOmni::GetScriptIndex (#571)
* Implement/match LegoOmni::GetScriptIndex * Fix type * Fix
This commit is contained in:
parent
c67f613b8d
commit
b47412183b
9 changed files with 35 additions and 25 deletions
|
@ -31,7 +31,7 @@ class LegoAnimationManager : public MxCore {
|
||||||
void FUN_1005ef10();
|
void FUN_1005ef10();
|
||||||
void FUN_1005f0b0();
|
void FUN_1005f0b0();
|
||||||
void FUN_1005f6d0(MxBool);
|
void FUN_1005f6d0(MxBool);
|
||||||
void FUN_1005f720(undefined4);
|
void FUN_1005f720(MxS32 p_scriptIndex);
|
||||||
void FUN_10061010(undefined4);
|
void FUN_10061010(undefined4);
|
||||||
void FUN_10064670(MxBool);
|
void FUN_10064670(MxBool);
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,9 @@ class LegoOmni : public MxOmni {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline MxS32 GetIndex() { return m_index; }
|
||||||
|
inline const char* GetKey() { return m_key; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxS32 m_index; // 0x00
|
MxS32 m_index; // 0x00
|
||||||
char m_key[20]; // 0x04
|
char m_key[20]; // 0x04
|
||||||
|
@ -200,7 +203,7 @@ class LegoOmni : public MxOmni {
|
||||||
void CreateBackgroundAudio();
|
void CreateBackgroundAudio();
|
||||||
void RemoveWorld(const MxAtomId&, MxLong);
|
void RemoveWorld(const MxAtomId&, MxLong);
|
||||||
MxResult RegisterScripts();
|
MxResult RegisterScripts();
|
||||||
undefined4 FUN_1005b490(char* p_worldName);
|
MxS32 GetScriptIndex(const char* p_key);
|
||||||
|
|
||||||
static MxS32 GetCurrPathInfo(LegoPathBoundary**, MxS32&);
|
static MxS32 GetCurrPathInfo(LegoPathBoundary**, MxS32&);
|
||||||
static void CreateInstance();
|
static void CreateInstance();
|
||||||
|
|
|
@ -20,7 +20,7 @@ class LegoPlantManager : public MxCore {
|
||||||
return "LegoPlantManager";
|
return "LegoPlantManager";
|
||||||
}
|
}
|
||||||
|
|
||||||
void FUN_10026360(undefined4 p_world);
|
void FUN_10026360(MxS32 p_scriptIndex);
|
||||||
void FUN_100263a0(undefined4 p_und);
|
void FUN_100263a0(undefined4 p_und);
|
||||||
void FUN_10027120();
|
void FUN_10027120();
|
||||||
|
|
||||||
|
|
|
@ -65,11 +65,12 @@ class LegoWorld : public LegoEntity {
|
||||||
virtual void Enable(MxBool p_enable); // vtable+0x68
|
virtual void Enable(MxBool p_enable); // vtable+0x68
|
||||||
|
|
||||||
inline LegoCameraController* GetCamera() { return m_cameraController; }
|
inline LegoCameraController* GetCamera() { return m_cameraController; }
|
||||||
inline void SetUnknown0xec(undefined4 p_unk0xec) { m_unk0xec = p_unk0xec; }
|
inline MxS32 GetScriptIndex() { return m_scriptIndex; }
|
||||||
inline undefined4 GetUnknown0xec() { return m_unk0xec; }
|
|
||||||
inline MxCoreSet& GetUnknown0xd0() { return m_set0xd0; }
|
inline MxCoreSet& GetUnknown0xd0() { return m_set0xd0; }
|
||||||
inline list<AutoROI*>& GetUnknownList0xe0() { return m_list0xe0; }
|
inline list<AutoROI*>& GetUnknownList0xe0() { return m_list0xe0; }
|
||||||
|
|
||||||
|
inline void SetScriptIndex(MxS32 p_scriptIndex) { m_scriptIndex = p_scriptIndex; }
|
||||||
|
|
||||||
MxBool PresentersPending();
|
MxBool PresentersPending();
|
||||||
void Remove(MxCore* p_object);
|
void Remove(MxCore* p_object);
|
||||||
void FUN_1001fc80(IslePathActor* p_actor);
|
void FUN_1001fc80(IslePathActor* p_actor);
|
||||||
|
@ -91,7 +92,7 @@ class LegoWorld : public LegoEntity {
|
||||||
MxPresenterList m_controlPresenters; // 0xb8
|
MxPresenterList m_controlPresenters; // 0xb8
|
||||||
MxCoreSet m_set0xd0; // 0xd0
|
MxCoreSet m_set0xd0; // 0xd0
|
||||||
list<AutoROI*> m_list0xe0; // 0xe0
|
list<AutoROI*> m_list0xe0; // 0xe0
|
||||||
undefined4 m_unk0xec; // 0xec
|
MxS32 m_scriptIndex; // 0xec
|
||||||
LegoHideAnimPresenter* m_hideAnimPresenter; // 0xf0
|
LegoHideAnimPresenter* m_hideAnimPresenter; // 0xf0
|
||||||
MxS16 m_startupTicks; // 0xf4
|
MxS16 m_startupTicks; // 0xf4
|
||||||
MxBool m_worldStarted; // 0xf6
|
MxBool m_worldStarted; // 0xf6
|
||||||
|
|
|
@ -21,7 +21,7 @@ void LegoPlantManager::Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10026360
|
// STUB: LEGO1 0x10026360
|
||||||
void LegoPlantManager::FUN_10026360(undefined4 p_world)
|
void LegoPlantManager::FUN_10026360(MxS32 p_scriptIndex)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||||
|
|
||||||
if (p_dsAction.GetFlags() & MxDSAction::c_enabled) {
|
if (p_dsAction.GetFlags() & MxDSAction::c_enabled) {
|
||||||
if (CurrentWorld()) {
|
if (CurrentWorld()) {
|
||||||
CurrentWorld()->Enable(0);
|
CurrentWorld()->Enable(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetCurrentWorld(this);
|
SetCurrentWorld(this);
|
||||||
|
@ -92,7 +92,7 @@ MxResult LegoWorld::Create(MxDSAction& p_dsAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
SetIsWorldActive(TRUE);
|
SetIsWorldActive(TRUE);
|
||||||
m_unk0xec = -1;
|
m_scriptIndex = -1;
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -169,8 +169,8 @@ void LegoWorld::Destroy(MxBool p_fromDestructor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_unk0xec != -1 && m_set0xd0.empty()) {
|
if (m_scriptIndex != -1 && m_set0xd0.empty()) {
|
||||||
PlantManager()->FUN_100263a0(m_unk0xec);
|
PlantManager()->FUN_100263a0(m_scriptIndex);
|
||||||
BuildingManager()->FUN_1002fb30();
|
BuildingManager()->FUN_1002fb30();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -574,9 +574,9 @@ void LegoWorld::Enable(MxBool p_enable)
|
||||||
Lego()->SetNavController(m_cameraController->GetNavController());
|
Lego()->SetNavController(m_cameraController->GetNavController());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_unk0xec != -1) {
|
if (m_scriptIndex != -1) {
|
||||||
PlantManager()->FUN_10026360(m_unk0xec);
|
PlantManager()->FUN_10026360(m_scriptIndex);
|
||||||
AnimationManager()->FUN_1005f720(m_unk0xec);
|
AnimationManager()->FUN_1005f720(m_scriptIndex);
|
||||||
BuildingManager()->FUN_1002fa00();
|
BuildingManager()->FUN_1002fa00();
|
||||||
AnimationManager()->FUN_1005f0b0();
|
AnimationManager()->FUN_1005f0b0();
|
||||||
}
|
}
|
||||||
|
@ -597,8 +597,8 @@ void LegoWorld::Enable(MxBool p_enable)
|
||||||
AnimationManager()->FUN_1005ee80(FALSE);
|
AnimationManager()->FUN_1005ee80(FALSE);
|
||||||
m_set0xd0.insert(this);
|
m_set0xd0.insert(this);
|
||||||
|
|
||||||
if (m_unk0xec != -1) {
|
if (m_scriptIndex != -1) {
|
||||||
PlantManager()->FUN_100263a0(m_unk0xec);
|
PlantManager()->FUN_100263a0(m_scriptIndex);
|
||||||
BuildingManager()->FUN_1002fb30();
|
BuildingManager()->FUN_1002fb30();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,9 +39,9 @@ LegoWorldPresenter::~LegoWorldPresenter()
|
||||||
{
|
{
|
||||||
MxBool result = FALSE;
|
MxBool result = FALSE;
|
||||||
if (m_entity) {
|
if (m_entity) {
|
||||||
undefined4 world = ((LegoWorld*) m_entity)->GetUnknown0xec();
|
MxS32 scriptIndex = ((LegoWorld*) m_entity)->GetScriptIndex();
|
||||||
PlantManager()->FUN_10026360(world);
|
PlantManager()->FUN_10026360(scriptIndex);
|
||||||
AnimationManager()->FUN_1005f720(world);
|
AnimationManager()->FUN_1005f720(scriptIndex);
|
||||||
BuildingManager()->FUN_1002fa00();
|
BuildingManager()->FUN_1002fa00();
|
||||||
result = ((LegoWorld*) m_entity)->VTable0x5c();
|
result = ((LegoWorld*) m_entity)->VTable0x5c();
|
||||||
}
|
}
|
||||||
|
@ -189,9 +189,9 @@ void LegoWorldPresenter::ParseExtra()
|
||||||
data[len] = 0;
|
data[len] = 0;
|
||||||
|
|
||||||
if (KeyValueStringParse(output, g_strWORLD, data)) {
|
if (KeyValueStringParse(output, g_strWORLD, data)) {
|
||||||
char* worldName = strtok(output, g_parseExtraTokens);
|
char* worldKey = strtok(output, g_parseExtraTokens);
|
||||||
LoadWorld(worldName, (LegoWorld*) m_entity);
|
LoadWorld(worldKey, (LegoWorld*) m_entity);
|
||||||
((LegoWorld*) m_entity)->SetUnknown0xec(Lego()->FUN_1005b490(worldName));
|
((LegoWorld*) m_entity)->SetScriptIndex(Lego()->GetScriptIndex(worldKey));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -883,9 +883,15 @@ MxS32 LegoOmni::GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value)
|
||||||
return ::CurrentWorld()->GetCurrPathInfo(p_path, p_value);
|
return ::CurrentWorld()->GetCurrPathInfo(p_path, p_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1005b490
|
// FUNCTION: LEGO1 0x1005b490
|
||||||
undefined4 LegoOmni::FUN_1005b490(char* p_worldName)
|
MxS32 LegoOmni::GetScriptIndex(const char* p_key)
|
||||||
{
|
{
|
||||||
|
for (MxS32 i = 0; i < 19; i++) {
|
||||||
|
if ((MxS32) &m_scripts[i] != -4 && !strcmpi(m_scripts[i].GetKey(), p_key)) {
|
||||||
|
return m_scripts[i].GetIndex();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ void LegoAnimationManager::FUN_1005f6d0(MxBool)
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1005f720
|
// STUB: LEGO1 0x1005f720
|
||||||
void LegoAnimationManager::FUN_1005f720(undefined4)
|
void LegoAnimationManager::FUN_1005f720(MxS32 p_scriptIndex)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue