mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-23 00:14:22 +00:00
MxFlcPresenter vtable70, m_unk64 (#304)
* MxFlcPresenter: vtable70 * begin work on MxFlcPresenter's m_unk64 * Add another function that makes use of the FLIC header * Remove space --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
@@ -11,7 +11,7 @@ DECOMP_SIZE_ASSERT(MxFlcPresenter, 0x68);
|
||||
// OFFSET: LEGO1 0x100b3310
|
||||
MxFlcPresenter::MxFlcPresenter()
|
||||
{
|
||||
this->m_unk64 = 0;
|
||||
this->m_flicHeader = NULL;
|
||||
this->m_flags &= 0xfd;
|
||||
this->m_flags &= 0xfb;
|
||||
}
|
||||
@@ -19,11 +19,28 @@ MxFlcPresenter::MxFlcPresenter()
|
||||
// OFFSET: LEGO1 0x100b3420
|
||||
MxFlcPresenter::~MxFlcPresenter()
|
||||
{
|
||||
if (this->m_unk64) {
|
||||
delete this->m_unk64;
|
||||
if (this->m_flicHeader) {
|
||||
delete this->m_flicHeader;
|
||||
}
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b3490
|
||||
void MxFlcPresenter::LoadHeader(MxStreamChunk* p_chunk)
|
||||
{
|
||||
m_flicHeader = (FLIC_HEADER*) new MxU8[p_chunk->GetLength()];
|
||||
memcpy(m_flicHeader, p_chunk->GetData(), p_chunk->GetLength());
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b34d0
|
||||
void MxFlcPresenter::CreateBitmap()
|
||||
{
|
||||
if (m_bitmap)
|
||||
delete m_bitmap;
|
||||
|
||||
m_bitmap = new MxBitmap;
|
||||
m_bitmap->SetSize(m_flicHeader->width, m_flicHeader->height, NULL, FALSE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b3620
|
||||
void MxFlcPresenter::VTable0x70()
|
||||
{
|
||||
|
@@ -4,6 +4,8 @@
|
||||
#include "decomp.h"
|
||||
#include "mxvideopresenter.h"
|
||||
|
||||
#include <flic.h>
|
||||
|
||||
// VTABLE 0x100dc2c0
|
||||
// SIZE 0x68
|
||||
class MxFlcPresenter : public MxVideoPresenter {
|
||||
@@ -24,9 +26,12 @@ public:
|
||||
return "MxFlcPresenter";
|
||||
}
|
||||
|
||||
virtual void VTable0x70() override; // vtable+0x70
|
||||
virtual void LoadHeader(MxStreamChunk* p_chunk) override; // vtable+0x5c
|
||||
virtual void CreateBitmap() override; // vtable+0x60
|
||||
virtual void VTable0x70() override; // vtable+0x70
|
||||
|
||||
undefined4* m_unk64;
|
||||
protected:
|
||||
FLIC_HEADER* m_flicHeader;
|
||||
};
|
||||
|
||||
#endif // MXFLCPRESENTER_H
|
||||
|
@@ -29,3 +29,21 @@ void MxLoopingFlcPresenter::Destroy(MxBool p_fromDestructor)
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b4470
|
||||
void MxLoopingFlcPresenter::NextFrame()
|
||||
{
|
||||
MxStreamChunk* chunk = NextChunk();
|
||||
|
||||
if (chunk->GetFlags() & MxStreamChunk::Flag_Bit2) {
|
||||
m_previousTickleStates |= 1 << (unsigned char) m_currentTickleState;
|
||||
m_currentTickleState = TickleState_Repeating;
|
||||
}
|
||||
else {
|
||||
LoadFrame(chunk);
|
||||
AppendChunk(chunk);
|
||||
m_unk68 += m_flicHeader->speed;
|
||||
}
|
||||
|
||||
m_subscriber->FUN_100b8390(chunk);
|
||||
}
|
||||
|
@@ -18,6 +18,8 @@ public:
|
||||
return "MxLoopingFlcPresenter";
|
||||
}
|
||||
|
||||
virtual void NextFrame() override; // vtable+0x64
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
Reference in New Issue
Block a user