mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-28 10:41:15 +00:00
implement MxDiskStreamController::VTable0x28
This commit is contained in:
parent
9aaeae7a6f
commit
9a84962596
@ -88,11 +88,29 @@ void MxDiskStreamController::FUN_100c7980()
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100c7ac0
|
||||
// FUNCTION: LEGO1 0x100c7ac0
|
||||
MxDSStreamingAction* MxDiskStreamController::VTable0x28()
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
MxAutoLocker lock(&this->m_criticalSection);
|
||||
MxDSStreamingAction* result = NULL;
|
||||
MxU32 filesize = m_provider->GetFileSize();
|
||||
|
||||
if(m_unk0x3c.size() != 0)
|
||||
{
|
||||
MxDSStreamingAction* oldAction = (MxDSStreamingAction*) m_unk0x3c.front();
|
||||
m_unk0x3c.pop_front();
|
||||
|
||||
MxDSStreamingAction* action = new MxDSStreamingAction(*oldAction);
|
||||
result = action;
|
||||
if(action)
|
||||
{
|
||||
oldAction->SetUnknown94(action->GetBufferOffset() + filesize);
|
||||
oldAction->SetBufferOffset(action->GetBufferOffset() + filesize);
|
||||
m_unk0x3c.push_back(action);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100c7c00
|
||||
@ -102,21 +120,17 @@ MxResult MxDiskStreamController::VTable0x30(MxDSAction* p_action)
|
||||
MxResult result = MxStreamController::VTable0x30(p_action);
|
||||
|
||||
MxDSStreamingAction* item;
|
||||
while(TRUE)
|
||||
{
|
||||
item = (MxDSStreamingAction*)m_list0x90.Find(p_action, TRUE);
|
||||
if (item == NULL)
|
||||
{
|
||||
while (TRUE) {
|
||||
item = (MxDSStreamingAction*) m_list0x90.Find(p_action, TRUE);
|
||||
if (item == NULL) {
|
||||
break;
|
||||
}
|
||||
FUN_100c7cb0(item);
|
||||
}
|
||||
|
||||
while(TRUE)
|
||||
{
|
||||
item = (MxDSStreamingAction*)m_list0x64.Find(p_action, TRUE);
|
||||
if (item == NULL)
|
||||
{
|
||||
while (TRUE) {
|
||||
item = (MxDSStreamingAction*) m_list0x64.Find(p_action, TRUE);
|
||||
if (item == NULL) {
|
||||
break;
|
||||
}
|
||||
FUN_100c7cb0(item);
|
||||
|
||||
@ -35,7 +35,10 @@ class MxDSStreamingAction : public MxDSAction {
|
||||
inline MxDSBuffer* GetUnknowna0() { return m_unk0xa0; }
|
||||
inline MxDSBuffer* GetUnknowna4() { return m_unk0xa4; }
|
||||
inline MxDSAction* GetInternalAction() { return m_internalAction; }
|
||||
inline MxU32 GetBufferOffset() { return m_bufferOffset; }
|
||||
inline void SetUnknown94(MxU32 p_unk0x94) { m_unk0x94 = p_unk0x94; }
|
||||
inline void SetUnknowna0(MxDSBuffer* p_unk0xa0) { m_unk0xa0 = p_unk0xa0; }
|
||||
inline void SetBufferOffset(MxU32 p_bufferOffset) { m_bufferOffset = p_bufferOffset; }
|
||||
|
||||
private:
|
||||
MxU32 m_unk0x94;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user