- on-the-fly convertation of all codepages to unicode (by lalien and bugmonster). I think this is needed for a Polish release in the future.

BE SURE TO UPDATE FROM SVN GAME DIR (REV. 1050) TO GET THE NEEDED GAME DATA FILES FOR THIS SOURCE MODIFICATION 

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@2417 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2008-11-14 11:50:38 +00:00
parent 59f652c6a2
commit 8f2201afe4
13 changed files with 609 additions and 580 deletions
+262 -370
View File
@@ -657,6 +657,8 @@ INT16 GetIndex(CHAR16 siChar)
UINT16 ssCount=0;
UINT16 usNumberOfSymbols = pFManager->pTranslationTable->usNumberOfSymbols;
siChar = GetUnicodeChar(siChar);
// search the Translation Table and return the index for the font
pTrav = pFManager->pTranslationTable->DynamicArrayOf16BitValues;
while (ssCount < usNumberOfSymbols )
@@ -677,6 +679,144 @@ INT16 GetIndex(CHAR16 siChar)
}
CHAR16 GetUnicodeChar(CHAR16 siChar)
{
#ifdef GERMAN
//switch( siChar )
//{
// // ü
// case 252: siChar = 252; break;
// // Ü
// case 220: siChar = 220; break;
// // ä
// case 228: siChar = 228; break;
// // Ä
// case 196: siChar = 196; break;
// // ö
// case 246: siChar = 246; break;
// // Ö
// case 214: siChar = 214; break;
// // ß
// case 223: siChar = 223; break;
//}
#endif
#ifdef RUSSIAN
switch( siChar )
{
//capital letters
case 168: siChar = 1025; break; //U+0401 d0 81 CYRILLIC CAPITAL LETTER IO
case 192: siChar = 1040; break; //U+0410 A d0 90 CYRILLIC CAPITAL LETTER A
case 193: siChar = 1041; break;
case 194: siChar = 1042; break;
case 195: siChar = 1043; break;
case 196: siChar = 1044; break;
case 197: siChar = 1045; break;
case 198: siChar = 1046; break;
case 199: siChar = 1047; break;
case 200: siChar = 1048; break;
case 201: siChar = 1049; break;
case 202: siChar = 1050; break;
case 203: siChar = 1051; break;
case 204: siChar = 1052; break;
case 205: siChar = 1053; break;
case 206: siChar = 1054; break;
case 207: siChar = 1055; break;
case 208: siChar = 1056; break;
case 209: siChar = 1057; break;
case 210: siChar = 1058; break;
case 211: siChar = 1059; break;
case 212: siChar = 1060; break;
case 213: siChar = 1061; break;
case 214: siChar = 1062; break;
case 215: siChar = 1063; break;
case 216: siChar = 1064; break;
case 217: siChar = 1065; break;
case 218: siChar = 1066; break;
case 219: siChar = 1067; break;
case 220: siChar = 1068; break;
case 221: siChar = 1069; break;
case 222: siChar = 1070; break;
case 223: siChar = 1071; break; //U+042F d0 af CYRILLIC CAPITAL LETTER YA
//small letters
case 185: siChar = 8470; break; // ?
case 178: siChar = 1030; break; // ?
case 161: siChar = 1038; break; // í
case 179: siChar = 1110; break; // ?
case 162: siChar = 1118; break; // ó
case 165: siChar = 1168; break; // Ñ
case 170: siChar = 1028; break; // ¬
case 175: siChar = 1031; break; // »
case 180: siChar = 1169; break; // ?
case 186: siChar = 1108; break; // ?
case 191: siChar = 1111; break; // ?
case 184: siChar = 1105; break; //U+0451 d1 91 CYRILLIC SMALL LETTER IO
case 224: siChar = 1072; break; //U+0430 a d0 b0 CYRILLIC SMALL LETTER A
case 225: siChar = 1073; break;
case 226: siChar = 1074; break;
case 227: siChar = 1075; break;
case 228: siChar = 1076; break;
case 229: siChar = 1077; break;
case 230: siChar = 1078; break;
case 231: siChar = 1079; break;
case 232: siChar = 1080; break;
case 233: siChar = 1081; break;
case 234: siChar = 1082; break;
case 235: siChar = 1083; break;
case 236: siChar = 1084; break;
case 237: siChar = 1085; break;
case 238: siChar = 1086; break;
case 239: siChar = 1087; break; //U+043F d0 bf CYRILLIC SMALL LETTER PE
case 240: siChar = 1088; break; //U+0440 p d1 80 CYRILLIC SMALL LETTER ER
case 241: siChar = 1089; break;
case 242: siChar = 1090; break;
case 243: siChar = 1091; break;
case 244: siChar = 1092; break;
case 245: siChar = 1093; break;
case 246: siChar = 1094; break;
case 247: siChar = 1095; break;
case 248: siChar = 1096; break;
case 249: siChar = 1097; break;
case 250: siChar = 1098; break;
case 251: siChar = 1099; break;
case 252: siChar = 1100; break;
case 253: siChar = 1101; break;
case 254: siChar = 1102; break;
case 255: siChar = 1103; break; //U+044F d1 8f CYRILLIC SMALL LETTER YA
}
#endif
#ifdef POLISH
switch( siChar )
{
case 165: siChar = 260; break;
case 198: siChar = 262; break;
case 202: siChar = 280; break;
case 163: siChar = 321; break;
case 209: siChar = 323; break;
case 211: siChar = 211; break;
case 338: siChar = 346; break;
case 175: siChar = 379; break;
case 143: siChar = 377; break;
case 185: siChar = 261; break;
case 230: siChar = 263; break;
case 234: siChar = 281; break;
case 179: siChar = 322; break;
case 241: siChar = 324; break;
case 243: siChar = 243; break;
case 339: siChar = 347; break;
case 191: siChar = 380; break;
case 376: siChar = 378; break;
}
#endif
return siChar;
}
//*****************************************************************************
// SetFont
//
@@ -1285,12 +1425,15 @@ FontTranslationTable *CreateEnglishTransTable( )
pTable = (FontTranslationTable *)MemAlloc(sizeof(FontTranslationTable));
memset(pTable, 0, sizeof(FontTranslationTable) );
#ifdef JA2
// ha ha, we have more than Wizardry now (again)
pTable->usNumberOfSymbols = 255;
#else
pTable->usNumberOfSymbols = 255;
#endif
//#ifdef JA2
// // ha ha, we have more than Wizardry now (again)
// pTable->usNumberOfSymbols = 255;
//#else
// pTable->usNumberOfSymbols = 255;
//#endif
pTable->usNumberOfSymbols = 200;
pTable->DynamicArrayOf16BitValues = (UINT16 *)MemAlloc(pTable->usNumberOfSymbols * 2);
temp = pTable->DynamicArrayOf16BitValues;
@@ -1481,9 +1624,7 @@ FontTranslationTable *CreateEnglishTransTable( )
*temp = ' '; //93
temp++;
#ifdef JA2
#ifdef GERMAN
// GERMAN letters in UNICODE
*temp = 196; // "A" umlaut
temp++;
*temp = 214; // "O" umlaut
@@ -1496,469 +1637,220 @@ FontTranslationTable *CreateEnglishTransTable( )
temp++;
*temp = 252; // "u" umlaut
temp++;
*temp = 223; // double-s that looks like a beta/B // 100
*temp = 223; // double-s that looks like a beta/B
temp++;
#else
*temp = 0; // "A" umlaut
temp++;
*temp = 0; // "O" umlaut
temp++;
*temp = 0; // "U" umlaut
temp++;
*temp = 0; // "a" umlaut
temp++;
*temp = 0; // "o" umlaut
temp++;
*temp = 0; // "u" umlaut
temp++;
*temp = 0; // double-s that looks like a beta/B // 100
temp++;
#endif
*temp = 192; // À
temp++;
*temp = 193; // Á
temp++;
*temp = 194; // Ã
temp++;
*temp = 195; // Ä
temp++;
*temp = 196; // Å
temp++;
*temp = 197; // ¨
temp++;
*temp = 198; // Æ
temp++;
*temp = 199; // Ç
temp++;
*temp = 200; // È 140
temp++;
*temp = 201; // É
temp++;
*temp = 202; // Ê
temp++;
*temp = 203; // Ë
temp++;
*temp = 204; // Ì
temp++;
*temp = 205; // Í
temp++;
*temp = 206; // Î
temp++;
*temp = 207; // Ï
temp++;
*temp = 208; // Ð
temp++;
*temp = 209; // Ñ
temp++;
*temp = 210; // Ò 150
temp++;
*temp = 211; // Ó
temp++;
*temp = 212; // Ô
temp++;
*temp = 213; // Õ
temp++;
*temp = 214; // Ö
temp++;
*temp = 215; // ×
temp++;
*temp = 216; // Ø
temp++;
*temp = 217; // Ù
temp++;
*temp = 218; // Ú
temp++;
*temp = 219; // Û
temp++;
*temp = 220; // Ü 160
temp++;
*temp = 221; // Ý
temp++;
*temp = 222; // Þ
temp++;
*temp = 223; // ß
temp++;
*temp = 224; // à
temp++;
*temp = 225; // á
temp++;
*temp = 226; // â
temp++;
*temp = 227; // ã
temp++;
*temp = 228; // ä
temp++;
*temp = 229; // å
temp++;
*temp = 230; // ¸ 170
temp++;
*temp = 231; // æ
temp++;
*temp = 232; // ç
temp++;
*temp = 233; // è
temp++;
*temp = 234; // é
temp++;
*temp = 235; // ê
temp++;
*temp = 236; // ë
temp++;
*temp = 237; // ì
temp++;
*temp = 238; // í
temp++;
*temp = 239; // î 170
temp++;
*temp = 240; // ï
temp++;
*temp = 241; // ð
temp++;
*temp = 242; // ñ
temp++;
*temp = 243; // ò
temp++;
*temp = 244; // ó
temp++;
*temp = 245; // ô
temp++;
*temp = 246; // õ
temp++;
*temp = 247; // ö
temp++;
*temp = 248; // ÷
temp++;
*temp = 249; // ø 170
temp++;
*temp = 250; // ù
temp++;
*temp = 251; // ú
temp++;
*temp = 252; // û
temp++;
*temp = 253; // ü 170
temp++;
*temp = 254; // ý
temp++;
*temp = 255; // þ
temp++;
// START OF FUNKY RUSSIAN STUFF
// RUSSIAN letters in UNICODE
*temp = 1040; //À
temp++;
*temp = 1041;
*temp = 1041; //Á
temp++;
*temp = 1042;
*temp = 1042; //Â
temp++;
*temp = 1043;
*temp = 1043; //Ã
temp++;
*temp = 1044;
*temp = 1044; //Ä
temp++;
*temp = 1045;
*temp = 1045; //Å
temp++;
*temp = 1046;
*temp = 1046; //Æ
temp++;
*temp = 1047;
*temp = 1047; //Ç
temp++;
*temp = 1048;
*temp = 1048; //È
temp++;
*temp = 1049; //110
*temp = 1049; //É
temp++;
*temp = 1050;
*temp = 1050; //Ê
temp++;
*temp = 1051;
*temp = 1051; //Ë
temp++;
*temp = 1052;
*temp = 1052; //Ì
temp++;
*temp = 1053;
*temp = 1053; //Í
temp++;
*temp = 1054;
*temp = 1054; //Î
temp++;
*temp = 1055;
*temp = 1055; //Ï
temp++;
*temp = 1056;
*temp = 1056; //Ð
temp++;
*temp = 1057;
*temp = 1057; //Ñ
temp++;
*temp = 1058;
*temp = 1058; //Ò
temp++;
*temp = 1059; //120
*temp = 1059; //Ó
temp++;
*temp = 1060;
*temp = 1060; //Ô
temp++;
*temp = 1061;
*temp = 1061; //Õ
temp++;
*temp = 1062;
*temp = 1062; //Ö
temp++;
*temp = 1063;
*temp = 1063; //×
temp++;
*temp = 1064;
*temp = 1064; //Ø
temp++;
*temp = 1065;
*temp = 1065; //Ù
temp++;
*temp = 1066;
*temp = 1066; //Ú
temp++;
*temp = 1067;
*temp = 1067; //Û
temp++;
*temp = 1068;
*temp = 1068; //Ü
temp++;
*temp = 1069; // 130
*temp = 1069; //Ý
temp++;
*temp = 1070;
*temp = 1070; //Þ
temp++;
*temp = 1071;
*temp = 1071; //ß
temp++;
*temp = 1072; // à
temp++;
*temp = 1072; // Ä
*temp = 1073; // á
temp++;
*temp = 1073; // À
*temp = 1074; // â
temp++;
*temp = 1074; // Á
*temp = 1075; // ã
temp++;
*temp = 1075; // Â
*temp = 1076; // ä
temp++;
*temp = 1076; // Ã
*temp = 1077; // å
temp++;
*temp = 1077; // Å
*temp = 1078; // æ
temp++;
*temp = 1078; // ¨
*temp = 1079; // ç
temp++;
*temp = 1079; // Ç 140
*temp = 1080; // è
temp++;
*temp = 1080; // Ë
*temp = 1081; // é
temp++;
*temp = 1081; // È
*temp = 1082; // ê
temp++;
*temp = 1082; // É 140
*temp = 1083; // ë
temp++;
*temp = 1083; // Ê
*temp = 1084; // ì
temp++;
*temp = 1084; // Ï
*temp = 1085; // í
temp++;
*temp = 1085; // Ö
*temp = 1086; // î
temp++;
*temp = 1086; // Ò
*temp = 1087; // ï
temp++;
*temp = 1087; // Ó
*temp = 1088; // ð
temp++;
*temp = 1088; // Ô
*temp = 1089; // ñ
temp++;
*temp = 1089; // Ü 150
*temp = 1090; // ò
temp++;
*temp = 1090; // Ù
*temp = 1091; // ó
temp++;
*temp = 1091; // Ú
*temp = 1092; // ô
temp++;
*temp = 1092; // Û 150
*temp = 1093; // õ
temp++;
*temp = 1093; // ä
*temp = 1094; // ö
temp++;
*temp = 1094; // à
*temp = 1095; // ÷
temp++;
*temp = 1095; // á
*temp = 1096; // ø
temp++;
*temp = 1096; // â
*temp = 1097; // ù
temp++;
*temp = 1097; // ç
*temp = 1098; // ú
temp++;
*temp = 1098; // ë
*temp = 1099; // û
temp++;
*temp = 1099; // è 160
*temp = 1100; // ü
temp++;
*temp = 1100; // é
*temp = 1101; // ý
temp++;
*temp = 1101; // ê
*temp = 1102; // þ
temp++;
*temp = 1102; // ï 160
temp++;
*temp = 1103; // ö
*temp = 1103; // ÿ
temp++;
//SB: new russian & bellorussian & ukrainian symbols
// in ascii
*temp = 185; // ¹
// BELORUSSIAN and UKRAINIAN letters in UNICODE
*temp = 8470; // ¹
temp++;
*temp = 168; // ¨
*temp = 1025; // ¨
temp++;
*temp = 178; // ²
*temp = 1030; // ²
temp++;
*temp = 161; // ¡
*temp = 1038; // ¡
temp++;
*temp = 184; // ¸
*temp = 1105; // ¸
temp++;
*temp = 179; // ³
*temp = 1110; // ³
temp++;
*temp = 162; // ¢
*temp = 1118; // ¢
temp++;
*temp = 165; // ¥
*temp = 1168; // ¥
temp++;
*temp = 170; // ª
*temp = 1028; // ª
temp++;
*temp = 175; // ¯
*temp = 1031; // ¯
temp++;
*temp = 180; // ´
*temp = 1169; // ´
temp++;
*temp = 186; // º
*temp = 1108; // º
temp++;
*temp = 191; // ¿
*temp = 1111; // ¿
temp++;
// in unicode
*temp = 0x2116; // ¹
temp++;
*temp = 0x0401; // ¨
temp++;
*temp = 0x0406; // ²
temp++;
*temp = 0x040E; // ¡
temp++;
*temp = 0x0451; // ¸
temp++;
*temp = 0x0456; // ³
temp++;
*temp = 0x045E; // ¢
temp++;
*temp = 0x0490; // ¥
temp++;
*temp = 0x0404; // ª
temp++;
*temp = 0x0407; // ¯
temp++;
*temp = 0x0491; // ´
temp++;
*temp = 0x0454; // º
temp++;
*temp = 0x0457; // ¿
temp++;
#else
// Windows Code Page 1252 Western Standard Character Set
*temp = 193; // "A" acute
// POLISH letters in UNICODE
*temp = 260; // ¥ (îí)
temp++;
*temp = 192; // "A" grave
*temp = 262; // Æ (öå)
temp++;
*temp = 193; // "A" circumflex
*temp = 280; // Ê (ýí)
temp++;
*temp = 196; // "A" umlaut
*temp = 321; // £ (ýëü)
temp++;
*temp = 195; // "A" tilde
*temp = 323; // Ñ (ýíü)
temp++;
*temp = 197; // "A" ring
*temp = 211; // Ó (î êðàòêîå)
temp++;
*temp = 199; // "C" cedile
*temp = 346; // Œ (ýñü)
temp++;
*temp = 201; // "E" acute
*temp = 379; // ¯ (æåò)
temp++;
*temp = 200; // "E" grave
*temp = 377; // (çåò)
temp++;
*temp = 202; // "E" circumflex
*temp = 261; // ¹ (îí)
temp++;
*temp = 203; // "E" umlaut
*temp = 263; // æ (öå)
temp++;
*temp = 205; // "I" acute
*temp = 281; // ê (ýí)
temp++;
*temp = 204; // "I" grave
*temp = 322; // ³ (ýëü)
temp++;
*temp = 206; // "I" circumflex
*temp = 324; // ñ (ýíü)
temp++;
*temp = 207; // "I" umlaut
*temp = 243; // ó (î êðàòêîå)
temp++;
*temp = 209; // "N" tilde
*temp = 347; // œ (ýñü)
temp++;
*temp = 211; // "O" acute
*temp = 380; // ¿ (æåò)
temp++;
*temp = 210; // "O" grave
*temp = 378; // Ÿ (çåò)
temp++;
*temp = 212; // "O" circumflex
temp++;
*temp = 214; // "O" umlaut
temp++;
*temp = 213; // "O" tilde
temp++;
*temp = 216; // "0" O strike-through
temp++;
*temp = 218; // "U" acute
temp++;
*temp = 217; // "U" grave
temp++;
*temp = 219; // "U" circumflex
temp++;
*temp = 220; // "U" umlaut
temp++;
*temp = 221; // "Y" acute
temp++;
*temp = 225; // "a" acute
temp++;
*temp = 224; // "a" grave
temp++;
*temp = 226; // "a" circumflex
temp++;
*temp = 228; // "a" umlaut
temp++;
*temp = 227; // "a" tilde
temp++;
*temp = 229; // "a" ring
temp++;
*temp = 231; // "c" cedile
temp++;
*temp = 233; // "e" acute
temp++;
*temp = 232; // "e" grave
temp++;
*temp = 234; // "e" circumflex
temp++;
*temp = 235; // "e" umlaut
temp++;
*temp = 237; // "i" acute
temp++;
*temp = 236; // "i" grave
temp++;
*temp = 238; // "i" circumflex
temp++;
*temp = 239; // "i" umlaut
temp++;
*temp = 241; // "n" tilde
temp++;
*temp = 243; // "o" acute
temp++;
*temp = 242; // "o" grave
temp++;
*temp = 244; // "o" circumflex
temp++;
*temp = 246; // "o" umlaut
temp++;
*temp = 245; // "o" tilde
temp++;
*temp = 248; // "o" strike-through
temp++;
*temp = 250; // "u" acute
temp++;
*temp = 249; // "u" grave
temp++;
*temp = 251; // "u" circumflex
temp++;
*temp = 252; // "u" umlaut
temp++;
*temp = 254; // "y" acute
temp++;
*temp = 255; // "y" umlaut
temp++;
*temp = 223; // beta
// Font glyphs for spell targeting icons
// Font glyphs for spell targeting icons
//ATE: IMPORTANT! INcreate the array above if you add any new items here...
temp++;
*temp = FONT_GLYPH_TARGET_POINT;
temp++;
*temp = FONT_GLYPH_TARGET_CONE;
temp++;
*temp = FONT_GLYPH_TARGET_SINGLE;
temp++;
*temp = FONT_GLYPH_TARGET_GROUP;
temp++;
*temp = FONT_GLYPH_TARGET_NONE;
// 154
#endif
//temp++;
//*temp = FONT_GLYPH_TARGET_POINT;
//temp++;
//*temp = FONT_GLYPH_TARGET_CONE;
//temp++;
//*temp = FONT_GLYPH_TARGET_SINGLE;
//temp++;
//*temp = FONT_GLYPH_TARGET_GROUP;
//temp++;
//*temp = FONT_GLYPH_TARGET_NONE;
// 200
return pTable;
}