Disease: Added support for language specific Disease files (German.Disease.xml, French.Disease.xml, ...)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8077 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2016-03-01 23:00:27 +00:00
parent a71bf7d78f
commit ee7b935456
3 changed files with 31 additions and 7 deletions
+10 -1
View File
@@ -371,7 +371,16 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
strcpy( fileName, directoryName );
strcat( fileName, DISEASEFILENAME );
SGP_THROW_IFFALSE( ReadInDiseaseStats( fileName ), DISEASEFILENAME );
SGP_THROW_IFFALSE( ReadInDiseaseStats( fileName,FALSE ), DISEASEFILENAME );
#ifndef ENGLISH
AddLanguagePrefix(fileName);
if ( FileExists(fileName) )
{
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
SGP_THROW_IFFALSE(ReadInDiseaseStats(fileName,TRUE), DISEASEFILENAME);
}
#endif
strcpy(fileName, directoryName);
strcat(fileName, STRUCTUREDECONSTRUCTFILENAME);
+1 -1
View File
@@ -331,7 +331,7 @@ extern BOOLEAN ReadInFoodOpinionStats(STR fileName);
extern BOOLEAN WriteFoodOpinionStats();
// Flugente: disease
extern BOOLEAN ReadInDiseaseStats( STR fileName );
BOOLEAN ReadInDiseaseStats( STR fileName, BOOLEAN localizedVersion );
extern BOOLEAN WriteDiseaseStats( );
// Flugente: structure (de-)construct
+20 -5
View File
@@ -23,6 +23,8 @@ struct
}
typedef parseData;
BOOLEAN localizedTextOnly_Disease;
static void XMLCALL
diseaseStartElementHandle( void *userData, const XML_Char *name, const XML_Char **atts )
{
@@ -33,8 +35,9 @@ diseaseStartElementHandle( void *userData, const XML_Char *name, const XML_Char
if ( strcmp( name, "DISEASESLIST" ) == 0 && pData->curElement == ELEMENT_NONE )
{
pData->curElement = ELEMENT_LIST;
memset( pData->curArray, 0, sizeof(DISEASE)*pData->maxArraySize );
if ( !localizedTextOnly_Disease )
memset( pData->curArray, 0, sizeof(DISEASE)*pData->maxArraySize );
pData->maxReadDepth++; //we are not skipping this element
}
@@ -42,7 +45,8 @@ diseaseStartElementHandle( void *userData, const XML_Char *name, const XML_Char
{
pData->curElement = ELEMENT;
memset( &pData->curItem, 0, sizeof(DISEASE) );
if ( !localizedTextOnly_Disease )
memset( &pData->curItem, 0, sizeof(DISEASE) );
// default value
pData->curItem.moralemodifier = 1.0f;
@@ -135,7 +139,16 @@ diseaseEndElementHandle( void *userData, const XML_Char *name )
// we do NOT want to read the first entry -> move stuff by 1
if ( pData->curItem.uiIndex < pData->maxArraySize )
{
pData->curArray[pData->curItem.uiIndex] = pData->curItem; //write the food into the table
if (localizedTextOnly_Disease)
{
wcscpy(Disease[pData->curItem.uiIndex].szName, pData->curItem.szName);
wcscpy(Disease[pData->curItem.uiIndex].szFatName, pData->curItem.szFatName);
wcscpy(Disease[pData->curItem.uiIndex].szDescription, pData->curItem.szDescription);
}
else
{
pData->curArray[pData->curItem.uiIndex] = pData->curItem;
}
}
}
else if ( strcmp( name, "uiIndex" ) == 0 )
@@ -362,7 +375,7 @@ diseaseEndElementHandle( void *userData, const XML_Char *name )
}
BOOLEAN ReadInDiseaseStats( STR fileName )
BOOLEAN ReadInDiseaseStats( STR fileName, BOOLEAN localizedVersion )
{
HWFILE hFile;
UINT32 uiBytesRead;
@@ -374,6 +387,8 @@ BOOLEAN ReadInDiseaseStats( STR fileName )
DebugMsg( TOPIC_JA2, DBG_LEVEL_3, "Loading Disease.xml" );
localizedTextOnly_Disease = localizedVersion;
// Open foods file
hFile = FileOpen( fileName, FILE_ACCESS_READ, FALSE );
if ( !hFile )