#ifndef MXREGIONLIST_H #define MXREGIONLIST_H #include "mxlist.h" // SIZE 0x08 struct MxRegionLeftRight { MxRegionLeftRight(MxS32 p_left, MxS32 p_right) { m_left = p_left; m_right = p_right; } MxRegionLeftRight* Clone() { return new MxRegionLeftRight(m_left, m_right); } inline MxS32 GetLeft() { return m_left; } inline MxS32 GetRight() { return m_right; } inline void SetLeft(MxS32 p_left) { m_left = p_left; } inline void SetRight(MxS32 p_right) { m_right = p_right; } inline MxBool IntersectsWith(MxRect32& p_rect) { return m_left < p_rect.GetRight() && p_rect.GetTop() < m_right; } private: MxS32 m_left; // 0x00 MxS32 m_right; // 0x04 }; // VTABLE: LEGO1 0x100dcc40 // class MxCollection // VTABLE: LEGO1 0x100dcc58 // class MxList // VTABLE: LEGO1 0x100dcc70 // class MxPtrList // VTABLE: LEGO1 0x100dcc88 // SIZE 0x18 class MxRegionLeftRightList : public MxPtrList { public: MxRegionLeftRightList() : MxPtrList(TRUE) {} }; // VTABLE: LEGO1 0x100dcbf8 // class MxPtrListCursor // VTABLE: LEGO1 0x100dcc28 // class MxListCursor // VTABLE: LEGO1 0x100dcc10 class MxRegionLeftRightListCursor : public MxPtrListCursor { public: MxRegionLeftRightListCursor(MxRegionLeftRightList* p_list) : MxPtrListCursor(p_list){}; }; // SIZE 0x0c struct MxRegionTopBottom { MxRegionTopBottom(MxRect32& p_rect); MxRegionTopBottom(MxS32 p_top, MxS32 p_bottom); ~MxRegionTopBottom() { delete m_leftRightList; } MxRegionTopBottom* Clone(); void FUN_100c5280(MxS32 p_left, MxS32 p_right); MxBool FUN_100c57b0(MxRect32& p_rect); inline MxS32 GetTop() { return m_top; } inline MxS32 GetBottom() { return m_bottom; } inline void SetTop(MxS32 p_top) { m_top = p_top; } inline void SetBottom(MxS32 p_bottom) { m_bottom = p_bottom; } inline MxBool IntersectsWith(MxRect32& p_rect) { return m_top < p_rect.GetBottom() && p_rect.GetTop() < m_bottom; } friend class MxRegionTopBottomList; friend class MxRegionCursor; private: MxS32 m_top; // 0x00 MxS32 m_bottom; // 0x04 MxRegionLeftRightList* m_leftRightList; // 0x08 }; // VTABLE: LEGO1 0x100dcb10 // class MxCollection // VTABLE: LEGO1 0x100dcb28 // class MxList // VTABLE: LEGO1 0x100dcb40 // class MxPtrList // VTABLE: LEGO1 0x100dcb58 // SIZE 0x18 class MxRegionTopBottomList : public MxPtrList { public: MxRegionTopBottomList() : MxPtrList(TRUE) {} }; // VTABLE: LEGO1 0x100dcb70 // class MxPtrListCursor // VTABLE: LEGO1 0x100dcba0 // class MxListCursor // TODO: The initialize list param type should be MxRegionTopBottomList, but doing that // drastically reduced the match percentage for MxRegion::VTable0x18. // It also works with MxPtrList, so we'll do that until we figure this out. // VTABLE: LEGO1 0x100dcb88 class MxRegionTopBottomListCursor : public MxPtrListCursor { public: MxRegionTopBottomListCursor(MxPtrList* p_list) : MxPtrListCursor(p_list){}; }; // TEMPLATE: LEGO1 0x100c32e0 // MxCollection::Compare // TEMPLATE: LEGO1 0x100c3340 // MxCollection::Destroy // TEMPLATE: LEGO1 0x100c33e0 // MxPtrList::Destroy // SYNTHETIC: LEGO1 0x100c34d0 // MxCollection::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c3540 // MxList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c35f0 // MxPtrList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c3be0 // MxRegionTopBottomListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c3c50 // MxPtrListCursor::~MxPtrListCursor // SYNTHETIC: LEGO1 0x100c3ca0 // MxListCursor::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c3d10 // MxPtrListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c3d80 // MxListCursor::~MxListCursor // FUNCTION: LEGO1 0x100c3dd0 // MxRegionTopBottomListCursor::~MxRegionTopBottomListCursor // SYNTHETIC: LEGO1 0x100c4790 // MxRegionLeftRightListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c4800 // MxPtrListCursor::~MxPtrListCursor // SYNTHETIC: LEGO1 0x100c4850 // MxListCursor::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c48c0 // MxPtrListCursor::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c4930 // MxListCursor::~MxListCursor // TEMPLATE: LEGO1 0x100c4d80 // MxCollection::Compare // TEMPLATE: LEGO1 0x100c4de0 // MxCollection::Destroy // SYNTHETIC: LEGO1 0x100c4f50 // MxCollection::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c4e80 // MxPtrList::Destroy // SYNTHETIC: LEGO1 0x100c4fc0 // MxList::`scalar deleting destructor' // SYNTHETIC: LEGO1 0x100c5070 // MxPtrList::`scalar deleting destructor' // TEMPLATE: LEGO1 0x100c54f0 // MxListCursor::MxListCursor // FUNCTION: LEGO1 0x100c5560 // MxRegionLeftRightListCursor::~MxRegionLeftRightListCursor // TEMPLATE: LEGO1 0x100c55b0 // MxListCursor::operator= // TEMPLATE: LEGO1 0x100c58c0 // MxList::InsertEntry // TEMPLATE: LEGO1 0x100c5970 // MxList::InsertEntry // TEMPLATE: LEGO1 0x100c5a20 // MxListEntry::MxListEntry // TEMPLATE: LEGO1 0x100c5a40 // MxList::DeleteEntry #endif // MXREGIONLIST_H