XEEN: RU Translated Mirror aliases

This commit is contained in:
Maxim Kovalenko 2021-08-04 19:32:43 +03:00 committed by Paul Gilbert
parent 680ef62db0
commit 88589a852c
9 changed files with 162 additions and 15 deletions

View File

@ -1214,6 +1214,7 @@ void LangConstants::writeConstants(Common::String num, CCArchive &cc) {
file.syncString(PHAROAH_ENDING_TEXT1());
file.syncString(PHAROAH_ENDING_TEXT2());
file.syncStrings(MAE_NAMES(), 131);
file.syncStrings(MIRROR_LOCATIONS(), 59);
cc.add("CONSTANTS" + num, file);

View File

@ -468,6 +468,7 @@ public:
virtual const char *PHAROAH_ENDING_TEXT1() = 0;
virtual const char *PHAROAH_ENDING_TEXT2() = 0;
virtual const char **MAE_NAMES() = 0;
virtual const char **MIRROR_LOCATIONS() = 0;
void writeConstants(Common::String num, CCArchive &cc);

View File

@ -1941,7 +1941,6 @@ public:
"l\fd";
}
const char **MAE_NAMES() {
static const char *_maeNames[] = {
"",
@ -1949,6 +1948,13 @@ public:
return _maeNames;
}
const char **MIRROR_LOCATIONS() {
static const char *_mirrLocs[] = {
"",
};
return _mirrLocs;
}
class EN_KeyConstants : public KeyConstants {
public:
class EN_DialogsCharInfo : public DialogsCharInfo {

View File

@ -2085,6 +2085,71 @@ public:
return _maeNames;
}
const char **MIRROR_LOCATIONS() {
static const char *_mirrLocs[] = {
"\xA2\xA5\xE0\xE2\xA8\xA3\xAE", // вертиго
"\xAD\xA0\xA9\xE2\xE8\xED\xA4\xAE\xE3", // найтшэдоу
"\xE0\xA8\xA2\xA5\xE0\xE1\xA8\xE2\xA8", // риверсити
"\xED\xE1\xAF", // эсп
"\xA2\xA8\xAD\xE2\xA5\xE0\xAA\xA8\xAB\xAB", // винтеркилл
"\xA7\xA0\xAC\xAE\xAA \xA1\xA0\xE0\xAB\xAE\xAA", // замок барлок
"\xAD\xEC\xEE\xAA\xA0\xE1\xAB", // ньюкасл
"\xA7\xA0\xAC\xAE\xAA \xA1\xA0\xA7\xA5\xAD\xA4\xA6\xA8", // замок базенджи
"\xA2\xA5\xA4\xEC\xAC\xA8\xAD\xA0 \xA1\xA0\xE8\xAD\xEF", // ведьмина башня
"\xA1\xA0\xE8\xAD\xEF \xA4\xA0\xE0\xA7\xAE\xA3\xA0", // башня дарзога
"\xA1\xA0\xE8\xAD\xEF \xA4\xA0\xE0\xA7\xAE\xA3\xA0", // башня дарзога
"\xA1\xA0\xE8\xAD\xEF \xA4\xE0\xA0\xAA\xAE\xAD\xAE\xA2", // башня драконов
"\xA1\xA0\xE8\xAD\xEF \xA2\xEB\xE1\xE8\xA5\xA9 \xAC\xA0\xA3\xA8\xA8", // башня высшей магии
"\xA1\xA0\xE8\xAD\xEF \xE2\xF1\xAC\xAD\xAE\xA3\xAE \xAA\xA0\xAC\xAD\xEF", // башня тёмного камня
"\xA4\xE0\xA0\xAA\xAE\xAD\xEC\xA5 \xAB\xAE\xA3\xAE\xA2\xAE", // драконье логово
"\xAF\xA5\xE9\xA5\xE0\xA0 \xA8\xAB\xAB\xEE\xA7\xA8\xA9", // пещера иллюзий
"\xA0\xE0\xA5\xAD\xA0", // арена
"\xA3\xAE\xE0\xA0 \xE4\xA0\xA9\xA5\xE0\xE1\xE2\xAE\xE3\xAD", // гора файерстоун
"\xA3\xAE\xE0\xEB \xA2\xA0\xE0\xA2\xA0\xE0\xAE\xA2", // горы варваров
"\xE5\xE0\xA5\xA1\xA5\xE2 \xA3\xAE\xE0\xA3\xE3\xAB\xA8\xA9", // хребет горгулий
"\xA3\xAE\xE0\xEB \xE0\xEB\xA6\xA8\xE5 \xA4\xA2\xAE\xE0\xE4\xAE\xA2", // горы рыжих дворфов
"\xE5\xAE\xAB\xAC\xEB \xAE\xA3\xE0\xAE\xA2", // холмы огров
"\xA2\xA8\xAB\xAE\xAE\xA1\xE0\xA0\xA7\xAD\xA0\xEF \xA1\xE3\xE5\xE2\xA0", // вилообразная бухта
"\xA2\xAE\xAB\xE8\xA5\xA1\xAD\xA0\xEF \xA4\xA5\xAB\xEC\xE2\xA0", // волшебная дельта
"\xAB\xA0\xA3\xE3\xAD\xA0 \xA6\xA8\xA7\xAD\xA5\xAD\xAD\xAE\xA9 \xE1\xA8\xAB\xEB", // лагуна жизненной силы
"\xAB\xA0\xA2\xAE\xA2\xAE\xA5 \xAE\xA7\xA5\xE0\xAE", // лавовое озеро
"\xA1\xA0\xE1\xE1\xA5\xA9\xAD \xAA\xE0\xA0\xE1\xAD\xAE\xA9 \xE0\xA5\xAA\xA8", // бассейн красной реки
"\xA6\xA0\xA1\xEC\xA8 \xAB\xE3\xA3\xA0", // жабьи луга
"\xA2\xA5\xE7\xAD\xAE \xE6\xA2\xA5\xE2\xE3\xE9\xA8\xA9 \xE4\xE0\xE3\xAA\xE2\xAE\xA2\xEB\xA9 \xE1\xA0\xA4", // вечно цветущий фруктовый сад
"\xAB\xA5\xE1 \xA6\xA8\xA2\xEB\xE5 \xAC\xA5\xE0\xE2\xA2\xA5\xE6\xAE\xA2", // лес живых мертвецов
"\xA2\xAE\xAB\xE8\xA5\xA1\xAD\xEB\xA9 \xAB\xA5\xE1", // волшебный лес
"\xAB\xA5\xE1 \xE2\xE0\xAE\xAB\xAB\xA5\xA9", // лес троллей
"\xE1\xA0\xA2\xA0\xAD\xAD\xA0 \xA2\xE1\xA0\xA4\xAD\xA8\xAA\xAE\xA2", // саванна всадников
"\xE1\xA0\xA2\xA0\xAD\xAD\xA0 \xA2\xE1\xA0\xA4\xAD\xA8\xAA\xAE\xA2", // саванна всадников
"\xAF\xE3\xE1\xE2\xEB\xAD\xEF \xE1\xE4\xA8\xAD\xAA\xE1\xA0", // пустыня сфинкса
"\xA7\xA5\xAC\xAB\xEF \xA3\xA8\xA3\xA0\xAD\xE2\xAE\xA2", // земля гигантов
"\xE8\xA0\xAD\xA3\xE0\xA8-\xAB\xA0", // шангри-ла
"\xA3\xE0\xA0\xE4 \xA4\xEE \xAC\xAE\xAD\xA5\xE2\xA0", // граф дю монета
"\xAB\xAE\xE0\xA4 \xAA\xE1\xA8\xAD", // лорд ксин
"\xE8\xAE\xE3 \xAD\xA0\xE7\xA8\xAD\xA0\xA5\xE2\xE1\xEF", // шоу начинается
"\xE8\xA0\xE5\xE2\xA0""1", // шахта1
"\xE8\xA0\xE5\xE2\xA0 1", // шахта 1
"\xE8\xA0\xE5\xE2\xA0""2", // шахта2
"\xE8\xA0\xE5\xE2\xA0 2", // шахта 2
"\xE8\xA0\xE5\xE2\xA0""3", // шахта3
"\xE8\xA0\xE5\xE2\xA0 3", // шахта 3
"\xE8\xA0\xE5\xE2\xA0""4", // шахта4
"\xE8\xA0\xE5\xE2\xA0 4", // шахта 4
"\xE8\xA0\xE5\xE2\xA0""5", // шахта5
"\xE8\xA0\xE5\xE2\xA0 5", // шахта 5
"\xA0\xAB\xEC\xE4\xA0", // альфа
"\xA3\xAB\xE3\xA1\xAE\xAA\xA0\xEF \xE8\xA0\xE5\xE2\xA0 \xA0\xAB\xEC\xE4\xA0", // глубокая шахта альфа
"\xE2\xA5\xE2\xA0", // тета
"\xA3\xAB\xE3\xA1\xAE\xAA\xA0\xEF \xE8\xA0\xE5\xE2\xA0 \xE2\xA5\xE2\xA0", // глубокая шахта тета
"\xAA\xA0\xAF\xAF\xA0", // каппа
"\xA3\xAB\xE3\xA1\xAE\xAA\xA0\xEF \xE8\xA0\xE5\xE2\xA0 \xAA\xA0\xAF\xAF\xA0", // глубокая шахта каппа
"\xAE\xAC\xA5\xA3\xA0", // омега
"\xA3\xAB\xE3\xA1\xAE\xAA\xA0\xEF \xE8\xA0\xE5\xE2\xA0 \xAE\xAC\xA5\xA3\xA0", // глубокая шахта омега
"\xEF \xAF\xAE\xE2\xA5\xE0\xEF\xAB \xED\xE2\xAE", // я потерял это
};
return _mirrLocs;
}
class RU_KeyConstants : public KeyConstants {
public:
class RU_DialogsCharInfo : public DialogsCharInfo {

Binary file not shown.

View File

@ -1,4 +1,4 @@
/* ScummVM - Graphic Adventure Engine
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
@ -35,7 +35,52 @@ int Input::show(XeenEngine *vm, Window *window, Common::String &line,
return result;
}
int Input::nonEnToLower(uint16 ascii) {
if (Common::RU_RUS == g_vm->getLanguage()) {
switch (ascii) {
case Common::KEYCODE_f: return 0xA0; // А
case Common::KEYCODE_COMMA: return 0xA1; // Б
case Common::KEYCODE_d: return 0xA2; // В
case Common::KEYCODE_u: return 0xA3; // Г
case Common::KEYCODE_l: return 0xA4; // Д
case Common::KEYCODE_t: return 0xA5; // Е
case Common::KEYCODE_BACKQUOTE: return 0xF1; // Ё
case Common::KEYCODE_SEMICOLON: return 0xA6; // Ж
case Common::KEYCODE_p: return 0xA7; // З
case Common::KEYCODE_b: return 0xA8; // И
case Common::KEYCODE_q: return 0xA9; // Й
case Common::KEYCODE_r: return 0xAA; // К
case Common::KEYCODE_k: return 0xAB; // Л
case Common::KEYCODE_v: return 0xAC; // М
case Common::KEYCODE_y: return 0xAD; // Н
case Common::KEYCODE_j: return 0xAE; // О
case Common::KEYCODE_g: return 0xAF; // П
case Common::KEYCODE_h: return 0xE0; // Р
case Common::KEYCODE_c: return 0xE1; // С
case Common::KEYCODE_n: return 0xE2; // Т
case Common::KEYCODE_e: return 0xE3; // У
case Common::KEYCODE_a: return 0xE4; // Ф
case Common::KEYCODE_LEFTBRACKET: return 0xE5; // Х
case Common::KEYCODE_w: return 0xE6; // Ц
case Common::KEYCODE_x: return 0xE7; // Ч
case Common::KEYCODE_i: return 0xE8; // Ш
case Common::KEYCODE_o: return 0xE9; // Щ
case Common::KEYCODE_RIGHTBRACKET: return 0xEA; // Ъ
case Common::KEYCODE_s: return 0xEB; // Ы
case Common::KEYCODE_m: return 0xEC; // Ь
case Common::KEYCODE_QUOTE: return 0xED; // Э
case Common::KEYCODE_PERIOD: return 0xEE; // Ю
case Common::KEYCODE_z: return 0xEF; // Я
default:
return tolower(ascii);
}
}
return ascii;
}
int Input::getString(Common::String &line, uint maxLen, int maxWidth, bool isNumeric) {
bool nonEnCharset = false;
_vm->_noDirectionSense = true;
Common::String msg = Common::String::format("\x3""l\t000\x4%03d\x3""c", maxWidth);
_window->writeString(msg);
@ -53,17 +98,25 @@ int Input::getString(Common::String &line, uint maxLen, int maxWidth, bool isNum
} else if (line.size() < maxLen && (line.size() > 0 || keyCode != Common::KEYCODE_SPACE)
&& ((isNumeric && keyState.ascii >= '0' && keyState.ascii <= '9') ||
(!isNumeric && keyState.ascii >= ' ' && keyState.ascii <= (char)127))) {
if (!isNumeric && Common::isAlpha(keyState.ascii)) {
// The original game doesn't care about Shift or Caps Locks. The
// capitalization is done for the user automatically at the beginning of
// words.
if (line.empty() || line.hasSuffix(" ")) {
line += toupper(keyState.ascii);
if (!nonEnCharset) {
if (!isNumeric && Common::isAlpha(keyState.ascii)) {
// The original game doesn't care about Shift or Caps Locks. The
// capitalization is done for the user automatically at the beginning of
// words.
if (line.empty() || line.hasSuffix(" ")) {
line += toupper(keyState.ascii);
} else {
line += tolower(keyState.ascii);
}
} else {
line += tolower(keyState.ascii);
line += keyState.ascii;
}
} else {
line += keyState.ascii;
if (!isNumeric) {
line += nonEnToLower(keyState.ascii);
} else {
line += keyState.ascii;
}
}
refresh = true;
@ -72,6 +125,12 @@ int Input::getString(Common::String &line, uint maxLen, int maxWidth, bool isNum
} else if (keyCode == Common::KEYCODE_ESCAPE) {
line = "";
break;
} else if (Common::RU_RUS == g_vm->getLanguage()) {
if (Common::KEYCODE_F11 == keyCode) {
nonEnCharset = true;
} else if (Common::KEYCODE_F12 == keyCode) {
nonEnCharset = false;
}
}
if (refresh) {
@ -198,11 +257,21 @@ int StringInput::execute(bool type, const Common::String &expected,
f2.close();
}
for (uint idx = 0; idx < scripts._mirror.size(); ++idx) {
if (!line.compareToIgnoreCase(scripts._mirror[idx]._name)) {
result = idx + 1;
sound.playFX(_vm->_files->_ccNum ? 35 : 61);
break;
if (Common::RU_RUS == g_vm->getLanguage()) {
for (uint idx = 0; idx < 59; ++idx) {
if (!line.compareToIgnoreCase(Res.MIRROR_LOCATIONS[idx])) {
result = idx + 1;
sound.playFX(_vm->_files->_ccNum ? 35 : 61);
break;
}
}
} else {
for (uint idx = 0; idx < scripts._mirror.size(); ++idx) {
if (!line.compareToIgnoreCase(scripts._mirror[idx]._name)) {
result = idx + 1;
sound.playFX(_vm->_files->_ccNum ? 35 : 61);
break;
}
}
}
}

View File

@ -44,6 +44,9 @@ protected:
Window *_window;
int _cursorAnimIndex;
int nonEnToUpper(uint16 ascii);
int nonEnToLower(uint16 ascii);
/**
* Allows the user to enter a string
*/

View File

@ -420,6 +420,7 @@ void Resources::loadData() {
file.syncString(PHAROAH_ENDING_TEXT1);
file.syncString(PHAROAH_ENDING_TEXT2);
file.syncStrings(MAE_NAMES, 131);
file.syncStrings(MIRROR_LOCATIONS, 59);
ResFile keys("CONSTKEYS_", _buffer, lang);
keys.syncNumber(KeyConstants.DialogsCharInfo.KEY_ITEM);

View File

@ -474,6 +474,7 @@ public:
const char *PHAROAH_ENDING_TEXT1;
const char *PHAROAH_ENDING_TEXT2;
const char *MAE_NAMES[131];
const char *MIRROR_LOCATIONS[58];
struct {