mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
- feature: Moved Auto save to option screen - feature: German.Items.xml can now use "Umlaute". It is now correct displayed in the game git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@592 3b4a5df2-a311-0410-b5c6-a8a6f20db521
508 lines
12 KiB
C++
508 lines
12 KiB
C++
#ifdef PRECOMPILEDHEADERS
|
|
#include "Utils All.h"
|
|
#else
|
|
#include "Language Defines.h"
|
|
#include "text.h"
|
|
#include "Fileman.h"
|
|
#endif
|
|
|
|
BOOLEAN LoadItemInfo(UINT16 ubIndex, STR16 pNameString, STR16 pInfoString )
|
|
{
|
|
int j = 0;
|
|
|
|
if (pNameString != NULL)
|
|
{
|
|
j = -1;
|
|
for (int i=0;i<80;i++)
|
|
{
|
|
j++;
|
|
if ( j<(int)strlen(Item[ubIndex].szLongItemName ))
|
|
{
|
|
pNameString[i] = Item[ubIndex].szLongItemName [j];
|
|
|
|
#ifdef GERMAN
|
|
// We have a german special character
|
|
if (Item[ubIndex].szLongItemName [j] == -61)
|
|
{
|
|
// This character determines the special character
|
|
switch (Item[ubIndex].szLongItemName [j + 1])
|
|
{
|
|
// ü
|
|
case -68:
|
|
pNameString[i] = 252;
|
|
// Skip next character, because "umlaute" have 2 chars
|
|
j++;
|
|
break;
|
|
// Ü
|
|
case -100:
|
|
pNameString[i] = 220;
|
|
j++;
|
|
break;
|
|
// ä
|
|
case -92:
|
|
pNameString[i] = 228;
|
|
j++;
|
|
break;
|
|
// Ä
|
|
case -124:
|
|
pNameString[i] = 196;
|
|
j++;
|
|
break;
|
|
// ö
|
|
case -74:
|
|
pNameString[i] = 246;
|
|
j++;
|
|
break;
|
|
// Ö
|
|
case -106:
|
|
pNameString[i] = 214;
|
|
j++;
|
|
break;
|
|
// ß
|
|
case -97:
|
|
pNameString[i] = 223;
|
|
j++;
|
|
break;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#ifdef POLISH
|
|
switch( pNameString[ i ] )
|
|
{
|
|
case 260: pNameString[ i ] = 165; break;
|
|
case 262: pNameString[ i ] = 198; break;
|
|
case 280: pNameString[ i ] = 202; break;
|
|
case 321: pNameString[ i ] = 163; break;
|
|
case 323: pNameString[ i ] = 209; break;
|
|
case 211: pNameString[ i ] = 211; break;
|
|
|
|
case 346: pNameString[ i ] = 338; break;
|
|
case 379: pNameString[ i ] = 175; break;
|
|
case 377: pNameString[ i ] = 143; break;
|
|
case 261: pNameString[ i ] = 185; break;
|
|
case 263: pNameString[ i ] = 230; break;
|
|
case 281: pNameString[ i ] = 234; break;
|
|
|
|
case 322: pNameString[ i ] = 179; break;
|
|
case 324: pNameString[ i ] = 241; break;
|
|
case 243: pNameString[ i ] = 243; break;
|
|
case 347: pNameString[ i ] = 339; break;
|
|
case 380: pNameString[ i ] = 191; break;
|
|
case 378: pNameString[ i ] = 376; break;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
pNameString[i] ='\0';
|
|
}
|
|
}
|
|
}
|
|
|
|
if(pInfoString != NULL)
|
|
{
|
|
j = -1;
|
|
for (int i=0;i<400;i++)
|
|
{
|
|
j++;
|
|
if ( j<(int)strlen(Item[ubIndex].szItemDesc ))
|
|
{
|
|
pInfoString[i] = Item[ubIndex].szItemDesc [j];
|
|
|
|
#ifdef GERMAN
|
|
// We have a german special character
|
|
if (Item[ubIndex].szItemDesc [j] == -61)
|
|
{
|
|
// This character determines the special character
|
|
switch (Item[ubIndex].szItemDesc [j + 1])
|
|
{
|
|
// ü
|
|
case -68:
|
|
pInfoString[i] = 252;
|
|
// Skip next character, because "umlaute" have 2 chars
|
|
j++;
|
|
break;
|
|
// Ü
|
|
case -100:
|
|
pInfoString[i] = 220;
|
|
j++;
|
|
break;
|
|
// ä
|
|
case -92:
|
|
pInfoString[i] = 228;
|
|
j++;
|
|
break;
|
|
// Ä
|
|
case -124:
|
|
pInfoString[i] = 196;
|
|
j++;
|
|
break;
|
|
// ö
|
|
case -74:
|
|
pInfoString[i] = 246;
|
|
j++;
|
|
break;
|
|
// Ö
|
|
case -106:
|
|
pInfoString[i] = 214;
|
|
j++;
|
|
break;
|
|
// ß
|
|
case -97:
|
|
pInfoString[i] = 223;
|
|
j++;
|
|
break;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#ifdef POLISH
|
|
switch( pNameString[ i ] )
|
|
{
|
|
case 260: pInfoString[ i ] = 165; break;
|
|
case 262: pInfoString[ i ] = 198; break;
|
|
case 280: pInfoString[ i ] = 202; break;
|
|
case 321: pInfoString[ i ] = 163; break;
|
|
case 323: pInfoString[ i ] = 209; break;
|
|
case 211: pInfoString[ i ] = 211; break;
|
|
|
|
case 346: pInfoString[ i ] = 338; break;
|
|
case 379: pInfoString[ i ] = 175; break;
|
|
case 377: pInfoString[ i ] = 143; break;
|
|
case 261: pInfoString[ i ] = 185; break;
|
|
case 263: pInfoString[ i ] = 230; break;
|
|
case 281: pInfoString[ i ] = 234; break;
|
|
|
|
case 322: pInfoString[ i ] = 179; break;
|
|
case 324: pInfoString[ i ] = 241; break;
|
|
case 243: pInfoString[ i ] = 243; break;
|
|
case 347: pInfoString[ i ] = 339; break;
|
|
case 380: pInfoString[ i ] = 191; break;
|
|
case 378: pInfoString[ i ] = 376; break;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
pInfoString[i] ='\0';
|
|
}
|
|
}
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
BOOLEAN LoadBRName(UINT16 ubIndex, STR16 pNameString )
|
|
{
|
|
if (pNameString != NULL)
|
|
{
|
|
int j = -1;
|
|
|
|
for (int i=0;i<80;i++)
|
|
{
|
|
j++;
|
|
if ( j<(int)strlen(Item[ubIndex].szBRName))
|
|
{
|
|
pNameString[i] = Item[ubIndex].szBRName [j];
|
|
|
|
#ifdef GERMAN
|
|
// We have a german special character
|
|
if (Item[ubIndex].szBRName [j] == -61)
|
|
{
|
|
// This character determines the special character
|
|
switch (Item[ubIndex].szBRName [j + 1])
|
|
{
|
|
// ü
|
|
case -68:
|
|
pNameString[i] = 252;
|
|
// Skip next character, because "umlaute" have 2 chars
|
|
j++;
|
|
break;
|
|
// Ü
|
|
case -100:
|
|
pNameString[i] = 220;
|
|
j++;
|
|
break;
|
|
// ä
|
|
case -92:
|
|
pNameString[i] = 228;
|
|
j++;
|
|
break;
|
|
// Ä
|
|
case -124:
|
|
pNameString[i] = 196;
|
|
j++;
|
|
break;
|
|
// ö
|
|
case -74:
|
|
pNameString[i] = 246;
|
|
j++;
|
|
break;
|
|
// Ö
|
|
case -106:
|
|
pNameString[i] = 214;
|
|
j++;
|
|
break;
|
|
// ß
|
|
case -97:
|
|
pNameString[i] = 223;
|
|
j++;
|
|
break;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#ifdef POLISH
|
|
switch( pNameString[ i ] )
|
|
{
|
|
case 260: pNameString[ i ] = 165; break;
|
|
case 262: pNameString[ i ] = 198; break;
|
|
case 280: pNameString[ i ] = 202; break;
|
|
case 321: pNameString[ i ] = 163; break;
|
|
case 323: pNameString[ i ] = 209; break;
|
|
case 211: pNameString[ i ] = 211; break;
|
|
|
|
case 346: pNameString[ i ] = 338; break;
|
|
case 379: pNameString[ i ] = 175; break;
|
|
case 377: pNameString[ i ] = 143; break;
|
|
case 261: pNameString[ i ] = 185; break;
|
|
case 263: pNameString[ i ] = 230; break;
|
|
case 281: pNameString[ i ] = 234; break;
|
|
|
|
case 322: pNameString[ i ] = 179; break;
|
|
case 324: pNameString[ i ] = 241; break;
|
|
case 243: pNameString[ i ] = 243; break;
|
|
case 347: pNameString[ i ] = 339; break;
|
|
case 380: pNameString[ i ] = 191; break;
|
|
case 378: pNameString[ i ] = 376; break;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
pNameString[i] ='\0';
|
|
}
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
BOOLEAN LoadBRDesc(UINT16 ubIndex, STR16 pDescString )
|
|
{
|
|
if (pDescString != NULL)
|
|
{
|
|
int j = -1;
|
|
|
|
for (int i=0;i<400;i++)
|
|
{
|
|
j++;
|
|
if ( j<(int)strlen(Item[ubIndex].szBRDesc))
|
|
{
|
|
pDescString[i] = Item[ubIndex].szBRDesc [j];
|
|
|
|
// WANNE: German specific characters
|
|
#ifdef GERMAN
|
|
// We have a german special character
|
|
if (Item[ubIndex].szBRDesc [j] == -61)
|
|
{
|
|
// This character determines the special character
|
|
switch (Item[ubIndex].szBRDesc [j + 1])
|
|
{
|
|
// ü
|
|
case -68:
|
|
pDescString[i] = 252;
|
|
// Skip next character, because "umlaute" have 2 chars
|
|
j++;
|
|
break;
|
|
// Ü
|
|
case -100:
|
|
pDescString[i] = 220;
|
|
j++;
|
|
break;
|
|
// ä
|
|
case -92:
|
|
pDescString[i] = 228;
|
|
j++;
|
|
break;
|
|
// Ä
|
|
case -124:
|
|
pDescString[i] = 196;
|
|
j++;
|
|
break;
|
|
// ö
|
|
case -74:
|
|
pDescString[i] = 246;
|
|
j++;
|
|
break;
|
|
// Ö
|
|
case -106:
|
|
pDescString[i] = 214;
|
|
j++;
|
|
break;
|
|
// ß
|
|
case -97:
|
|
pDescString[i] = 223;
|
|
j++;
|
|
break;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#ifdef POLISH
|
|
switch( pDescString[ i ] )
|
|
{
|
|
case 260: pDescString[ i ] = 165; break;
|
|
case 262: pDescString[ i ] = 198; break;
|
|
case 280: pDescString[ i ] = 202; break;
|
|
case 321: pDescString[ i ] = 163; break;
|
|
case 323: pDescString[ i ] = 209; break;
|
|
case 211: pDescString[ i ] = 211; break;
|
|
|
|
case 346: pDescString[ i ] = 338; break;
|
|
case 379: pDescString[ i ] = 175; break;
|
|
case 377: pDescString[ i ] = 143; break;
|
|
case 261: pDescString[ i ] = 185; break;
|
|
case 263: pDescString[ i ] = 230; break;
|
|
case 281: pDescString[ i ] = 234; break;
|
|
|
|
case 322: pDescString[ i ] = 179; break;
|
|
case 324: pDescString[ i ] = 241; break;
|
|
case 243: pDescString[ i ] = 243; break;
|
|
case 347: pDescString[ i ] = 339; break;
|
|
case 380: pDescString[ i ] = 191; break;
|
|
case 378: pDescString[ i ] = 376; break;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
pDescString[i] ='\0';
|
|
}
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOLEAN LoadShortNameItemInfo(UINT16 ubIndex, STR16 pNameString )
|
|
{
|
|
if(pNameString != NULL)
|
|
{
|
|
// WANNE:
|
|
for (int i=0;i<80;i++)
|
|
{
|
|
if ( i<(int)strlen(Item[ubIndex].szItemName))
|
|
{
|
|
pNameString[i] = Item[ubIndex].szItemName [i];
|
|
|
|
// WANNE: German specific characters
|
|
#ifdef GERMAN
|
|
switch( pNameString[ i ] )
|
|
{
|
|
// ü
|
|
case 65532: pNameString[i] = 252; break;
|
|
// Ü
|
|
case 65500: pNameString[i] = 220; break;
|
|
// ä
|
|
case 65508: pNameString[i] = 228; break;
|
|
// Ä
|
|
case 65476: pNameString[i] = 196; break;
|
|
// ö
|
|
case 65526: pNameString[i] = 246; break;
|
|
// Ö
|
|
case 65494: pNameString[i] = 214; break;
|
|
// ß
|
|
case 65503: pNameString[i] = 223; break;
|
|
}
|
|
#endif
|
|
|
|
#ifdef POLISH
|
|
switch( pNameString[ i ] )
|
|
{
|
|
case 260: pNameString[ i ] = 165; break;
|
|
case 262: pNameString[ i ] = 198; break;
|
|
case 280: pNameString[ i ] = 202; break;
|
|
case 321: pNameString[ i ] = 163; break;
|
|
case 323: pNameString[ i ] = 209; break;
|
|
case 211: pNameString[ i ] = 211; break;
|
|
|
|
case 346: pNameString[ i ] = 338; break;
|
|
case 379: pNameString[ i ] = 175; break;
|
|
case 377: pNameString[ i ] = 143; break;
|
|
case 261: pNameString[ i ] = 185; break;
|
|
case 263: pNameString[ i ] = 230; break;
|
|
case 281: pNameString[ i ] = 234; break;
|
|
|
|
case 322: pNameString[ i ] = 179; break;
|
|
case 324: pNameString[ i ] = 241; break;
|
|
case 243: pNameString[ i ] = 243; break;
|
|
case 347: pNameString[ i ] = 339; break;
|
|
case 380: pNameString[ i ] = 191; break;
|
|
case 378: pNameString[ i ] = 376; break;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
pNameString[i] ='\0';
|
|
}
|
|
}
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
void LoadAllItemNames( void )
|
|
{
|
|
UINT16 usLoop;
|
|
|
|
for (usLoop = 0; usLoop < MAXITEMS; usLoop++)
|
|
{
|
|
LoadItemInfo( usLoop, ItemNames[usLoop], NULL );
|
|
|
|
// Load short item info
|
|
LoadShortNameItemInfo( usLoop, ShortItemNames[usLoop] );
|
|
|
|
}
|
|
}
|
|
|
|
void LoadAllExternalText( void )
|
|
{
|
|
LoadAllItemNames();
|
|
}
|
|
|
|
INT16* GetWeightUnitString( void )
|
|
{
|
|
if ( gGameSettings.fOptions[ TOPTION_USE_METRIC_SYSTEM ] ) // metric
|
|
{
|
|
return(INT16 *)( pMessageStrings[ MSG_KILOGRAM_ABBREVIATION ] );
|
|
}
|
|
else
|
|
{
|
|
return(INT16 *)( pMessageStrings[ MSG_POUND_ABBREVIATION ] );
|
|
}
|
|
}
|
|
|
|
FLOAT GetWeightBasedOnMetricOption( UINT32 uiObjectWeight )
|
|
{
|
|
FLOAT fWeight = 0.0f;
|
|
|
|
//if the user is smart and wants things displayed in 'metric'
|
|
if ( gGameSettings.fOptions[ TOPTION_USE_METRIC_SYSTEM ] ) // metric
|
|
{
|
|
fWeight = (FLOAT)uiObjectWeight;
|
|
}
|
|
|
|
//else the user is a caveman and display it in pounds
|
|
else
|
|
{
|
|
fWeight = uiObjectWeight * 2.2f;
|
|
}
|
|
|
|
return( fWeight );
|
|
}
|
|
|
|
|