mirror of
https://github.com/isledecomp/isle-portable.git
synced 2025-09-26 06:02:52 -04:00
Finish implementation of MxSmack (#349)
* Finish implementation of MxSmack * Fix var name
This commit is contained in:
parent
c51aed256b
commit
acdaf4ed4c
@ -206,11 +206,11 @@ MxResult MxSmack::LoadFrame(
|
|||||||
|
|
||||||
SmackDoFrameToBuffer(p_chunkData, p_mxSmack->m_huffmanTables, p_mxSmack->m_unk0x6b4);
|
SmackDoFrameToBuffer(p_chunkData, p_mxSmack->m_huffmanTables, p_mxSmack->m_unk0x6b4);
|
||||||
|
|
||||||
MxS16 und1 = 1;
|
MxU16 und = 1;
|
||||||
MxU32 und2[4];
|
u32 smackRect[4];
|
||||||
MxRect32 rect;
|
MxRect32 rect;
|
||||||
|
|
||||||
while (FUN_100c6050(p_mxSmack->m_unk0x6b4, &und1, und2, &rect)) {
|
while (GetRect(p_mxSmack->m_unk0x6b4, &und, smackRect, &rect)) {
|
||||||
MxRect32* newRect = new MxRect32(rect);
|
MxRect32* newRect = new MxRect32(rect);
|
||||||
p_list->Append(newRect);
|
p_list->Append(newRect);
|
||||||
}
|
}
|
||||||
@ -218,9 +218,35 @@ MxResult MxSmack::LoadFrame(
|
|||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x100c6050
|
// FUNCTION: LEGO1 0x100c6050
|
||||||
MxBool MxSmack::FUN_100c6050(MxU8* p_unk0x6b4, MxS16* p_und1, MxU32* p_und2, MxRect32* p_rect)
|
MxBool MxSmack::GetRect(MxU8* p_unk0x6b4, MxU16* p_und, u32* p_smackRect, MxRect32* p_rect)
|
||||||
{
|
{
|
||||||
// TODO
|
u32 left, bottom, top, right;
|
||||||
|
|
||||||
|
if (!*p_und)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (*p_und == 1) {
|
||||||
|
if (!SmackGetRect(p_unk0x6b4, p_smackRect))
|
||||||
|
return FALSE;
|
||||||
|
*p_und = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
left = p_smackRect[0];
|
||||||
|
top = p_smackRect[1];
|
||||||
|
right = p_smackRect[2] + p_smackRect[0];
|
||||||
|
bottom = p_smackRect[3] + p_smackRect[1];
|
||||||
|
|
||||||
|
while (SmackGetRect(p_unk0x6b4, p_smackRect)) {
|
||||||
|
if (left > p_smackRect[0])
|
||||||
|
left = p_smackRect[0];
|
||||||
|
if (right < p_smackRect[0] + p_smackRect[2])
|
||||||
|
right = p_smackRect[0] + p_smackRect[2];
|
||||||
|
|
||||||
|
bottom = p_smackRect[1] + p_smackRect[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
*p_und = 0;
|
||||||
|
*p_rect = MxRect32(left, top, right, bottom);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,9 @@ extern "C"
|
|||||||
|
|
||||||
// (SMACK.LIB) FUNCTION: LEGO1 0x100d052c
|
// (SMACK.LIB) FUNCTION: LEGO1 0x100d052c
|
||||||
u32 SmackGetSizeDeltas(u32 p_width, u32 p_height);
|
u32 SmackGetSizeDeltas(u32 p_width, u32 p_height);
|
||||||
|
|
||||||
|
// (SMACK.LIB) FUNCTION: LEGO1 0x100d0543
|
||||||
|
u8 SmackGetRect(u8* p_unk0x6b4, u32* p_rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SIZE 0x6b8
|
// SIZE 0x6b8
|
||||||
@ -53,7 +56,7 @@ struct MxSmack {
|
|||||||
MxBool p_paletteChanged,
|
MxBool p_paletteChanged,
|
||||||
MxRectList* p_list
|
MxRectList* p_list
|
||||||
);
|
);
|
||||||
static MxBool FUN_100c6050(MxU8* p_unk0x6b4, MxS16* p_und1, MxU32* p_und2, MxRect32* p_rect);
|
static MxBool GetRect(MxU8* p_unk0x6b4, MxU16* p_und, u32* p_smackRect, MxRect32* p_rect);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MXSMACK_H
|
#endif // MXSMACK_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user