From 8960096b3b61441bc1e2cf26f3739f254869fde2 Mon Sep 17 00:00:00 2001 From: Zero Fanker Date: Mon, 16 Dec 2024 12:44:53 -0500 Subject: [PATCH] fix: Theater translation issue, if no theater specified translation . --- MissionEditor/ViewObjects.cpp | 36 ++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/MissionEditor/ViewObjects.cpp b/MissionEditor/ViewObjects.cpp index b617afe..6b8b925 100644 --- a/MissionEditor/ViewObjects.cpp +++ b/MissionEditor/ViewObjects.cpp @@ -102,21 +102,35 @@ void CViewObjects::Dump(CDumpContext& dc) const } #endif //_DEBUG -CString GetTheaterLanguageString(LPCSTR lpString) +CString GetTheaterLanguageString(const CString& l10nTag) { - CString s = lpString; - CString t = lpString; + CString s = l10nTag; + CString t = l10nTag; - if ((tiledata) == &t_tiledata) t += "TEM"; - if ((tiledata) == &s_tiledata) t += "SNO"; - if ((tiledata) == &u_tiledata) t += "URB"; - if ((tiledata) == &un_tiledata) t += "UBN"; - if ((tiledata) == &l_tiledata) t += "LUN"; - if ((tiledata) == &d_tiledata) t += "DES"; +#define TO_ADDR(x) reinterpret_cast(x) + if (TO_ADDR(tiledata) == TO_ADDR(&t_tiledata)) { + t += "TEM"; + } + else if (TO_ADDR(tiledata) == TO_ADDR(&s_tiledata)) { + t += "SNO"; + } + else if (TO_ADDR(tiledata) == TO_ADDR(&u_tiledata)) { + t += "URB"; + } + else if (TO_ADDR(tiledata) == TO_ADDR(&un_tiledata)) { + t += "UBN"; + } + else if (TO_ADDR(tiledata) == TO_ADDR(&l_tiledata)) { + t += "LUN"; + } + else if (TO_ADDR(tiledata) == TO_ADDR(&d_tiledata)) { + t += "DES"; + } CString res = GetLanguageStringACP(t); - if (res.GetLength() == 0) res = GetLanguageStringACP(s); - + if (res.Left(l10nTag.GetLength()) == l10nTag || res.GetLength() == 0) { + res = GetLanguageStringACP(s); + } return res; }