mirror of
https://github.com/isledecomp/isle.git
synced 2024-12-03 12:57:12 -05:00
Implement/match RegisterPaths (#569)
This commit is contained in:
parent
ad3a1de055
commit
5b06054375
2 changed files with 95 additions and 6 deletions
|
@ -104,6 +104,65 @@ class LegoOmni : public MxOmni {
|
||||||
MxAtomId* m_script; // 0x18
|
MxAtomId* m_script; // 0x18
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// SIZE 0x38
|
||||||
|
struct PathContainer {
|
||||||
|
PathContainer() {}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1001b1b0
|
||||||
|
PathContainer(
|
||||||
|
undefined4 p_unk0x00,
|
||||||
|
MxAtomId* p_script,
|
||||||
|
undefined4 p_unk0x04,
|
||||||
|
const char* p_key,
|
||||||
|
undefined2 p_unk0x20,
|
||||||
|
float p_unk0x24,
|
||||||
|
undefined2 p_unk0x28,
|
||||||
|
float p_unk0x2c,
|
||||||
|
undefined4 p_unk0x30,
|
||||||
|
MxS32 p_unk0x34
|
||||||
|
)
|
||||||
|
{
|
||||||
|
m_unk0x00 = p_unk0x00;
|
||||||
|
m_script = p_script;
|
||||||
|
m_unk0x04 = p_unk0x04;
|
||||||
|
strcpy(m_key, p_key);
|
||||||
|
m_unk0x20 = p_unk0x20;
|
||||||
|
m_unk0x24 = p_unk0x24;
|
||||||
|
m_unk0x28 = p_unk0x28;
|
||||||
|
m_unk0x2c = p_unk0x2c;
|
||||||
|
m_unk0x30 = p_unk0x30;
|
||||||
|
m_unk0x34 = p_unk0x34;
|
||||||
|
}
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x1001b230
|
||||||
|
PathContainer& operator=(const PathContainer& p_container)
|
||||||
|
{
|
||||||
|
m_unk0x00 = p_container.m_unk0x00;
|
||||||
|
m_script = p_container.m_script;
|
||||||
|
m_unk0x04 = p_container.m_unk0x04;
|
||||||
|
strcpy(m_key, p_container.m_key);
|
||||||
|
m_unk0x20 = p_container.m_unk0x20;
|
||||||
|
m_unk0x24 = p_container.m_unk0x24;
|
||||||
|
m_unk0x28 = p_container.m_unk0x28;
|
||||||
|
m_unk0x2c = p_container.m_unk0x2c;
|
||||||
|
m_unk0x30 = p_container.m_unk0x30;
|
||||||
|
m_unk0x34 = p_container.m_unk0x34;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
undefined4 m_unk0x00; // 0x00
|
||||||
|
MxAtomId* m_script; // 0x04
|
||||||
|
undefined4 m_unk0x04; // 0x08
|
||||||
|
char m_key[20]; // 0x0c
|
||||||
|
undefined2 m_unk0x20; // 0x20
|
||||||
|
float m_unk0x24; // 0x24
|
||||||
|
undefined2 m_unk0x28; // 0x28
|
||||||
|
float m_unk0x2c; // 0x2c
|
||||||
|
undefined4 m_unk0x30; // 0x30
|
||||||
|
MxS32 m_unk0x34; // 0x34
|
||||||
|
};
|
||||||
|
|
||||||
LegoOmni();
|
LegoOmni();
|
||||||
~LegoOmni() override; // vtable+00
|
~LegoOmni() override; // vtable+00
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "viewmanager/viewmanager.h"
|
#include "viewmanager/viewmanager.h"
|
||||||
|
|
||||||
DECOMP_SIZE_ASSERT(LegoOmni::ScriptContainer, 0x1c)
|
DECOMP_SIZE_ASSERT(LegoOmni::ScriptContainer, 0x1c)
|
||||||
|
DECOMP_SIZE_ASSERT(LegoOmni::PathContainer, 0x38)
|
||||||
DECOMP_SIZE_ASSERT(LegoWorldList, 0x18)
|
DECOMP_SIZE_ASSERT(LegoWorldList, 0x18)
|
||||||
DECOMP_SIZE_ASSERT(LegoWorldListCursor, 0x10)
|
DECOMP_SIZE_ASSERT(LegoWorldListCursor, 0x10)
|
||||||
|
|
||||||
|
@ -120,6 +121,9 @@ const char* g_current = "current";
|
||||||
// GLOBAL: LEGO1 0x100f4c58
|
// GLOBAL: LEGO1 0x100f4c58
|
||||||
MxBool g_isWorldActive = TRUE;
|
MxBool g_isWorldActive = TRUE;
|
||||||
|
|
||||||
|
// GLOBAL: LEGO1 0x10102b28
|
||||||
|
LegoOmni::PathContainer g_extraPaths[29];
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10015700
|
// FUNCTION: LEGO1 0x10015700
|
||||||
LegoOmni* Lego()
|
LegoOmni* Lego()
|
||||||
{
|
{
|
||||||
|
@ -286,12 +290,38 @@ void DeleteObjects(MxAtomId* p_id, MxS32 p_first, MxS32 p_last)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x1001a700
|
// FUNCTION: LEGO1 0x1001a700
|
||||||
void FUN_1001a700()
|
void RegisterExtraPaths()
|
||||||
{
|
{
|
||||||
// TODO
|
g_extraPaths[0] = LegoOmni::PathContainer(0x16, g_isleScript, 0, "int35", 2, 0.6, 4, 0.4, 0x2a, 0x12);
|
||||||
|
g_extraPaths[1] = LegoOmni::PathContainer(0x17, g_isleScript, 0, "edg00_49", 1, 0.43, 2, 0.6, 0x27, 0x12);
|
||||||
// This function seems to populate an unknown structure, and then calls 0x1001b230
|
g_extraPaths[2] = LegoOmni::PathContainer(0x18, g_isleScript, 0, "edg00_191", 2, 0.5, 0, 0.55, 0x26, 0x12);
|
||||||
|
g_extraPaths[3] = LegoOmni::PathContainer(0x04, g_isleScript, 0, "int46", 0, 0.5, 2, 0.5, 0x10, 0x0b);
|
||||||
|
g_extraPaths[4] = LegoOmni::PathContainer(0x10, g_isleScript, 0, "EDG00_46", 0, 0.95, 2, 0.19, 0x17, 0x11);
|
||||||
|
g_extraPaths[5] = LegoOmni::PathContainer(0x11, g_isleScript, 0, "EDG00_46", 3, 0.625, 2, 0.03, 0x18, 0x11);
|
||||||
|
g_extraPaths[6] = LegoOmni::PathContainer(0x0f, g_isleScript, 0, "EDG10_63", 0, 0.26, 1, 0.01, 0, -1);
|
||||||
|
g_extraPaths[7] = LegoOmni::PathContainer(0x13, g_isleScript, 0, "INT15", 5, 0.65, 1, 0.68, 0x33, 0x0e);
|
||||||
|
g_extraPaths[8] = LegoOmni::PathContainer(0x14, g_isleScript, 0, "INT16", 4, 0.1, 2, 0, 0x34, 0x0e);
|
||||||
|
g_extraPaths[9] = LegoOmni::PathContainer(0x15, g_isleScript, 0, "INT62", 2, 0.1, 3, 0.7, 0x36, 0x0e);
|
||||||
|
g_extraPaths[10] = LegoOmni::PathContainer(0x19, g_isleScript, 0, "INT24", 0, 0.55, 2, 0.71, 0x08, 0x0f);
|
||||||
|
g_extraPaths[11] = LegoOmni::PathContainer(0x1c, g_isleScript, 0, "INT24", 2, 0.73, 4, 0.71, 0x0a, 0x0f);
|
||||||
|
g_extraPaths[12] = LegoOmni::PathContainer(0x1d, g_isleScript, 0, "INT19", 0, 0.85, 1, 0.28, 0, 0x0a);
|
||||||
|
g_extraPaths[13] = LegoOmni::PathContainer(0x1f, g_isleScript, 0, "EDG02_28", 3, 0.37, 1, 0.52, 0x0c, 0x0a);
|
||||||
|
g_extraPaths[14] = LegoOmni::PathContainer(0x20, g_isleScript, 0, "INT33", 0, 0.88, 2, 0.74, 0x22, 0x0c);
|
||||||
|
g_extraPaths[15] = LegoOmni::PathContainer(0x21, g_isleScript, 0, "EDG02_64", 2, 0.24, 0, 0.84, 0x23, 0x0c);
|
||||||
|
g_extraPaths[16] = LegoOmni::PathContainer(0x28, g_isleScript, 0, "edg02_51", 2, 0.63, 3, 0.01, 0, -1);
|
||||||
|
g_extraPaths[17] = LegoOmni::PathContainer(0x29, g_isleScript, 0, "edg02_51", 2, 0.63, 0, 0.4, 0, -1);
|
||||||
|
g_extraPaths[18] = LegoOmni::PathContainer(0x2b, g_isleScript, 0, "edg02_35", 2, 0.8, 0, 0.2, 0, -1);
|
||||||
|
g_extraPaths[19] = LegoOmni::PathContainer(0x2c, g_isleScript, 0, "EDG03_01", 2, 0.25, 0, 0.75, 0, -1);
|
||||||
|
g_extraPaths[20] = LegoOmni::PathContainer(0x2d, g_isleScript, 0, "edg10_70", 3, 0.25, 0, 0.7, 0x44, -1);
|
||||||
|
g_extraPaths[21] = LegoOmni::PathContainer(0x2a, g_isleScript, 0, "inv_05", 2, 0.75, 0, 0.19, 0, -1);
|
||||||
|
g_extraPaths[22] = LegoOmni::PathContainer(0x30, g_act3Script, 0, "edg02_51", 2, 0.63, 0, 0.4, 0, -1);
|
||||||
|
g_extraPaths[23] = LegoOmni::PathContainer(0x31, g_act3Script, 0, "inv_05", 2, 0.75, 0, 0.19, 0, -1);
|
||||||
|
g_extraPaths[24] = LegoOmni::PathContainer(0x32, g_act2mainScript, 0, "EDG02_51", 0, 0.64, 1, 0.37, 0, -1);
|
||||||
|
g_extraPaths[25] = LegoOmni::PathContainer(0x33, g_isleScript, 0, "edg02_32", 0, 0.5, 2, 0.5, 0, -1);
|
||||||
|
g_extraPaths[26] = LegoOmni::PathContainer(0x34, g_isleScript, 0, "edg02_19", 2, 0.5, 0, 0.5, 0, -1);
|
||||||
|
g_extraPaths[27] = LegoOmni::PathContainer(0x36, g_isleScript, 0, "int36", 0, 0.2, 4, 0.4, 0, -1);
|
||||||
|
g_extraPaths[28] = LegoOmni::PathContainer(0x37, g_isleScript, 0, "edg02_50", 2, 0.8, 1, 0.3, 0, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1003dd70
|
// FUNCTION: LEGO1 0x1003dd70
|
||||||
|
@ -604,7 +634,7 @@ MxResult LegoOmni::Create(MxOmniCreateParam& p_param)
|
||||||
m_variableTable->SetVariable(variable);
|
m_variableTable->SetVariable(variable);
|
||||||
|
|
||||||
CreateScripts();
|
CreateScripts();
|
||||||
FUN_1001a700();
|
RegisterExtraPaths();
|
||||||
result = RegisterScripts();
|
result = RegisterScripts();
|
||||||
|
|
||||||
if (result != SUCCESS) {
|
if (result != SUCCESS) {
|
||||||
|
|
Loading…
Reference in a new issue