- bugfix: Average column in laptop->profiles was not correct calculated

- 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
This commit is contained in:
Wanne
2006-10-05 09:58:01 +00:00
parent 5ccf99a069
commit 755e811293
13 changed files with 373 additions and 280 deletions
+222 -106
View File
@@ -8,32 +8,62 @@
BOOLEAN LoadItemInfo(UINT16 ubIndex, STR16 pNameString, STR16 pInfoString )
{
int j = 0;
if (pNameString != NULL)
{
j = -1;
for (int i=0;i<80;i++)
{
if ( i<(int)strlen(Item[ubIndex].szLongItemName ))
j++;
if ( j<(int)strlen(Item[ubIndex].szLongItemName ))
{
pNameString[i] = Item[ubIndex].szLongItemName [i];
pNameString[i] = Item[ubIndex].szLongItemName [j];
// WANNE: German specific characters
#ifdef GERMAN
switch( pNameString[ i ] )
// We have a german special character
if (Item[ubIndex].szLongItemName [j] == -61)
{
// ü
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;
// 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
@@ -72,36 +102,63 @@ BOOLEAN LoadItemInfo(UINT16 ubIndex, STR16 pNameString, STR16 pInfoString )
if(pInfoString != NULL)
{
// WANNE: CHANGE THIS
j = -1;
for (int i=0;i<400;i++)
{
if ( i<(int)strlen(Item[ubIndex].szItemDesc ))
j++;
if ( j<(int)strlen(Item[ubIndex].szItemDesc ))
{
pInfoString[i] = Item[ubIndex].szItemDesc [i];
pInfoString[i] = Item[ubIndex].szItemDesc [j];
// WANNE: German specific characters
#ifdef GERMAN
switch( pInfoString[ i ] )
// We have a german special character
if (Item[ubIndex].szItemDesc [j] == -61)
{
// ü
case 65532: pInfoString[i] = 252; break;
// Ü
case 65500: pInfoString[i] = 220; break;
// ä
case 65508: pInfoString[i] = 228; break;
// Ä
case 65476: pInfoString[i] = 196; break;
// ö
case 65526: pInfoString[i] = 246; break;
// Ö
case 65494: pInfoString[i] = 214; break;
// ß
case 65503: pInfoString[i] = 223; break;
// 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 ] )
#ifdef POLISH
switch( pNameString[ i ] )
{
case 260: pInfoString[ i ] = 165; break;
case 262: pInfoString[ i ] = 198; break;
@@ -124,8 +181,8 @@ BOOLEAN LoadItemInfo(UINT16 ubIndex, STR16 pNameString, STR16 pInfoString )
case 380: pInfoString[ i ] = 191; break;
case 378: pInfoString[ i ] = 376; break;
}
#endif
}
#endif
}
else
{
pInfoString[i] ='\0';
@@ -140,30 +197,59 @@ BOOLEAN LoadBRName(UINT16 ubIndex, STR16 pNameString )
{
if (pNameString != NULL)
{
int j = -1;
for (int i=0;i<80;i++)
{
if ( i<(int)strlen(Item[ubIndex].szBRName))
j++;
if ( j<(int)strlen(Item[ubIndex].szBRName))
{
pNameString[i] = Item[ubIndex].szBRName [i];
pNameString[i] = Item[ubIndex].szBRName [j];
// WANNE: German specific characters
#ifdef GERMAN
switch( pNameString[ i ] )
// We have a german special character
if (Item[ubIndex].szBRName [j] == -61)
{
// ü
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;
// 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
@@ -193,10 +279,10 @@ BOOLEAN LoadBRName(UINT16 ubIndex, STR16 pNameString )
}
#endif
}
else
else
{
pNameString[i] ='\0';
}
pNameString[i] ='\0';
}
}
}
return TRUE;
@@ -206,30 +292,60 @@ BOOLEAN LoadBRDesc(UINT16 ubIndex, STR16 pDescString )
{
if (pDescString != NULL)
{
int j = -1;
for (int i=0;i<400;i++)
{
if ( i<(int)strlen(Item[ubIndex].szBRDesc))
j++;
if ( j<(int)strlen(Item[ubIndex].szBRDesc))
{
pDescString[i] = Item[ubIndex].szBRDesc [i];
pDescString[i] = Item[ubIndex].szBRDesc [j];
// WANNE: German specific characters
#ifdef GERMAN
switch( pDescString[ i ] )
// We have a german special character
if (Item[ubIndex].szBRDesc [j] == -61)
{
// ü
case 65532: pDescString[i] = 252; break;
// Ü
case 65500: pDescString[i] = 220; break;
// ä
case 65508: pDescString[i] = 228; break;
// Ä
case 65476: pDescString[i] = 196; break;
// ö
case 65526: pDescString[i] = 246; break;
// Ö
case 65494: pDescString[i] = 214; break;
// ß
case 65503: pDescString[i] = 223; break;
// 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
@@ -274,11 +390,11 @@ BOOLEAN LoadShortNameItemInfo(UINT16 ubIndex, STR16 pNameString )
if(pNameString != NULL)
{
// WANNE:
for (int i=0;i<80;i++)
{
if ( i<(int)strlen(Item[ubIndex].szItemName))
for (int i=0;i<80;i++)
{
if ( i<(int)strlen(Item[ubIndex].szItemName))
{
pNameString[i] = Item[ubIndex].szItemName [i];
pNameString[i] = Item[ubIndex].szItemName [i];
// WANNE: German specific characters
#ifdef GERMAN
@@ -301,32 +417,32 @@ BOOLEAN LoadShortNameItemInfo(UINT16 ubIndex, STR16 pNameString )
}
#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;
#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 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
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';
+64 -64
View File
@@ -29,72 +29,72 @@ BOOLEAN PerformTimeLimitedCheck();
* Modified this routine to eliminate recursion and to avoid infinite
* expansion of string when newpiece contains oldpiece. --Byron
*/
char *Replace(char *string, char *oldpiece, char *newpiece) {
int str_index, newstr_index, oldpiece_index, end,
new_len, old_len, cpy_len;
char *c;
static char newstring[MAXLINE];
if ((c = (char *) strstr(string, oldpiece)) == NULL)
return string;
new_len = strlen(newpiece);
old_len = strlen(oldpiece);
end = strlen(string) - old_len;
oldpiece_index = c - string;
newstr_index = 0;
str_index = 0;
while(str_index <= end && c != NULL)
{
/* Copy characters from the left of matched pattern occurence */
cpy_len = oldpiece_index-str_index;
strncpy(newstring+newstr_index, string+str_index, cpy_len);
newstr_index += cpy_len;
str_index += cpy_len;
/* Copy replacement characters instead of matched pattern */
strcpy(newstring+newstr_index, newpiece);
newstr_index += new_len;
str_index += old_len;
/* Check for another pattern match */
if((c = (char *) strstr(string+str_index, oldpiece)) != NULL)
oldpiece_index = c - string;
}
/* Copy remaining characters from the right of last matched pattern */
strcpy(newstring+newstr_index, string+str_index);
return newstring;
}
//char *Replace(char *string, char *oldpiece, char *newpiece)
//{
// int str_index, newstr_index, oldpiece_index, end,
//
// new_len, old_len, cpy_len;
// char *c;
// static char newstring[MAXLINE];
//
// if ((c = (char *) strstr(string, oldpiece)) == NULL)
//
// return string;
//
// new_len = strlen(newpiece);
// old_len = strlen(oldpiece);
// end = strlen(string) - old_len;
// oldpiece_index = c - string;
//
//
// newstr_index = 0;
// str_index = 0;
// while(str_index <= end && c != NULL)
// {
//
// //Copy characters from the left of matched pattern occurence
// cpy_len = oldpiece_index-str_index;
// strncpy(newstring+newstr_index, string+str_index, cpy_len);
// newstr_index += cpy_len;
// str_index += cpy_len;
//
// //Copy replacement characters instead of matched pattern
// strcpy(newstring+newstr_index, newpiece);
// newstr_index += new_len;
// str_index += old_len;
//
// //Check for another pattern match
// if((c = (char *) strstr(string+str_index, oldpiece)) != NULL)
// oldpiece_index = c - string;
//
//
// }
// // Copy remaining characters from the right of last matched pattern
// strcpy(newstring+newstr_index, string+str_index);
//
// return newstring;
//}
// WANNE: Replaces german specific characters
char *ReplaceGermanSpecialCharacters(char *text)
{
// ä
text = Replace(text, "ä", "ä");
// Ä
text = Replace(text, "Ä", "Ä");
// ö
text = Replace(text, "ö", "ö");
// Ö
text = Replace(text, "Ö", "Ö");
// ü
text = Replace(text, "ü", "ü");
// Ü
text = Replace(text, "Ü", "Ü");
// ß
text = Replace(text, "ß", "ß");
return text;
}
//char *ReplaceGermanSpecialCharacters(char *text)
//{
// // ä
// text = Replace(text, "ä", "ä");
// // Ä
// text = Replace(text, "Ä", "Ä");
// // ö
// text = Replace(text, "ö", "ö");
// // Ö
// text = Replace(text, "Ö", "Ö");
// // ü
// text = Replace(text, "ü", "ü");
// // Ü
// text = Replace(text, "Ü", "Ü");
// // ß
// text = Replace(text, "ß", "ß");
//
// return text;
//}
+3 -1
View File
@@ -27,8 +27,10 @@ BOOLEAN HandleJA2CDCheckTwo( );
// WANNE: This method replaces characters in a given text with new characters
char *Replace(char *string, char *oldpiece, char *newpiece);
// WANNE: This method calls the replace method and replaces all german specific characters
char *ReplaceGermanSpecialCharacters(char *text);
// WANNE: Not used!
//char *ReplaceGermanSpecialCharacters(char *text);
// Snap: integer division that rounds the result to the nearest integer
+1 -10
View File
@@ -261,20 +261,11 @@ itemEndElementHandle(void *userData, const char *name)
pData->curArray[pData->curItem.uiIndex] = pData->curItem; //write the item into the table
else if ( sizeof(pData->curItem.szItemName)>0 && localizedTextOnly )
{
// WANNE: Replace specific characters (ö, ä, ...)
#ifdef GERMAN
strcpy((char *)pData->curArray[pData->curItem.uiIndex].szItemName, (char *)ReplaceGermanSpecialCharacters((char *)pData->curItem.szItemName));
strcpy((char *)pData->curArray[pData->curItem.uiIndex].szLongItemName, (char *)ReplaceGermanSpecialCharacters((char *)pData->curItem.szLongItemName));
strcpy((char *)pData->curArray[pData->curItem.uiIndex].szBRName, (char *)ReplaceGermanSpecialCharacters((char *)pData->curItem.szBRName));
strcpy((char *)pData->curArray[pData->curItem.uiIndex].szItemDesc, (char *)ReplaceGermanSpecialCharacters((char *)pData->curItem.szItemDesc));
strcpy((char *)pData->curArray[pData->curItem.uiIndex].szBRDesc, (char *)ReplaceGermanSpecialCharacters((char *)pData->curItem.szBRDesc));
#else
strcpy(pData->curArray[pData->curItem.uiIndex].szItemName,pData->curItem.szItemName);
strcpy(pData->curArray[pData->curItem.uiIndex].szLongItemName,pData->curItem.szLongItemName);
strcpy(pData->curArray[pData->curItem.uiIndex].szBRName,pData->curItem.szBRName);
strcpy(pData->curArray[pData->curItem.uiIndex].szItemDesc,pData->curItem.szItemDesc);
strcpy(pData->curArray[pData->curItem.uiIndex].szBRDesc,pData->curItem.szBRDesc);
#endif
}
}
}
@@ -1011,7 +1002,7 @@ BOOLEAN ReadInItemStats(STR fileName, BOOLEAN localizedVersion )
itemParseData pData;
localizedTextOnly = localizedVersion;
DebugMsg(TOPIC_JA2, DBG_LEVEL_3, "Loading Items.xml" );
// Open items file
-2
View File
@@ -3443,7 +3443,6 @@ STR16 zOptionsToggleText[] =
L"Tracer effect for single shot",
L"Rain noises",
L"Random I.M.P personality",
L"Auto save",
};
//This is the help text associated with the above toggles.
@@ -3520,7 +3519,6 @@ STR16 zOptionsScreenHelpText[] =
L"When ON, tracer effect will be shown for single shots.",
L"When ON, you will hear rain noises when it is raining.",
L"When ON, I.M.P characters will get random personality and attitude.",
L"When ON, game will be saved in tactical after each players turn.",
};