mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-11-25 17:07:52 -05:00
Implement/match Ambulance::VTable0x70 (#1027)
This commit is contained in:
parent
cf576ca78f
commit
33c64bb002
4 changed files with 32 additions and 8 deletions
|
@ -87,7 +87,7 @@ class Ambulance : public IslePathActor {
|
||||||
|
|
||||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||||
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||||
void VTable0x70(float p_float) override; // vtable+0x70
|
void VTable0x70(float p_time) override; // vtable+0x70
|
||||||
MxLong HandleClick() override; // vtable+0xcc
|
MxLong HandleClick() override; // vtable+0xcc
|
||||||
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
MxLong HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||||
MxLong HandleNotification19(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
MxLong HandleNotification19(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||||
|
@ -119,7 +119,7 @@ class Ambulance : public IslePathActor {
|
||||||
MxS16 m_unk0x172; // 0x172
|
MxS16 m_unk0x172; // 0x172
|
||||||
IsleScript::Script m_lastAction; // 0x174
|
IsleScript::Script m_lastAction; // 0x174
|
||||||
IsleScript::Script m_lastAnimation; // 0x178
|
IsleScript::Script m_lastAnimation; // 0x178
|
||||||
MxFloat m_unk0x17c; // 0x17c
|
MxFloat m_fuel; // 0x17c
|
||||||
MxFloat m_time; // 0x180
|
MxFloat m_time; // 0x180
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "mxvariable.h"
|
#include "mxvariable.h"
|
||||||
|
|
||||||
|
extern const char* g_varAMBULSPEED;
|
||||||
extern const char* g_varAMBULFUEL;
|
extern const char* g_varAMBULFUEL;
|
||||||
extern const char* g_varTOWFUEL;
|
extern const char* g_varTOWFUEL;
|
||||||
extern const char* g_varVISIBILITY;
|
extern const char* g_varVISIBILITY;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "legoanimationmanager.h"
|
#include "legoanimationmanager.h"
|
||||||
#include "legocontrolmanager.h"
|
#include "legocontrolmanager.h"
|
||||||
#include "legogamestate.h"
|
#include "legogamestate.h"
|
||||||
|
#include "legonavcontroller.h"
|
||||||
#include "legoutils.h"
|
#include "legoutils.h"
|
||||||
#include "legovariables.h"
|
#include "legovariables.h"
|
||||||
#include "legoworld.h"
|
#include "legoworld.h"
|
||||||
|
@ -37,7 +38,7 @@ Ambulance::Ambulance()
|
||||||
m_lastAction = IsleScript::c_noneIsle;
|
m_lastAction = IsleScript::c_noneIsle;
|
||||||
m_unk0x172 = 0;
|
m_unk0x172 = 0;
|
||||||
m_lastAnimation = IsleScript::c_noneIsle;
|
m_lastAnimation = IsleScript::c_noneIsle;
|
||||||
m_unk0x17c = 1.0;
|
m_fuel = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10035f90
|
// FUNCTION: LEGO1 0x10035f90
|
||||||
|
@ -75,16 +76,34 @@ MxResult Ambulance::Create(MxDSAction& p_dsAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
VariableTable()->SetVariable(g_varAMBULFUEL, "1.0");
|
VariableTable()->SetVariable(g_varAMBULFUEL, "1.0");
|
||||||
m_unk0x17c = 1.0;
|
m_fuel = 1.0;
|
||||||
m_time = Timer()->GetTime();
|
m_time = Timer()->GetTime();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10036300
|
// FUNCTION: LEGO1 0x10036300
|
||||||
void Ambulance::VTable0x70(float p_float)
|
void Ambulance::VTable0x70(float p_time)
|
||||||
{
|
{
|
||||||
// TODO
|
IslePathActor::VTable0x70(p_time);
|
||||||
IslePathActor::VTable0x70(p_float);
|
|
||||||
|
if (UserActor() == this) {
|
||||||
|
char buf[200];
|
||||||
|
float speed = abs(m_worldSpeed);
|
||||||
|
float maxLinearVel = NavController()->GetMaxLinearVel();
|
||||||
|
|
||||||
|
sprintf(buf, "%g", speed / maxLinearVel);
|
||||||
|
VariableTable()->SetVariable(g_varAMBULSPEED, buf);
|
||||||
|
|
||||||
|
m_fuel += (p_time - m_time) * -3.333333333e-06f;
|
||||||
|
if (m_fuel < 0) {
|
||||||
|
m_fuel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_time = p_time;
|
||||||
|
|
||||||
|
sprintf(buf, "%g", m_fuel);
|
||||||
|
VariableTable()->SetVariable(g_varAMBULFUEL, buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100363f0
|
// FUNCTION: LEGO1 0x100363f0
|
||||||
|
|
|
@ -16,6 +16,10 @@ DECOMP_SIZE_ASSERT(CursorVariable, 0x24)
|
||||||
DECOMP_SIZE_ASSERT(WhoAmIVariable, 0x24)
|
DECOMP_SIZE_ASSERT(WhoAmIVariable, 0x24)
|
||||||
DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24)
|
DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24)
|
||||||
|
|
||||||
|
// GLOBAL: LEGO1 0x100f39b8
|
||||||
|
// STRING: LEGO1 0x100f39ac
|
||||||
|
const char* g_varAMBULSPEED = "ambulSPEED";
|
||||||
|
|
||||||
// GLOBAL: LEGO1 0x100f39bc
|
// GLOBAL: LEGO1 0x100f39bc
|
||||||
// STRING: LEGO1 0x100f39a0
|
// STRING: LEGO1 0x100f39a0
|
||||||
const char* g_varAMBULFUEL = "ambulFUEL";
|
const char* g_varAMBULFUEL = "ambulFUEL";
|
||||||
|
|
Loading…
Reference in a new issue