Implement/match MxOmni::ActionSourceEquals (#462)

This commit is contained in:
Christian Semmler 2024-01-19 17:06:39 -05:00 committed by GitHub
parent ee7241f73d
commit 1c4f772a82
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 6 deletions

View file

@ -57,7 +57,7 @@ class MxOmni : public MxCore {
virtual MxBool IsTimerRunning() { return m_timerRunning; }; // vtable+40 virtual MxBool IsTimerRunning() { return m_timerRunning; }; // vtable+40
static void SetInstance(MxOmni* p_instance); static void SetInstance(MxOmni* p_instance);
static MxBool FUN_100b06b0(MxDSAction* p_action, const char* p_name); static MxBool ActionSourceEquals(MxDSAction* p_action, const char* p_name);
HWND GetWindowHandle() const { return this->m_windowHandle; } HWND GetWindowHandle() const { return this->m_windowHandle; }
MxObjectFactory* GetObjectFactory() const { return this->m_objectFactory; } MxObjectFactory* GetObjectFactory() const { return this->m_objectFactory; }

View file

@ -3,6 +3,7 @@
#include "mxactionnotificationparam.h" #include "mxactionnotificationparam.h"
#include "mxatomidcounter.h" #include "mxatomidcounter.h"
#include "mxautolocker.h" #include "mxautolocker.h"
#include "mxdsmultiaction.h"
#include "mxeventmanager.h" #include "mxeventmanager.h"
#include "mxmusicmanager.h" #include "mxmusicmanager.h"
#include "mxnotificationmanager.h" #include "mxnotificationmanager.h"
@ -377,11 +378,23 @@ void MxOmni::DestroyInstance()
} }
} }
// STUB: LEGO1 0x100b06b0 // FUNCTION: LEGO1 0x100b06b0
MxBool MxOmni::FUN_100b06b0(MxDSAction* p_action, const char* p_name) MxBool MxOmni::ActionSourceEquals(MxDSAction* p_action, const char* p_name)
{ {
// TODO if (!strcmp(p_action->GetSourceName(), p_name))
return FAILURE; return TRUE;
if (p_action->IsA("MxDSMultiAction")) {
MxDSActionListCursor cursor(((MxDSMultiAction*) p_action)->GetActionList());
MxDSAction* action;
while (cursor.Next(action)) {
if (ActionSourceEquals(action, p_name))
return TRUE;
}
}
return FALSE;
} }
// FUNCTION: LEGO1 0x100b07f0 // FUNCTION: LEGO1 0x100b07f0
@ -404,7 +417,7 @@ MxLong MxOmni::HandleActionEnd(MxParam& p_param)
if (controller != NULL) { if (controller != NULL) {
action = controller->GetUnk0x54().Find(action, FALSE); action = controller->GetUnk0x54().Find(action, FALSE);
if (action) { if (action) {
if (FUN_100b06b0(action, "LegoLoopingAnimPresenter") == FALSE) { if (ActionSourceEquals(action, "LegoLoopingAnimPresenter") == FALSE) {
delete controller->GetUnk0x54().Find(action, TRUE); delete controller->GetUnk0x54().Find(action, TRUE);
} }
} }