mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 02:31:15 +00:00
fix bug in MxPresenter::CreateEntity
This commit is contained in:
parent
00c05aa80b
commit
c3ec80114b
@ -107,7 +107,7 @@ class MxPresenter : public MxCore {
|
|||||||
|
|
||||||
virtual void Enable(MxBool p_enable); // vtable+0x54
|
virtual void Enable(MxBool p_enable); // vtable+0x54
|
||||||
|
|
||||||
MxEntity* CreateEntity(const char* p_name);
|
MxEntity* CreateEntity(const char* p_defaultName);
|
||||||
void SendToCompositePresenter(MxOmni*);
|
void SendToCompositePresenter(MxOmni*);
|
||||||
MxBool IsEnabled();
|
MxBool IsEnabled();
|
||||||
|
|
||||||
|
|||||||
@ -239,24 +239,26 @@ const char* PresenterNameDispatch(const MxDSAction& p_action)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b5410
|
// FUNCTION: LEGO1 0x100b5410
|
||||||
MxEntity* MxPresenter::CreateEntity(const char* p_name)
|
MxEntity* MxPresenter::CreateEntity(const char* p_defaultName)
|
||||||
{
|
{
|
||||||
|
char objectName[512];
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
char buffer2[512];
|
|
||||||
strcpy(buffer, p_name);
|
|
||||||
|
|
||||||
|
// create an object from LegoObjectFactory based on OBJECT: value in extra data. If that is missing, p_defaultName
|
||||||
|
// is used
|
||||||
|
|
||||||
|
strcpy(objectName, p_defaultName);
|
||||||
MxU16 extraLen = m_action->GetExtraLength();
|
MxU16 extraLen = m_action->GetExtraLength();
|
||||||
|
|
||||||
buffer[0] = extraLen;
|
buffer[0] = extraLen;
|
||||||
buffer[1] = extraLen >> 8;
|
buffer[1] = extraLen >> 8;
|
||||||
if (extraLen) {
|
if (extraLen & MAXWORD) {
|
||||||
extraLen &= MAXWORD;
|
memcpy(buffer + 2, m_action->GetExtraData(), extraLen & MAXWORD);
|
||||||
memcpy(buffer2 + 2, m_action->GetExtraData(), extraLen);
|
buffer[extraLen + 2] = 0;
|
||||||
buffer2[extraLen + 2] = 0;
|
KeyValueStringParse(objectName, g_strOBJECT, buffer + 2);
|
||||||
KeyValueStringParse(buffer, g_strOBJECT, buffer2 + 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (MxEntity*) ObjectFactory()->Create(buffer);
|
return (MxEntity*) ObjectFactory()->Create(objectName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100b54c0
|
// FUNCTION: LEGO1 0x100b54c0
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user