Implement/match MxStreamController::FUN_100c1f00 (#367)

This commit is contained in:
Christian Semmler 2023-12-26 20:33:53 -05:00 committed by GitHub
parent 59d999f6dc
commit cfe28a2b26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 8 deletions

View file

@ -56,11 +56,11 @@ public:
}
protected:
MxU16 m_flags; // 0x8
undefined4 m_objectId; // 0xc
MxLong m_time; // 0x10
MxU32 m_length; // 0x14
MxU8* m_data; // 0x18
MxU16 m_flags; // 0x8
MxU32 m_objectId; // 0xc
MxLong m_time; // 0x10
MxU32 m_length; // 0x14
MxU8* m_data; // 0x18
};
#endif // MXDSCHUNK_H

View file

@ -3,6 +3,7 @@
#include "legoomni.h"
#include "legoutil.h"
#include "mxautolocker.h"
#include "mxdsmultiaction.h"
#include "mxdsstreamingaction.h"
#include "mxnextactiondatastart.h"
#include "mxstl/stlcompat.h"
@ -252,11 +253,35 @@ MxPresenter* MxStreamController::FUN_100c1e70(MxDSAction& p_action)
return result;
}
// STUB: LEGO1 0x100c1f00
// FUNCTION: LEGO1 0x100c1f00
MxResult MxStreamController::FUN_100c1f00(MxDSAction* p_action)
{
// TODO
return FAILURE;
MxAutoLocker lock(&m_criticalSection);
MxU32 objectId = p_action->GetObjectId();
MxStreamChunk* chunk = new MxStreamChunk;
if (!chunk)
return FAILURE;
chunk->SetFlags(MxDSChunk::Flag_Bit3);
chunk->SetObjectId(objectId);
if (chunk->SendChunk(m_subscriberList, FALSE, p_action->GetUnknown24()) != SUCCESS)
delete chunk;
if (p_action->IsA("MxDSMultiAction")) {
MxDSActionList* actions = ((MxDSMultiAction*) p_action)->GetActionList();
MxDSActionListCursor cursor(actions);
MxDSAction* action;
while (cursor.Next(action)) {
if (FUN_100c1f00(action) != SUCCESS)
return FAILURE;
}
}
return SUCCESS;
}
// STUB: LEGO1 0x100c20b0