mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-12-03 04:37:01 -05:00
168 lines
3.8 KiB
C++
168 lines
3.8 KiB
C++
#include "legovariables.h"
|
|
|
|
#include "3dmanager/lego3dmanager.h"
|
|
#include "legobuildingmanager.h"
|
|
#include "legocharactermanager.h"
|
|
#include "legogamestate.h"
|
|
#include "legonavcontroller.h"
|
|
#include "legoplantmanager.h"
|
|
#include "legovideomanager.h"
|
|
#include "misc.h"
|
|
#include "roi/legoroi.h"
|
|
|
|
DECOMP_SIZE_ASSERT(VisibilityVariable, 0x24)
|
|
DECOMP_SIZE_ASSERT(CameraLocationVariable, 0x24)
|
|
DECOMP_SIZE_ASSERT(CursorVariable, 0x24)
|
|
DECOMP_SIZE_ASSERT(WhoAmIVariable, 0x24)
|
|
DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24)
|
|
|
|
// GLOBAL: LEGO1 0x100f39b8
|
|
// STRING: LEGO1 0x100f39ac
|
|
const char* g_varAMBULSPEED = "ambulSPEED";
|
|
|
|
// GLOBAL: LEGO1 0x100f39bc
|
|
// STRING: LEGO1 0x100f39a0
|
|
const char* g_varAMBULFUEL = "ambulFUEL";
|
|
|
|
// GLOBAL: LEGO1 0x100f43b4
|
|
// STRING: LEGO1 0x100f439c
|
|
const char* g_varTOWFUEL = "towFUEL";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a40
|
|
// STRING: LEGO1 0x100f3808
|
|
const char* g_varVISIBILITY = "VISIBILITY";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a44
|
|
// STRING: LEGO1 0x100f3a30
|
|
const char* g_varCAMERALOCATION = "CAMERA_LOCATION";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a48
|
|
// STRING: LEGO1 0x100f3a28
|
|
const char* g_varCURSOR = "CURSOR";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a4c
|
|
// STRING: LEGO1 0x100f3a1c
|
|
const char* g_varWHOAMI = "WHO_AM_I";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a50
|
|
// STRING: LEGO1 0x100f3a18
|
|
const char* g_delimiter2 = " \t";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a54
|
|
// STRING: LEGO1 0x100f3a10
|
|
const char* g_varHIDE = "HIDE";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a58
|
|
// STRING: LEGO1 0x100f3a08
|
|
const char* g_varSHOW = "SHOW";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a5c
|
|
// STRING: LEGO1 0x100f3a00
|
|
const char* g_papa = "Papa";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a60
|
|
// STRING: LEGO1 0x100f39f8
|
|
const char* g_mama = "Mama";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a64
|
|
// STRING: LEGO1 0x100f39f0
|
|
const char* g_pepper = "Pepper";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a68
|
|
// STRING: LEGO1 0x100f39e8
|
|
const char* g_nick = "Nick";
|
|
|
|
// GLOBAL: LEGO1 0x100f3a6c
|
|
// STRING: LEGO1 0x100f39e0
|
|
const char* g_laura = "Laura";
|
|
|
|
// FUNCTION: LEGO1 0x10037d00
|
|
// FUNCTION: BETA10 0x100d5620
|
|
void VisibilityVariable::SetValue(const char* p_value)
|
|
{
|
|
MxVariable::SetValue(p_value);
|
|
|
|
if (p_value) {
|
|
char* instruction = strtok(m_value.GetData(), g_delimiter2);
|
|
char* name = strtok(NULL, g_delimiter2);
|
|
MxBool show;
|
|
|
|
if (!strcmpi(instruction, g_varHIDE)) {
|
|
show = FALSE;
|
|
}
|
|
else if (!strcmpi(instruction, g_varSHOW)) {
|
|
show = TRUE;
|
|
}
|
|
else {
|
|
return;
|
|
}
|
|
|
|
LegoROI* roi = FindROI(name);
|
|
if (roi) {
|
|
roi->SetVisibility(show);
|
|
}
|
|
}
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x10037d80
|
|
void CameraLocationVariable::SetValue(const char* p_value)
|
|
{
|
|
char buffer[256];
|
|
MxVariable::SetValue(p_value);
|
|
|
|
strcpy(buffer, p_value);
|
|
|
|
char* location = strtok(buffer, ",");
|
|
NavController()->UpdateLocation(location);
|
|
|
|
location = strtok(NULL, ",");
|
|
if (location) {
|
|
MxFloat pov = (MxFloat) atof(location);
|
|
VideoManager()->Get3DManager()->SetFrustrum(pov, 0.1f, 250.0f);
|
|
}
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x10037e30
|
|
void CursorVariable::SetValue(const char* p_value)
|
|
{
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x10037e40
|
|
void WhoAmIVariable::SetValue(const char* p_value)
|
|
{
|
|
MxVariable::SetValue(p_value);
|
|
|
|
if (!strcmpi(p_value, g_papa)) {
|
|
GameState()->SetActorId(3);
|
|
}
|
|
else if (!strcmpi(p_value, g_mama)) {
|
|
GameState()->SetActorId(2);
|
|
}
|
|
else if (!strcmpi(p_value, g_pepper)) {
|
|
GameState()->SetActorId(1);
|
|
}
|
|
else if (!strcmpi(p_value, g_nick)) {
|
|
GameState()->SetActorId(4);
|
|
}
|
|
else if (!strcmpi(p_value, g_laura)) {
|
|
GameState()->SetActorId(5);
|
|
}
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x10085aa0
|
|
CustomizeAnimFileVariable::CustomizeAnimFileVariable(const char* p_key)
|
|
{
|
|
m_key = p_key;
|
|
m_key.ToUpperCase();
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x10085b50
|
|
void CustomizeAnimFileVariable::SetValue(const char* p_value)
|
|
{
|
|
// STRING: LEGO1 0x100fc4f4
|
|
if (strcmp(m_key.GetData(), "CUSTOMIZE_ANIM_FILE") == 0) {
|
|
CharacterManager()->SetCustomizeAnimFile(p_value);
|
|
PlantManager()->SetCustomizeAnimFile(p_value);
|
|
BuildingManager()->SetCustomizeAnimFile(p_value);
|
|
}
|
|
}
|