[Scummvm-git-logs] scummvm master -> 88589a852c51f8d97c287e07a2d4e855afe4ff72
dreammaster
dreammaster at scummvm.org
Thu Aug 12 03:06:04 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
88589a852c XEEN: RU Translated Mirror aliases
Commit: 88589a852c51f8d97c287e07a2d4e855afe4ff72
https://github.com/scummvm/scummvm/commit/88589a852c51f8d97c287e07a2d4e855afe4ff72
Author: Maxim Kovalenko (ardash1100 at gmail.com)
Date: 2021-08-11T20:06:01-07:00
Commit Message:
XEEN: RU Translated Mirror aliases
Changed paths:
devtools/create_xeen/constants.cpp
devtools/create_xeen/constants.h
devtools/create_xeen/en_constants.h
devtools/create_xeen/ru_constants.h
dists/engine-data/xeen.ccs
engines/xeen/dialogs/dialogs_input.cpp
engines/xeen/dialogs/dialogs_input.h
engines/xeen/resources.cpp
engines/xeen/resources.h
diff --git a/devtools/create_xeen/constants.cpp b/devtools/create_xeen/constants.cpp
index 50e9b06d83..8fce639358 100644
--- a/devtools/create_xeen/constants.cpp
+++ b/devtools/create_xeen/constants.cpp
@@ -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);
diff --git a/devtools/create_xeen/constants.h b/devtools/create_xeen/constants.h
index d8aa2db24b..58c1909ea2 100644
--- a/devtools/create_xeen/constants.h
+++ b/devtools/create_xeen/constants.h
@@ -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);
diff --git a/devtools/create_xeen/en_constants.h b/devtools/create_xeen/en_constants.h
index 625b4d3996..c5e794926c 100644
--- a/devtools/create_xeen/en_constants.h
+++ b/devtools/create_xeen/en_constants.h
@@ -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 {
diff --git a/devtools/create_xeen/ru_constants.h b/devtools/create_xeen/ru_constants.h
index 063f46be86..6ddcb1b705 100644
--- a/devtools/create_xeen/ru_constants.h
+++ b/devtools/create_xeen/ru_constants.h
@@ -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 {
diff --git a/dists/engine-data/xeen.ccs b/dists/engine-data/xeen.ccs
index 4eddc3c5a6..c2d06f1c61 100644
Binary files a/dists/engine-data/xeen.ccs and b/dists/engine-data/xeen.ccs differ
diff --git a/engines/xeen/dialogs/dialogs_input.cpp b/engines/xeen/dialogs/dialogs_input.cpp
index 6f5b348a17..196dec22a4 100644
--- a/engines/xeen/dialogs/dialogs_input.cpp
+++ b/engines/xeen/dialogs/dialogs_input.cpp
@@ -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;
+ }
}
}
}
diff --git a/engines/xeen/dialogs/dialogs_input.h b/engines/xeen/dialogs/dialogs_input.h
index 8cb41f3d36..82d43ce7ed 100644
--- a/engines/xeen/dialogs/dialogs_input.h
+++ b/engines/xeen/dialogs/dialogs_input.h
@@ -44,6 +44,9 @@ protected:
Window *_window;
int _cursorAnimIndex;
+ int nonEnToUpper(uint16 ascii);
+ int nonEnToLower(uint16 ascii);
+
/**
* Allows the user to enter a string
*/
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index e1c73921ca..870732347a 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -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);
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index d44ae843ad..5a74ff7f05 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -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 {
More information about the Scummvm-git-logs
mailing list