diff --git a/src/xrCore/XML/XMLDocument.cpp b/src/xrCore/XML/XMLDocument.cpp index 3d383fcdcf0..de5c1da4ed6 100644 --- a/src/xrCore/XML/XMLDocument.cpp +++ b/src/xrCore/XML/XMLDocument.cpp @@ -1,9 +1,9 @@ #include "stdafx.h" -#pragma hdrstop #include "XMLDocument.hpp" -pcstr UI_PATH = "ui"; +pcstr UI_PATH = UI_PATH_DEFAULT; +pcstr UI_PATH_WITH_DELIMITER = UI_PATH_DEFAULT_WITH_DELIMITER; XMLDocument::XMLDocument() : m_root(), m_pLocalRoot() {} @@ -28,11 +28,11 @@ void ParseFile(pcstr path, CMemoryWriter& W, IReader* F, XMLDocument* xml) while (char* sep = strchr(inc_name, '\\')) *sep = '/'; #endif IReader* I = nullptr; - if (inc_name == strstr(inc_name, "ui" DELIMITER )) + if (inc_name == strstr(inc_name, UI_PATH_DEFAULT_WITH_DELIMITER)) { - shared_str fn = xml->correct_file_name("ui", strchr(inc_name, _DELIMITER) + 1); + shared_str fn = xml->correct_file_name(UI_PATH, strchr(inc_name, _DELIMITER) + 1); string_path buff; - strconcat(sizeof buff, buff, "ui" DELIMITER , fn.c_str()); + strconcat(sizeof buff, buff, UI_PATH_WITH_DELIMITER, fn.c_str()); I = FS.r_open(path, buff); } diff --git a/src/xrCore/XML/XMLDocument.hpp b/src/xrCore/XML/XMLDocument.hpp index b7d74481551..ce435b9fbbf 100644 --- a/src/xrCore/XML/XMLDocument.hpp +++ b/src/xrCore/XML/XMLDocument.hpp @@ -16,7 +16,9 @@ // XXX: interesting idea is to have variable configs folder. Need we? static constexpr pcstr CONFIG_PATH = _game_config_; static constexpr pcstr UI_PATH_DEFAULT = "ui"; +static constexpr pcstr UI_PATH_DEFAULT_WITH_DELIMITER = "ui" DELIMITER; XRCORE_API extern pcstr UI_PATH; +XRCORE_API extern pcstr UI_PATH_WITH_DELIMITER; class XML_NODE { diff --git a/src/xrGame/GamePersistent.cpp b/src/xrGame/GamePersistent.cpp index f7d04fa0801..d7ff7fad1a1 100644 --- a/src/xrGame/GamePersistent.cpp +++ b/src/xrGame/GamePersistent.cpp @@ -85,6 +85,10 @@ void SetupUIStyle() strconcat(sizeof(selectedStylePath), selectedStylePath, UI_PATH, DELIMITER "styles" DELIMITER, selectedStyle); UI_PATH = xr_strdup(selectedStylePath); + + strconcat(sizeof(selectedStylePath), selectedStylePath, selectedStylePath, DELIMITER); + UI_PATH_WITH_DELIMITER = xr_strdup(selectedStylePath); + defaultUIStyle = false; } @@ -97,7 +101,10 @@ void CleanupUIStyleToken() } UIStyleToken.clear(); if (!defaultUIStyle) + { xr_free(UI_PATH); + xr_free(UI_PATH_WITH_DELIMITER); + } } CGamePersistent::CGamePersistent(void) diff --git a/src/xrUICore/XML/xrUIXmlParser.cpp b/src/xrUICore/XML/xrUIXmlParser.cpp index c31be655a1d..73ab5dc4ff4 100644 --- a/src/xrUICore/XML/xrUIXmlParser.cpp +++ b/src/xrUICore/XML/xrUIXmlParser.cpp @@ -12,11 +12,9 @@ shared_str CUIXml::correct_file_name(pcstr path, pcstr fn) { return UI().get_xml_name(fn); } - else - return fn; -#else - return fn; #endif + + return fn; } CUIXml::CUIXml() diff --git a/src/xrUICore/ui_base.cpp b/src/xrUICore/ui_base.cpp index 1311ce0e1fe..8d3f742f49f 100644 --- a/src/xrUICore/ui_base.cpp +++ b/src/xrUICore/ui_base.cpp @@ -1,6 +1,7 @@ #include "pch.hpp" #include "ui_base.h" #include "Cursor/UICursor.h" +#include "xrCore/XML/XMLDocument.hpp" CUICursor& GetUICursor() { return GEnv.UI->GetUICursor(); } UICore& UI() { return *GEnv.UI; } @@ -291,7 +292,7 @@ shared_str UICore::get_xml_name(LPCSTR fn) else xr_sprintf(str, "%s_16", fn); - if (NULL == FS.exist(str_, "$game_config$", "ui" DELIMITER , str)) + if (NULL == FS.exist(str_, "$game_config$", UI_PATH_WITH_DELIMITER, str)) { xr_sprintf(str, "%s", fn); if (NULL == strext(fn))