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()
|
MxDSStreamingAction* MxDiskStreamController::VTable0x28()
|
||||||
{
|
{
|
||||||
// TODO
|
MxAutoLocker lock(&this->m_criticalSection);
|
||||||
return NULL;
|
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
|
// FUNCTION: LEGO1 0x100c7c00
|
||||||
@ -102,21 +120,17 @@ MxResult MxDiskStreamController::VTable0x30(MxDSAction* p_action)
|
|||||||
MxResult result = MxStreamController::VTable0x30(p_action);
|
MxResult result = MxStreamController::VTable0x30(p_action);
|
||||||
|
|
||||||
MxDSStreamingAction* item;
|
MxDSStreamingAction* item;
|
||||||
while(TRUE)
|
while (TRUE) {
|
||||||
{
|
item = (MxDSStreamingAction*) m_list0x90.Find(p_action, TRUE);
|
||||||
item = (MxDSStreamingAction*)m_list0x90.Find(p_action, TRUE);
|
if (item == NULL) {
|
||||||
if (item == NULL)
|
|
||||||
{
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
FUN_100c7cb0(item);
|
FUN_100c7cb0(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
while(TRUE)
|
while (TRUE) {
|
||||||
{
|
item = (MxDSStreamingAction*) m_list0x64.Find(p_action, TRUE);
|
||||||
item = (MxDSStreamingAction*)m_list0x64.Find(p_action, TRUE);
|
if (item == NULL) {
|
||||||
if (item == NULL)
|
|
||||||
{
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
FUN_100c7cb0(item);
|
FUN_100c7cb0(item);
|
||||||
|
|||||||
@ -35,7 +35,10 @@ class MxDSStreamingAction : public MxDSAction {
|
|||||||
inline MxDSBuffer* GetUnknowna0() { return m_unk0xa0; }
|
inline MxDSBuffer* GetUnknowna0() { return m_unk0xa0; }
|
||||||
inline MxDSBuffer* GetUnknowna4() { return m_unk0xa4; }
|
inline MxDSBuffer* GetUnknowna4() { return m_unk0xa4; }
|
||||||
inline MxDSAction* GetInternalAction() { return m_internalAction; }
|
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 SetUnknowna0(MxDSBuffer* p_unk0xa0) { m_unk0xa0 = p_unk0xa0; }
|
||||||
|
inline void SetBufferOffset(MxU32 p_bufferOffset) { m_bufferOffset = p_bufferOffset; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MxU32 m_unk0x94;
|
MxU32 m_unk0x94;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user