Index: source/graphics/MiniPatch.h =================================================================== --- source/graphics/MiniPatch.h +++ source/graphics/MiniPatch.h @@ -24,7 +24,7 @@ #include "lib/res/handle.h" -#include "graphics/TerrainTextureEntry.h" +class CTerrainTextureEntry; /////////////////////////////////////////////////////////////////////////////// // CMiniPatch: definition of a single terrain tile Index: source/graphics/SkeletonAnimDef.cpp =================================================================== --- source/graphics/SkeletonAnimDef.cpp +++ source/graphics/SkeletonAnimDef.cpp @@ -24,6 +24,7 @@ #include "SkeletonAnimDef.h" #include "maths/MathUtil.h" #include "maths/Matrix3D.h" +#include "ps/CStr.h" #include "ps/FileIo.h" Index: source/graphics/TerrainTextureEntry.cpp =================================================================== --- source/graphics/TerrainTextureEntry.cpp +++ source/graphics/TerrainTextureEntry.cpp @@ -22,6 +22,7 @@ #include "lib/utf8.h" #include "lib/ogl.h" #include "lib/allocators/shared_ptr.h" +#include "lib/file/io/io.h" #include "lib/res/graphics/ogl_tex.h" #include "ps/CLogger.h" Index: source/gui/CGUI.h =================================================================== --- source/gui/CGUI.h +++ source/gui/CGUI.h @@ -24,7 +24,6 @@ #define INCLUDED_CGUI #include "gui/GUITooltip.h" -#include "gui/ObjectTypes/CGUIDummyObject.h" #include "gui/SettingTypes/CGUIColor.h" #include "gui/SGUIIcon.h" #include "gui/SGUIStyle.h" @@ -49,6 +48,8 @@ namespace js { class BaseProxyHandler; } +using map_pObjects = std::map; + /** * The main object that represents a whole GUI page. */ @@ -146,7 +147,7 @@ /** * Return the object which is an ancestor of every other GUI object. */ - CGUIDummyObject& GetBaseObject() { return m_BaseObject; }; + IGUIObject* GetBaseObject(); /** * Checks if object exists and return true or false accordingly @@ -570,7 +571,7 @@ * Base Object, all its children are considered parentless * because this is not a real object per se. */ - CGUIDummyObject m_BaseObject; + std::unique_ptr m_BaseObject; /** * Focused object! Index: source/gui/CGUI.cpp =================================================================== --- source/gui/CGUI.cpp +++ source/gui/CGUI.cpp @@ -63,7 +63,7 @@ const CStr CGUI::EventNameMouseRightRelease = "MouseRightRelease"; CGUI::CGUI(const shared_ptr& context) - : m_BaseObject(*this), + : m_BaseObject(new CGUIDummyObject(*this)), m_FocusedObject(nullptr), m_InternalNameNumber(0), m_MouseButtons(0) @@ -126,7 +126,7 @@ m_MousePos = CPos((float)ev->ev.motion.x / g_GuiScale, (float)ev->ev.motion.y / g_GuiScale); SGUIMessage msg(GUIM_MOUSE_MOTION); - m_BaseObject.RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::HandleMessage, msg); + m_BaseObject->RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::HandleMessage, msg); } // Update m_MouseButtons. (BUTTONUP is handled later.) @@ -164,7 +164,7 @@ // Now we'll call UpdateMouseOver on *all* objects, // we'll input the one hovered, and they will each // update their own data and send messages accordingly - m_BaseObject.RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::UpdateMouseOver, static_cast(pNearest)); + m_BaseObject->RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::UpdateMouseOver, static_cast(pNearest)); if (ev->ev.type == SDL_MOUSEBUTTONDOWN) { @@ -223,10 +223,10 @@ } // Reset all states on all visible objects - m_BaseObject.RecurseObject(&IGUIObject::IsHidden, &IGUIObject::ResetStates); + m_BaseObject->RecurseObject(&IGUIObject::IsHidden, &IGUIObject::ResetStates); // Since the hover state will have been reset, we reload it. - m_BaseObject.RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::UpdateMouseOver, static_cast(pNearest)); + m_BaseObject->RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::UpdateMouseOver, static_cast(pNearest)); } } @@ -266,7 +266,7 @@ void CGUI::TickObjects() { - m_BaseObject.RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::Tick); + m_BaseObject->RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::Tick); SendEventToAll(EventNameTick); m_Tooltip.Update(FindObjectUnderMouse(), m_MousePos, *this); } @@ -299,7 +299,7 @@ // drawn on top of everything else glClear(GL_DEPTH_BUFFER_BIT); - m_BaseObject.RecurseObject(&IGUIObject::IsHidden, &IGUIObject::Draw); + m_BaseObject->RecurseObject(&IGUIObject::IsHidden, &IGUIObject::Draw); } void CGUI::DrawSprite(const CGUISpriteInstance& Sprite, int CellID, const float& Z, const CRect& Rect, const CRect& UNUSED(Clipping)) @@ -315,7 +315,7 @@ void CGUI::UpdateResolution() { - m_BaseObject.RecurseObject(nullptr, &IGUIObject::UpdateCachedSize); + m_BaseObject->RecurseObject(nullptr, &IGUIObject::UpdateCachedSize); } IGUIObject* CGUI::ConstructObject(const CStr& str) @@ -347,6 +347,16 @@ return true; } +IGUIObject* CGUI::GetBaseObject() +{ + return m_BaseObject.get(); +}; + +IGUIObject* CGUI::GetBaseObject() +{ + return m_BaseObject.get(); +}; + bool CGUI::ObjectExists(const CStr& Name) const { return m_pAllObjects.find(Name) != m_pAllObjects.end(); @@ -365,7 +375,7 @@ IGUIObject* CGUI::FindObjectUnderMouse() { IGUIObject* pNearest = nullptr; - m_BaseObject.RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::ChooseMouseOverAndClosest, pNearest); + m_BaseObject->RecurseObject(&IGUIObject::IsHiddenOrGhost, &IGUIObject::ChooseMouseOverAndClosest, pNearest); return pNearest; } @@ -487,10 +497,10 @@ void CGUI::LoadedXmlFiles() { - m_BaseObject.RecurseObject(nullptr, &IGUIObject::UpdateCachedSize); + m_BaseObject->RecurseObject(nullptr, &IGUIObject::UpdateCachedSize); SGUIMessage msg(GUIM_LOAD); - m_BaseObject.RecurseObject(nullptr, &IGUIObject::HandleMessage, msg); + m_BaseObject->RecurseObject(nullptr, &IGUIObject::HandleMessage, msg); SendEventToAll(EventNameLoad); } @@ -514,7 +524,7 @@ Xeromyces_ReadScript(child, pFile, Paths); else // Read in this whole object into the GUI - Xeromyces_ReadObject(child, pFile, &m_BaseObject, subst, Paths, 0); + Xeromyces_ReadObject(child, pFile, m_BaseObject.get(), subst, Paths, 0); } } @@ -1259,7 +1269,7 @@ object->SetSettingFromString(attr_name, attr_value.FromUTF8(), true); } - if (!AddObject(m_BaseObject, *object)) + if (!AddObject(*m_BaseObject, *object)) delete object; } Index: source/gui/ObjectBases/IGUIObject.h =================================================================== --- source/gui/ObjectBases/IGUIObject.h +++ source/gui/ObjectBases/IGUIObject.h @@ -42,8 +42,6 @@ template class JSI_GUIProxy; -using map_pObjects = std::map; - #define GUI_OBJECT(obj) \ public: \ static IGUIObject* ConstructObject(CGUI& pGUI) \ Index: source/gui/ObjectBases/IGUIObject.cpp =================================================================== --- source/gui/ObjectBases/IGUIObject.cpp +++ source/gui/ObjectBases/IGUIObject.cpp @@ -542,12 +542,12 @@ bool IGUIObject::IsBaseObject() const { - return this == &m_pGUI.GetBaseObject(); + return this == m_pGUI.GetBaseObject(); } bool IGUIObject::IsRootObject() const { - return m_pParent == &m_pGUI.GetBaseObject(); + return m_pParent == m_pGUI.GetBaseObject(); } void IGUIObject::TraceMember(JSTracer* trc) Index: source/ps/Filesystem.h =================================================================== --- source/ps/Filesystem.h +++ source/ps/Filesystem.h @@ -19,7 +19,6 @@ #define INCLUDED_PS_FILESYSTEM #include "lib/file/file.h" -#include "lib/file/io/io.h" #include "lib/file/io/write_buffer.h" #include "lib/file/vfs/vfs_util.h" Index: source/ps/SavedGame.cpp =================================================================== --- source/ps/SavedGame.cpp +++ source/ps/SavedGame.cpp @@ -23,6 +23,7 @@ #include "i18n/L10n.h" #include "lib/allocators/shared_ptr.h" #include "lib/file/archive/archive_zip.h" +#include "lib/file/io/io.h" #include "lib/utf8.h" #include "maths/Vector3D.h" #include "ps/CLogger.h" Index: source/ps/XML/XMLWriter.h =================================================================== --- source/ps/XML/XMLWriter.h +++ source/ps/XML/XMLWriter.h @@ -62,8 +62,8 @@ */ #include "lib/file/vfs/vfs.h" +#include "ps/CStr.h" -class CStr8; class XMBElement; class XMBFile; class XMLWriter_Element; @@ -98,7 +98,7 @@ bool m_PrettyPrint; - CStr8 m_Data; + CStr m_Data; int m_Indent; XMLWriter_Element* m_LastElement; }; @@ -119,7 +119,7 @@ friend class XMLWriter_File; XMLWriter_File* m_File; - CStr8 m_Name; + CStr m_Name; int m_Type; }; Index: source/renderer/DecalRData.h =================================================================== --- source/renderer/DecalRData.h +++ source/renderer/DecalRData.h @@ -18,7 +18,6 @@ #ifndef INCLUDED_DECALRDATA #define INCLUDED_DECALRDATA -#include "graphics/Camera.h" #include "graphics/RenderableObject.h" #include "graphics/ShaderProgramPtr.h" #include "renderer/VertexArray.h" Index: source/renderer/PatchRData.cpp =================================================================== --- source/renderer/PatchRData.cpp +++ source/renderer/PatchRData.cpp @@ -25,6 +25,7 @@ #include "graphics/Patch.h" #include "graphics/ShaderManager.h" #include "graphics/Terrain.h" +#include "graphics/TerrainTextureEntry.h" #include "graphics/TextRenderer.h" #include "lib/alignment.h" #include "lib/allocators/arena.h"