mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 16:34:06 +00:00
Implement/match MxStreamController::FUN_100c20d0 (#369)
* Implement/match MxStreamController::FUN_100c1f00 * Implement/match MxStreamController::FUN_100c20d0
This commit is contained in:

committed by
GitHub

parent
88d267f9f3
commit
6e947c3789
@@ -290,9 +290,22 @@ MxNextActionDataStart* MxStreamController::FindNextActionDataStartFromStreamingA
|
|||||||
return m_nextActionList.Find(p_action->GetObjectId(), p_action->GetUnknown24());
|
return m_nextActionList.Find(p_action->GetObjectId(), p_action->GetUnknown24());
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100c20d0
|
// FUNCTION: LEGO1 0x100c20d0
|
||||||
MxBool MxStreamController::FUN_100c20d0(MxDSObject& p_obj)
|
MxBool MxStreamController::FUN_100c20d0(MxDSObject& p_obj)
|
||||||
{
|
{
|
||||||
// TODO
|
if (m_subscriberList.Find(&p_obj))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (p_obj.IsA("MxDSMultiAction")) {
|
||||||
|
MxDSActionList* actions = ((MxDSMultiAction&) p_obj).GetActionList();
|
||||||
|
MxDSActionListCursor cursor(actions);
|
||||||
|
MxDSAction* action;
|
||||||
|
|
||||||
|
while (cursor.Next(action)) {
|
||||||
|
if (!FUN_100c20d0(*action))
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,20 @@ DECOMP_SIZE_ASSERT(MxStreamListMxDSAction, 0xc);
|
|||||||
DECOMP_SIZE_ASSERT(MxStreamListMxNextActionDataStart, 0xc);
|
DECOMP_SIZE_ASSERT(MxStreamListMxNextActionDataStart, 0xc);
|
||||||
DECOMP_SIZE_ASSERT(MxStreamListMxDSSubscriber, 0xc);
|
DECOMP_SIZE_ASSERT(MxStreamListMxDSSubscriber, 0xc);
|
||||||
|
|
||||||
|
// FUNCTION: LEGO1 0x100b8450
|
||||||
|
MxDSSubscriber* MxStreamListMxDSSubscriber::Find(MxDSObject* p_object)
|
||||||
|
{
|
||||||
|
for (iterator it = begin(); it != end(); it++) {
|
||||||
|
if (p_object->GetObjectId() == -1 || p_object->GetObjectId() == (*it)->GetObjectId()) {
|
||||||
|
if (p_object->GetUnknown24() == -2 || p_object->GetUnknown24() == (*it)->GetUnknown48()) {
|
||||||
|
return *it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x100bfa80
|
// FUNCTION: LEGO1 0x100bfa80
|
||||||
MxDSAction* MxStreamListMxDSAction::Find(MxDSAction* p_action, MxBool p_delete)
|
MxDSAction* MxStreamListMxDSAction::Find(MxDSAction* p_action, MxBool p_delete)
|
||||||
{
|
{
|
||||||
|
@@ -46,6 +46,9 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// SIZE 0xc
|
// SIZE 0xc
|
||||||
class MxStreamListMxDSSubscriber : public MxStreamList<MxDSSubscriber*> {};
|
class MxStreamListMxDSSubscriber : public MxStreamList<MxDSSubscriber*> {
|
||||||
|
public:
|
||||||
|
MxDSSubscriber* Find(MxDSObject* p_object);
|
||||||
|
};
|
||||||
|
|
||||||
#endif // MXSTREAMLIST_H
|
#endif // MXSTREAMLIST_H
|
||||||
|
Reference in New Issue
Block a user