diff --git a/LEGO1/mxrect32.h b/LEGO1/mxrect32.h index 42e3672b..53297b59 100644 --- a/LEGO1/mxrect32.h +++ b/LEGO1/mxrect32.h @@ -1,6 +1,9 @@ #ifndef MXRECT32_H #define MXRECT32_H +#include "mxpoint32.h" +#include "mxsize32.h" + class MxRect32 { public: @@ -13,20 +16,33 @@ public: this->m_bottom = p_bottom; } + MxRect32(const MxPoint32 &p_point, const MxSize32 &p_size) + { + this->m_left = p_point.m_x; + this->m_top = p_point.m_y; + this->m_right = p_size.m_width; + this->m_bottom = p_size.m_height; + } + MxS32 m_left; MxS32 m_top; MxS32 m_right; MxS32 m_bottom; - inline MxS32 GetWidth() + inline void SetPoint(const MxPoint32 &p_point) { - return (m_right - m_left) + 1; + this->m_left = p_point.m_x; + this->m_top = p_point.m_y; } - inline MxS32 GetHeight() + inline void SetSize(const MxSize32 &p_size) { - return (m_bottom - m_top) + 1; + this->m_right = p_size.m_width; + this->m_bottom = p_size.m_height; } + + inline MxS32 GetWidth() { return (m_right - m_left) + 1; } + inline MxS32 GetHeight() { return (m_bottom - m_top) + 1; } }; #endif // MXRECT32_H diff --git a/LEGO1/mxregion.cpp b/LEGO1/mxregion.cpp index d6693e0a..97b694cf 100644 --- a/LEGO1/mxregion.cpp +++ b/LEGO1/mxregion.cpp @@ -10,10 +10,8 @@ DECOMP_SIZE_ASSERT(MxRegionLeftRight, 0x08); MxRegion::MxRegion() { m_list = new MxRegionList; - m_rect.m_left = INT_MAX; - m_rect.m_top = INT_MAX; - m_rect.m_right = -1; - m_rect.m_bottom = - 1; + m_rect.SetPoint(MxPoint32(INT_MAX, INT_MAX)); + m_rect.SetSize(MxSize32(-1, -1)); } // OFFSET: LEGO1 0x100c3660 STUB @@ -38,7 +36,10 @@ void MxRegion::Reset() // OFFSET: LEGO1 0x100c3750 void MxRegion::vtable18(MxRect32 &p_rect) { - MxRect32 rectCopy(p_rect.m_left, p_rect.m_top, p_rect.m_right, p_rect.m_bottom); + MxRect32 rectCopy( + MxPoint32(p_rect.m_left, p_rect.m_top), + MxSize32(p_rect.m_right, p_rect.m_bottom) + ); MxRegionListCursor cursor(m_list); if (rectCopy.m_left < rectCopy.m_right) { @@ -54,7 +55,11 @@ void MxRegion::vtable18(MxRect32 &p_rect) } else if (rectCopy.m_top < topBottom->m_bottom) { if (rectCopy.m_top < topBottom->m_top) { - MxRect32 topBottomRect(rectCopy.m_left, rectCopy.m_top, rectCopy.m_right, topBottom->m_top); + MxRect32 topBottomRect( + MxPoint32(rectCopy.m_left, rectCopy.m_top), + MxSize32(rectCopy.m_right, topBottom->m_top) + ); + MxRegionTopBottom *newTopBottom = new MxRegionTopBottom(topBottomRect); cursor.Prepend(newTopBottom); rectCopy.m_top = topBottom->m_top; diff --git a/LEGO1/mxsize32.h b/LEGO1/mxsize32.h new file mode 100644 index 00000000..83f62824 --- /dev/null +++ b/LEGO1/mxsize32.h @@ -0,0 +1,20 @@ +#ifndef MXSIZE32_H +#define MXSIZE32_H + +#include "mxtypes.h" + +class MxSize32 +{ +public: + MxSize32() { } + MxSize32(MxS32 p_width, MxS32 p_height) + { + this->m_width = p_width; + this->m_height = p_height; + } + + MxS32 m_width; + MxS32 m_height; +}; + +#endif // MXSIZE32_H