From 7f2ec17f9bf2b3a087b1e77a8c0b65a632262be9 Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 21 Feb 2014 09:02:17 +0000 Subject: [PATCH] Merged from revision: 6953 - Increased text limit for load screen hints from 190 to 254 o Hopefully this does not cause any problems when rendering on the loadscreens. Tests resulted in success - Support for localization of LoadScreenHints.xml (*.LoadScreenHints.xml) o Now the language specific xmls only have the and attributes. All other attributes are in the LoadScreenHints.xml git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6954 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Init.cpp | 29 ++++++++++------------------- Tactical/XML.h | 2 +- Tactical/XML_LoadScreenHints.cpp | 21 +++++++++++++++++---- Utils/Animated ProgressBar.h | 4 +++- 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/Init.cpp b/Init.cpp index e2f6fc59..b06b1441 100644 --- a/Init.cpp +++ b/Init.cpp @@ -385,26 +385,17 @@ BOOLEAN LoadExternalGameplayData(STR directoryName) strcpy(fileName, directoryName); strcat(fileName, LOADSCREENHINTSFILENAME); + SGP_THROW_IFFALSE(ReadInLoadScreenHints(fileName, FALSE),LOADSCREENHINTSFILENAME); + + #ifndef ENGLISH + AddLanguagePrefix(fileName); + if ( FileExists(fileName) ) + { + DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName)); + SGP_THROW_IFFALSE(ReadInLoadScreenHints(fileName,TRUE), fileName); + } + #endif -#ifndef ENGLISH - AddLanguagePrefix(fileName); - - if ( FileExists(fileName) ) - { - SGP_THROW_IFFALSE(ReadInLoadScreenHints(fileName),LOADSCREENHINTSFILENAME); - } - else - { - //CHRISL: If we fail to load, try loading just the default english - strcpy(fileName, directoryName); - strcat(fileName, LOADSCREENHINTSFILENAME); - SGP_THROW_IFFALSE(ReadInLoadScreenHints(fileName),LOADSCREENHINTSFILENAME); - } -#else - SGP_THROW_IFFALSE(ReadInLoadScreenHints(fileName),LOADSCREENHINTSFILENAME); -#endif - - strcpy(fileName, directoryName); strcat(fileName, ARMOURSFILENAME); SGP_THROW_IFFALSE(ReadInArmourStats(fileName),ARMOURSFILENAME); diff --git a/Tactical/XML.h b/Tactical/XML.h index 1650324e..f5213f41 100644 --- a/Tactical/XML.h +++ b/Tactical/XML.h @@ -323,7 +323,7 @@ extern BOOLEAN ReadInSquadNamesStats(STR fileName); extern BOOLEAN WriteSquadNamesStats(); // Flugente: loadscreen hints -extern BOOLEAN ReadInLoadScreenHints(STR fileName); +extern BOOLEAN ReadInLoadScreenHints(STR fileName, BOOLEAN localizedVersion); extern BOOLEAN WriteLoadScreenHints(); // Flugente: soldier profiles diff --git a/Tactical/XML_LoadScreenHints.cpp b/Tactical/XML_LoadScreenHints.cpp index 70808dd5..180f763b 100644 --- a/Tactical/XML_LoadScreenHints.cpp +++ b/Tactical/XML_LoadScreenHints.cpp @@ -24,6 +24,8 @@ struct } typedef enemyRankParseData; +BOOLEAN localizedTextOnly_LoadScreenHints; + UINT16 num_found_loadscreenhints = 0; // the correct number is set on reading the xml LOADSCREENHINT_STRUCT zLoadScreenHint[LOADSCREENHINT_MAX]; @@ -39,7 +41,8 @@ loadscreenhintsStartElementHandle(void *userData, const XML_Char *name, const XM { pData->curElement = ELEMENT_LIST; - memset(pData->curArray,0,sizeof(LOADSCREENHINT_STRUCT)*pData->maxArraySize); + if (!localizedTextOnly_LoadScreenHints) + memset(pData->curArray,0,sizeof(LOADSCREENHINT_STRUCT)*pData->maxArraySize); pData->maxReadDepth++; //we are not skipping this element } @@ -47,7 +50,8 @@ loadscreenhintsStartElementHandle(void *userData, const XML_Char *name, const XM { pData->curElement = ELEMENT; - memset(&pData->curLoadScreenHint,0,sizeof(LOADSCREENHINT_STRUCT)); + if (!localizedTextOnly_LoadScreenHints) + memset(&pData->curLoadScreenHint,0,sizeof(LOADSCREENHINT_STRUCT)); pData->maxReadDepth++; //we are not skipping this element } @@ -104,7 +108,14 @@ loadscreenhintsEndElementHandle(void *userData, const XML_Char *name) if(pData->curLoadScreenHint.uiIndex < pData->maxArraySize) { - pData->curArray[pData->curLoadScreenHint.uiIndex] = pData->curLoadScreenHint; + if (!localizedTextOnly_LoadScreenHints) + { + pData->curArray[pData->curLoadScreenHint.uiIndex] = pData->curLoadScreenHint; + } + else + { + wcscpy(zLoadScreenHint[pData->curLoadScreenHint.uiIndex].szName, pData->curLoadScreenHint.szName); + } } num_found_loadscreenhints = pData->curLoadScreenHint.uiIndex; @@ -172,7 +183,7 @@ loadscreenhintsEndElementHandle(void *userData, const XML_Char *name) pData->currentDepth--; } -BOOLEAN ReadInLoadScreenHints(STR fileName) +BOOLEAN ReadInLoadScreenHints(STR fileName, BOOLEAN localizedVersion) { HWFILE hFile; UINT32 uiBytesRead; @@ -182,6 +193,8 @@ BOOLEAN ReadInLoadScreenHints(STR fileName) enemyRankParseData pData; + localizedTextOnly_LoadScreenHints = localizedVersion; + DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading LoadScreenHints.xml" ); // Open file diff --git a/Utils/Animated ProgressBar.h b/Utils/Animated ProgressBar.h index 195498eb..c6dac9af 100644 --- a/Utils/Animated ProgressBar.h +++ b/Utils/Animated ProgressBar.h @@ -35,7 +35,9 @@ extern PROGRESSBAR *pBar[ MAX_PROGRESSBARS ]; typedef struct { UINT16 uiIndex; - CHAR16 szName[190]; // text of the hint. Note that this size + any text it is used in msut be < than CHAR16 pzText[ 200 ]; of VIDEO_OVERLAY_DESC if you display this in any logs + // WANNE: I changed them from 190 to 256 because otherwise it is too short for the loadscreen hints. I works just fine even if it is > 200. + CHAR16 szName[256]; // text of the hint. Note that this size + any text it is used in msut be < than CHAR16 pzText[ 200 ]; of VIDEO_OVERLAY_DESC if you display this in any logs + UINT32 usFlags; // flags that can be used to determine wether a hint is currently appropriate BOOLEAN fAlreadyShown; // to remember if this hint has already been shown in this game (reset on starting exe) } LOADSCREENHINT_STRUCT;