[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