[Scummvm-git-logs] scummvm master -> 6b9b7fb8bc949b681ad87299a8cc93614f048e0f

sev- noreply at scummvm.org
Thu Oct 31 15:25:25 UTC 2024


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:
6b9b7fb8bc TSAGE: Initial code for support of Russian fan translation for Blue Force


Commit: 6b9b7fb8bc949b681ad87299a8cc93614f048e0f
    https://github.com/scummvm/scummvm/commit/6b9b7fb8bc949b681ad87299a8cc93614f048e0f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-10-31T16:25:13+01:00

Commit Message:
TSAGE: Initial code for support of Russian fan translation for Blue Force

Changed paths:
    engines/tsage/blue_force/blueforce_dialogs.cpp
    engines/tsage/blue_force/blueforce_logic.cpp
    engines/tsage/blue_force/blueforce_scenes0.cpp
    engines/tsage/blue_force/blueforce_scenes1.cpp
    engines/tsage/blue_force/blueforce_scenes5.cpp
    engines/tsage/blue_force/blueforce_scenes9.cpp
    engines/tsage/core.cpp
    engines/tsage/staticres.cpp
    engines/tsage/staticres.h


diff --git a/engines/tsage/blue_force/blueforce_dialogs.cpp b/engines/tsage/blue_force/blueforce_dialogs.cpp
index 8d4c3ae6ce2..2b96ca68d8e 100644
--- a/engines/tsage/blue_force/blueforce_dialogs.cpp
+++ b/engines/tsage/blue_force/blueforce_dialogs.cpp
@@ -472,6 +472,8 @@ void OptionsDialog::show() {
 		int rc;
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			rc = MessageDialog::show(ESP_QUIT_CONFIRM_MSG, ESP_CANCEL_BTN_STRING, ESP_QUIT_BTN_STRING);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			rc = MessageDialog::show(RUS_QUIT_CONFIRM_MSG, RUS_CANCEL_BTN_STRING, RUS_QUIT_BTN_STRING);
 		} else {
 			rc = MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING);
 		}
@@ -494,6 +496,14 @@ OptionsDialog::OptionsDialog() {
 		_btnQuit.setText(ESP_QUIT_BTN_STRING);
 		_btnSound.setText(ESP_SOUND_BTN_STRING);
 		_btnResume.setText(ESP_RESUME_BTN_STRING);
+	} else if (g_vm->getLanguage() == Common::RU_RUS) {
+		_gfxMessage.set(RUS_OPTIONS_MSG, 140, ALIGN_LEFT);
+		_btnRestore.setText(RUS_RESTORE_BTN_STRING);
+		_btnSave.setText(RUS_SAVE_BTN_STRING);
+		_btnRestart.setText(RUS_RESTART_BTN_STRING);
+		_btnQuit.setText(RUS_QUIT_BTN_STRING);
+		_btnSound.setText(RUS_SOUND_BTN_STRING);
+		_btnResume.setText(RUS_RESUME_BTN_STRING);
 	} else {
 		_gfxMessage.set(OPTIONS_MSG, 140, ALIGN_LEFT);
 		_btnRestore.setText(RESTORE_BTN_STRING);
diff --git a/engines/tsage/blue_force/blueforce_logic.cpp b/engines/tsage/blue_force/blueforce_logic.cpp
index 88c870d65d4..c43ff6f7b4b 100644
--- a/engines/tsage/blue_force/blueforce_logic.cpp
+++ b/engines/tsage/blue_force/blueforce_logic.cpp
@@ -300,6 +300,8 @@ void BlueForceGame::processEvent(Event &event) {
 			BF_GLOBALS._dialogCenter.y = 100;
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				MessageDialog::show(ESP_HELP_MSG, ESP_OK_BTN_STRING);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				MessageDialog::show(TsAGE::BlueForce::RUS_HELP_MSG, RUS_OK_BTN_STRING);
 			} else {
 				MessageDialog::show(HELP_MSG, OK_BTN_STRING);
 			}
@@ -334,6 +336,8 @@ void BlueForceGame::processEvent(Event &event) {
 			GfxDialog::setPalette();
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				MessageDialog::show(ESP_GAME_PAUSED_MSG, ESP_OK_BTN_STRING);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				MessageDialog::show(RUS_GAME_PAUSED_MSG, RUS_OK_BTN_STRING);
 			} else {
 				MessageDialog::show(GAME_PAUSED_MSG, OK_BTN_STRING);
 			}
@@ -982,6 +986,8 @@ void SceneHandlerExt::process(Event &event) {
 		int rc;
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			rc = MessageDialog::show2(ESP_WATCH_INTRO_MSG, ESP_START_PLAY_BTN_STRING, ESP_INTRODUCTION_BTN_STRING);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			rc = MessageDialog::show2(RUS_WATCH_INTRO_MSG, RUS_START_PLAY_BTN_STRING, RUS_INTRODUCTION_BTN_STRING);
 		} else {
 			rc = MessageDialog::show2(WATCH_INTRO_MSG, START_PLAY_BTN_STRING, INTRODUCTION_BTN_STRING);
 		}
diff --git a/engines/tsage/blue_force/blueforce_scenes0.cpp b/engines/tsage/blue_force/blueforce_scenes0.cpp
index 1539b9f503e..3418629d8d4 100644
--- a/engines/tsage/blue_force/blueforce_scenes0.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes0.cpp
@@ -369,19 +369,38 @@ void Scene50::postInit(SceneObjectList *OwnerList) {
 		_location4.set(Rect(313, 21, 325, 33), 114, ESP_TONYS_BAR, 8);
 		_location8.set(Rect(69, 79, 82, 88), 580, ESP_CHILD_PROTECTIVE_SERVICES, 256);
 		_location5.set(Rect(383, 57, 402, 70), 380, ESP_CITY_HALL_JAIL, 32);
+		_location2.set(Rect(443, 149, 508, 178), 330, MARINA, 2);
+		_location6.set(Rect(242, 131, 264, 144), 440, ALLEY_CAT, 64);
+		_location7.set(Rect(128, 32, 143, 42), 800, JAMISON_RYAN, 128);
+		_location9.set(Rect(349, 125, 359, 132),
+			(BF_GLOBALS._bookmark == bInspectionDone) || (BF_GLOBALS._bookmark == bCalledToDrunkStop) ? 551 : 550,
+			BIKINI_HUT, 16);
+	} else if (g_vm->getLanguage() == Common::RU_RUS) {
+		_location3.set(Rect(10, 92, 24, 105), 180, RUS_GRANDMA_FRANNIE, 4);
+		_location2.set(Rect(443, 149, 508, 178), 330, RUS_MARINA, 2);
+		_location1.set(Rect(573, 103, 604, 130), 190, RUS_POLICE_DEPARTMENT, 1);
+		_location4.set(Rect(313, 21, 325, 33), 114, RUS_TONYS_BAR, 8);
+		_location8.set(Rect(69, 79, 82, 88), 580, RUS_CHILD_PROTECTIVE_SERVICES, 256);
+		_location6.set(Rect(242, 131, 264, 144), 440, RUS_ALLEY_CAT, 64);
+		_location5.set(Rect(383, 57, 402, 70), 380, RUS_CITY_HALL_JAIL, 32);
+		_location7.set(Rect(128, 32, 143, 42), 800, RUS_JAMISON_RYAN, 128);
+		_location9.set(Rect(349, 125, 359, 132),
+			(BF_GLOBALS._bookmark == bInspectionDone) || (BF_GLOBALS._bookmark == bCalledToDrunkStop) ? 551 : 550,
+			RUS_BIKINI_HUT, 16);
 	} else {
 		_location3.set(Rect(10, 92, 24, 105), 180, GRANDMA_FRANNIE, 4);
 		_location1.set(Rect(573, 103, 604, 130), 190, POLICE_DEPARTMENT, 1);
 		_location4.set(Rect(313, 21, 325, 33), 114, TONYS_BAR, 8);
 		_location8.set(Rect(69, 79, 82, 88), 580, CHILD_PROTECTIVE_SERVICES, 256);
 		_location5.set(Rect(383, 57, 402, 70), 380, CITY_HALL_JAIL, 32);
+		_location2.set(Rect(443, 149, 508, 178), 330, MARINA, 2);
+		_location6.set(Rect(242, 131, 264, 144), 440, ALLEY_CAT, 64);
+		_location7.set(Rect(128, 32, 143, 42), 800, JAMISON_RYAN, 128);
+		_location9.set(Rect(349, 125, 359, 132),
+			(BF_GLOBALS._bookmark == bInspectionDone) || (BF_GLOBALS._bookmark == bCalledToDrunkStop) ? 551 : 550,
+			 BIKINI_HUT, 16);
 	}
-	_location2.set(Rect(443, 149, 508, 178), 330, MARINA, 2);
-	_location6.set(Rect(242, 131, 264, 144), 440, ALLEY_CAT, 64);
-	_location7.set(Rect(128, 32, 143, 42), 800, JAMISON_RYAN, 128);
-	_location9.set(Rect(349, 125, 359, 132),
-		(BF_GLOBALS._bookmark == bInspectionDone) || (BF_GLOBALS._bookmark == bCalledToDrunkStop) ? 551 : 550,
-		BIKINI_HUT, 16);
+
 
 	_item.setBounds(Rect(0, 0, SCREEN_WIDTH * 2, SCREEN_HEIGHT));
 	BF_GLOBALS._sceneItems.push_back(&_item);
diff --git a/engines/tsage/blue_force/blueforce_scenes1.cpp b/engines/tsage/blue_force/blueforce_scenes1.cpp
index 02143f6df59..ef2437064f4 100644
--- a/engines/tsage/blue_force/blueforce_scenes1.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes1.cpp
@@ -64,6 +64,8 @@ void Scene100::Action1::signal() {
 		} else {
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				setTextStrings(BF_NAME, ESP_BF_ALL_RIGHTS_RESERVED, this);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				setTextStrings(BF_NAME, RUS_BF_ALL_RIGHTS_RESERVED, this);
 			} else {
 				setTextStrings(BF_NAME, BF_ALL_RIGHTS_RESERVED, this);
 			}
@@ -151,6 +153,8 @@ void Scene100::Action2::signal() {
 			int rc;
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				rc = MessageDialog::show2(ESP_WATCH_INTRO_MSG, ESP_START_PLAY_BTN_STRING, ESP_INTRODUCTION_BTN_STRING);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				rc = MessageDialog::show2(RUS_WATCH_INTRO_MSG, RUS_START_PLAY_BTN_STRING, RUS_INTRODUCTION_BTN_STRING);
 			} else {
 				rc = MessageDialog::show2(WATCH_INTRO_MSG, START_PLAY_BTN_STRING, INTRODUCTION_BTN_STRING);
 			}
@@ -244,6 +248,8 @@ void Scene109::Action1::signal() {
 	case 2:
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			scene->_text.setup(ESP_BF_19840515, this);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_text.setup(RUS_BF_19840515, this);
 		} else {
 			scene->_text.setup(BF_19840515, this);
 		}
@@ -2268,6 +2274,8 @@ void Scene140::Action1::signal() {
 		BF_GLOBALS._scenePalette.refresh();
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			scene->_text.setup(ESP_BF_19840518, this);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_text.setup(RUS_BF_19840518, this);
 		} else {
 			scene->_text.setup(BF_19840518, this);
 		}
@@ -2634,6 +2642,8 @@ void Scene160::Action2::signal() {
 		scene->_sceneBounds.set(0, 0, 320, 200);
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			scene->_text.setup(ESP_BF_11_YEARS, this);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_text.setup(RUS_BF_11_YEARS, this);
 		} else {
 			scene->_text.setup(BF_11_YEARS, this);
 		}
@@ -2683,6 +2693,8 @@ void Scene160::Action3::signal() {
 	case 0:
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			scene->_text.setup(ESP_BF_3_DAYS, this);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_text.setup(RUS_BF_3_DAYS, this);
 		} else {
 			scene->_text.setup(BF_3_DAYS, this);
 		}
@@ -2812,6 +2824,8 @@ void Scene180::postInit(SceneObjectList *OwnerList) {
 	if ((BF_GLOBALS._bookmark == bLyleStoppedBy) && (BF_GLOBALS._dayNumber == 1)) {
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			_sceneMessage.setup(ESP_THE_NEXT_DAY);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			_sceneMessage.setup(RUS_THE_NEXT_DAY);
 		} else {
 			_sceneMessage.setup(THE_NEXT_DAY);
 		}
@@ -2824,6 +2838,8 @@ void Scene180::postInit(SceneObjectList *OwnerList) {
 			((BF_GLOBALS._bookmark == bDoneAtLyles) && (BF_GLOBALS._dayNumber == 4))) {
 		if (g_vm->getLanguage() == Common::ES_ESP) {
 			_sceneMessage.setup(ESP_THE_NEXT_DAY);
+		} else if (g_vm->getLanguage() == Common::RU_RUS) {
+			_sceneMessage.setup(RUS_THE_NEXT_DAY);
 		} else {
 			_sceneMessage.setup(THE_NEXT_DAY);
 		}
diff --git a/engines/tsage/blue_force/blueforce_scenes5.cpp b/engines/tsage/blue_force/blueforce_scenes5.cpp
index 24846826aae..9e6afbb3a86 100644
--- a/engines/tsage/blue_force/blueforce_scenes5.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes5.cpp
@@ -1571,7 +1571,12 @@ void Scene560::dispatch() {
  *--------------------------------------------------------------------------*/
 
 Scene570::PasswordEntry::PasswordEntry(): EventHandler() {
-	_passwordStr = SCENE570_PASSWORD;
+
+	if (g_vm->getLanguage() == Common::RU_RUS) {
+		_passwordStr = RUS_SCENE570_PASSWORD;
+	} else {
+		_passwordStr = SCENE570_PASSWORD;
+	}
 }
 
 void Scene570::PasswordEntry::synchronize(Serializer &s) {
@@ -1666,7 +1671,7 @@ void Scene570::PasswordEntry::checkPassword() {
 	// reimplementation in ScummVM, as the project name.
 	Scene570 *scene = (Scene570 *)BF_GLOBALS._sceneManager._scene;
 
-	if (!_entryBuffer.compareTo("JACKIE") || !_entryBuffer.compareTo("SCUMMVM")) {
+	if (!_entryBuffer.compareTo("JACKIE") || !_entryBuffer.compareTo("SCUMMVM") || !_entryBuffer.compareTo("L;TRB")) { // Third condition for the Russian version
 		// Password was correct
 		T2_GLOBALS._uiElements.addScore(30);
 		BF_GLOBALS._player.disableControl();
@@ -2082,23 +2087,47 @@ void Scene570::signal() {
 		_printerIcon.setDetails(570, 14, 15, -1, 2, (SceneItem *)NULL);
 
 		_iconManager.setup(2);
-		_folder1.setDetails(1, 1, 0, SCENE570_C_DRIVE);
-		_folder2.setDetails(1, 2, 1, SCENE570_RING);
-		_folder3.setDetails(1, 3, 1, SCENE570_PROTO);
-		_folder4.setDetails(1, 4, 1, SCENE570_WACKY);
-
-		if (!BF_GLOBALS.getFlag(fDecryptedBluePrints))
-			_icon1.setDetails(3, 5, 0, SCENE570_COBB);
-		_icon2.setDetails(2, 7, 0, SCENE570_LETTER);
-		if (BF_GLOBALS.getFlag(fDecryptedBluePrints))
-			_icon3.setDetails(7, 6, 0, SCENE570_COBB);
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			_folder1.setDetails(1, 1, 0, RUS_SCENE570_C_DRIVE);
+			_folder2.setDetails(1, 2, 1, RUS_SCENE570_RING);
+			_folder3.setDetails(1, 3, 1, RUS_SCENE570_PROTO);
+			_folder4.setDetails(1, 4, 1, RUS_SCENE570_WACKY);
+
+			if (!BF_GLOBALS.getFlag(fDecryptedBluePrints))
+				_icon1.setDetails(3, 5, 0, RUS_SCENE570_COBB);
+
+			_icon2.setDetails(2, 7, 0, RUS_SCENE570_LETTER);
+
+			if (BF_GLOBALS.getFlag(fDecryptedBluePrints))
+				_icon3.setDetails(7, 6, 0, RUS_SCENE570_COBB);
+
+			_icon4.setDetails(6, 8, 1, RUS_SCENE570_RINGEXE);
+			_icon5.setDetails(5, 9, 1, RUS_SCENE570_RINGDATA);
+			_icon6.setDetails(6, 10, 2, RUS_SCENE570_PROTOEXE);
+			_icon7.setDetails(5, 11, 2, RUS_SCENE570_PROTODATA);
+			_icon8.setDetails(6, 12, 3, RUS_SCENE570_WACKYEXE);
+			_icon9.setDetails(5, 13, 3, RUS_SCENE570_WACKYDATA);
+		} else {
+			_folder1.setDetails(1, 1, 0, SCENE570_C_DRIVE);
+			_folder2.setDetails(1, 2, 1, SCENE570_RING);
+			_folder3.setDetails(1, 3, 1, SCENE570_PROTO);
+			_folder4.setDetails(1, 4, 1, SCENE570_WACKY);
+
+			if (!BF_GLOBALS.getFlag(fDecryptedBluePrints))
+				_icon1.setDetails(3, 5, 0, SCENE570_COBB);
 
-		_icon4.setDetails(6, 8, 1, SCENE570_RINGEXE);
-		_icon5.setDetails(5, 9, 1, SCENE570_RINGDATA);
-		_icon6.setDetails(6, 10, 2, SCENE570_PROTOEXE);
-		_icon7.setDetails(5, 11, 2, SCENE570_PROTODATA);
-		_icon8.setDetails(6, 12, 3, SCENE570_WACKYEXE);
-		_icon9.setDetails(5, 13, 3, SCENE570_WACKYDATA);
+			_icon2.setDetails(2, 7, 0, SCENE570_LETTER);
+
+			if (BF_GLOBALS.getFlag(fDecryptedBluePrints))
+				_icon3.setDetails(7, 6, 0, SCENE570_COBB);
+
+			_icon4.setDetails(6, 8, 1, SCENE570_RINGEXE);
+			_icon5.setDetails(5, 9, 1, SCENE570_RINGDATA);
+			_icon6.setDetails(6, 10, 2, SCENE570_PROTOEXE);
+			_icon7.setDetails(5, 11, 2, SCENE570_PROTODATA);
+			_icon8.setDetails(6, 12, 3, SCENE570_WACKYEXE);
+			_icon9.setDetails(5, 13, 3, SCENE570_WACKYDATA);
+		}
 
 		_iconManager.refreshList();
 		BF_GLOBALS._player.enableControl();
@@ -2113,7 +2142,11 @@ void Scene570::signal() {
 		_object3.setFrame(1);
 		_object3.fixPriority(1);
 
-		_icon3.setDetails(7, 6, 0, SCENE570_COBB);
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			_icon3.setDetails(7, 6, 0, RUS_SCENE570_COBB);
+		} else {
+			_icon3.setDetails(7, 6, 0, SCENE570_COBB);
+		}
 		_iconManager.refreshList();
 		T2_GLOBALS._uiElements._active = true;
 		T2_GLOBALS._uiElements.show();
diff --git a/engines/tsage/blue_force/blueforce_scenes9.cpp b/engines/tsage/blue_force/blueforce_scenes9.cpp
index e22faac57b7..0a4fec306b9 100644
--- a/engines/tsage/blue_force/blueforce_scenes9.cpp
+++ b/engines/tsage/blue_force/blueforce_scenes9.cpp
@@ -3508,7 +3508,11 @@ void Scene935::Action1::signal() {
 		scene->addFader((const byte *)&v50ECC, 100, this);
 		break;
 	case 1:
-		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_visualSpeaker.setText("\x84\xA6\xA5\xA9\xAA! \x8F\xE0\xEF\xE7\xEC\xE1\xEF \xA2 \xE8\xAA\xA0\xE4!"); // Джейк! Прячься в шкаф!
+		} else {
+			scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		}
 		for (int i = 1; i < 21; i++)
 			scene->transition((const byte *)&v50EEA, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
 		setDelay(3);
@@ -3521,11 +3525,19 @@ void Scene935::Action1::signal() {
 		scene->_visualSpeaker._textPos.y = scene->_sceneBounds.top + 80;
 		scene->_visualSpeaker._color1 = 252;
 		scene->_visualSpeaker._color2 = 251;
-		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_visualSpeaker.setText("\x84\xA6\xA5\xA9\xAA! \x8F\xE0\xEF\xE7\xEC\xE1\xEF \xA2 \xE8\xAA\xA0\xE4!"); // Джейк! Прячься в шкаф!
+		} else {
+			scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		}
 		setDelay(3);
 		break;
 	case 4:
-		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_visualSpeaker.setText("\x84\xA6\xA5\xA9\xAA! \x8F\xE0\xEF\xE7\xEC\xE1\xEF \xA2 \xE8\xAA\xA0\xE4!"); // Джейк! Прячься в шкаф!
+		} else {
+			scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		}
 		for (int i = 1; i < 21; i++)
 			scene->transition((const byte *)&v50F26, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
 		setDelay(3);
@@ -3538,11 +3550,19 @@ void Scene935::Action1::signal() {
 		scene->_visualSpeaker._textPos.y = scene->_sceneBounds.top + 150;
 		scene->_visualSpeaker._color1 = 250;
 		scene->_visualSpeaker._color2 = 249;
-		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_visualSpeaker.setText("\x84\xA6\xA5\xA9\xAA! \x8F\xE0\xEF\xE7\xEC\xE1\xEF \xA2 \xE8\xAA\xA0\xE4!"); // Джейк! Прячься в шкаф!
+		} else {
+			scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		}
 		setDelay(3);
 		break;
 	case 7:
-		scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		if (g_vm->getLanguage() == Common::RU_RUS) {
+			scene->_visualSpeaker.setText("\x84\xA6\xA5\xA9\xAA! \x8F\xE0\xEF\xE7\xEC\xE1\xEF \xA2 \xE8\xAA\xA0\xE4!"); // Джейк! Прячься в шкаф!
+		} else {
+			scene->_visualSpeaker.setText("Jake! Hide in the closet!");
+		}
 		for (int i = 1; i < 21; i++)
 			scene->transition((const byte *)&v50F62, 5 * i, 935, NULL, 0, 255, 249, 255, 1);
 		setDelay(3);
diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index e3d3699598b..9d1c58cfce7 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -1963,6 +1963,8 @@ void SceneHotspot::doAction(int action) {
 		if (g_vm->getGameID() == GType_BlueForce)
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				SceneItem::display(ESP_LOOK_SCENE_HOTSPOT);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				SceneItem::display(RUS_LOOK_SCENE_HOTSPOT);
 			} else {
 				SceneItem::display(LOOK_SCENE_HOTSPOT);
 			}
@@ -1973,6 +1975,8 @@ void SceneHotspot::doAction(int action) {
 		if (g_vm->getGameID() == GType_BlueForce)
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				SceneItem::display(ESP_USE_SCENE_HOTSPOT);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				SceneItem::display(RUS_USE_SCENE_HOTSPOT);
 			} else {
 				SceneItem::display(USE_SCENE_HOTSPOT);
 			}
@@ -1983,6 +1987,8 @@ void SceneHotspot::doAction(int action) {
 		if (g_vm->getGameID() == GType_BlueForce)
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				SceneItem::display(ESP_TALK_SCENE_HOTSPOT);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				SceneItem::display(RUS_TALK_SCENE_HOTSPOT);
 			} else {
 				SceneItem::display(TALK_SCENE_HOTSPOT);
 			}
@@ -1995,6 +2001,8 @@ void SceneHotspot::doAction(int action) {
 		if (g_vm->getGameID() == GType_BlueForce)
 			if (g_vm->getLanguage() == Common::ES_ESP) {
 				SceneItem::display(ESP_DEFAULT_SCENE_HOTSPOT);
+			} else if (g_vm->getLanguage() == Common::RU_RUS) {
+				SceneItem::display(RUS_DEFAULT_SCENE_HOTSPOT);
 			} else {
 				SceneItem::display(DEFAULT_SCENE_HOTSPOT);
 			}
diff --git a/engines/tsage/staticres.cpp b/engines/tsage/staticres.cpp
index b9feeb8fc7f..be29591ef50 100644
--- a/engines/tsage/staticres.cpp
+++ b/engines/tsage/staticres.cpp
@@ -323,6 +323,59 @@ char const *const ESP_CITY_HALL_JAIL = "Ayuntamiento & C\240rcel";
 // Scene 180 messages
 char const *const ESP_THE_NEXT_DAY = "Al d\241a siguiente";
 
+// Russian version
+char const *const RUS_QUIT_CONFIRM_MSG = "\x82\xEB \xE5\xAE\xE2\xA8\xE2\xA5 \xA2\xEB\xA9\xE2\xA8 \xA8\xA7 \xA8\xA3\xE0\xEB?"; // "Вы хотите выйти из игры?"
+char const *const RUS_RESTART_MSG = "\x82\xEB \xE5\xAE\xE2\xA8\xE2\xA5 \xAD\xA0\xE7\xA0\xE2\xEC \xA7\xA0\xAD\xAE\xA2\xAE?";   // "Вы хотите начать заново?"
+char const *const RUS_GAME_PAUSED_MSG = "  \x8F\xA0\xE3\xA7\xA0.  ";                                                          // "  Пауза.  ";
+char const *const RUS_QUIT_BTN_STRING = " \x82\xEB\xA9\xE2\xA8";                                                              // " Выйти";
+char const *const RUS_RESTART_BTN_STRING = "\x87\xA0\xAD\xAE\xA2\xAE";                                                        // "Заново";
+char const *const RUS_SAVE_BTN_STRING = " \x87\xA0\xAF\xA8\xE1\xEC ";                                                         // " Запись ";
+char const *const RUS_RESUME_BTN_STRING = " \x8D\xA0\xA7\xA0\xA4 \xA2\r\xA8\xA3\xE0\xE3";                                     // " Назад в\rигру";
+
+// Dialog resources
+char const *const RUS_HELP_MSG = "\x91\xE2\xE0\xA0\xA6\xA8 \xAF\xAE\xE0\xEF\xA4\xAA\xA0\x14\r\x82\xA5\xE0\xE1\xA8\xEF ScummVM\r\r\x01 \x83\xAE\xE0\xEF\xE7\xA8\xA5 \xAA\xAB\xA0\xA2\xA8\xE8\xA8\rF2 - \x87\xA2\xE3\xAA\rF3 - \x82\xEB\xA9\xE2\xA8\rF4 - \x87\xA0\xAD\xAE\xA2\xAE\rF5 - \x87\xA0\xAF\xA8\xE1\xEC\rF7 - \x91\xE7\xA8\xE2\xA0\xE2\xEC\rF10 - \x8F\xA0\xE3\xA7\xA0"; // Стражи порядка\x14\rВерсия ScummVM\r\r\x01 Горячие клавиши\rF2 - Звук\rF3 - Выйти\rF4 - Заново\rF5 - Запись\rF6 - Считать\rF7 - Пауза"
+char const *const RUS_WATCH_INTRO_MSG = "    \x8F\xAE\xE1\xAC\xAE\xE2\xE0\xA5\xE2\xEC \xA2\xE1\xE2\xE3\xAF\xAB\xA5\xAD\xA8\xA5?    ";                                                                                                                                                                                                                                                                                          // "    Посмотреть вступление?    "
+char const *const RUS_START_PLAY_BTN_STRING = " \x8D\xA0\xE7\xA0\xE2\xEC  ";                                                                                                                                                                                                                                                                                                                                                   // " Начать ";
+char const *const RUS_INTRODUCTION_BTN_STRING = " \x82\xE1\xE2\xE3\xAF\xAB\xA5\xAD\xA8\xA5 ";                                                                                                                                                                                                                                                                                                                                  // " Вступление ";
+char const *const RUS_OPTIONS_MSG = "\x01\x8D\xA0\xE1\xE2\xE0\xAE\xA9\xAA\xA8";                                                                                                                                                                                                                                                                                                                                                // "\x01Настройки"
+
+// Blue Force general messages
+char const *const RUS_BF_NAME = "\x91\xE2\xE0\xA0\xA6\xA8 \xAF\xAE\xE0\xEF\xA4\xAA\xA0";	// "Стражи порядка"
+char const *const RUS_BF_COPYRIGHT = "\x80\xA2\xE2\xAE\xE0\xE1\xAA\xA8\xA5 \xAF\xE0\xA0\xA2\xA0, 1993 Tsunami Media, Inc.";	// "Авторские права, 1993 Tsunami Media, Inc."
+char const *const RUS_BF_ALL_RIGHTS_RESERVED = "\x82\xE1\xA5 \xAF\xE0\xA0\xA2\xA0 \xA7\xA0\xE9\xA8\xE9\xA5\xAD\xEB";	// "Все права защищены"
+char const *const RUS_BF_19840518 = "18 \xAC\xA0\xEF 1984 \xA3\xAE\xA4\xA0";	// "18 мая 1984 года"
+char const *const RUS_BF_19840515 = "15 \xAC\xA0\xEF 1984 \xA3\xAE\xA4\xA0";	// "15 мая 1984 года"
+char const *const RUS_BF_3_DAYS = "3 \xA4\xAD\xEF \xE1\xAF\xE3\xE1\xE2\xEF";	// "3 дня спустя"
+char const *const RUS_BF_11_YEARS = "11 \xAB\xA5\xE2 \xE1\xAF\xE3\xE1\xE2\xEF";	// "11 лет спустя"
+
+// Scene 50 hotspots
+char const *const RUS_GRANDMA_FRANNIE = "\x81\xA0\xA1\xE3\xAB\xEF \x94\xE0\xED\xAD\xAD\xA8";	// "Бабуля Фрэнни"
+char const *const RUS_MARINA = "\x8F\xE0\xA8\xE7\xA0\xAB";	// "Причал"
+char const *const RUS_POLICE_DEPARTMENT = "\x93\xAF\xE0\xA0\xA2\xAB\xA5\xAD\xA8\xA5";	// "Управление"
+char const *const RUS_TONYS_BAR = "\x81\xA0\xE0 \x92\xAE\xAD\xA8";	// "Бар Тони"
+char const *const RUS_CHILD_PROTECTIVE_SERVICES = "\x91\xAB\xE3\xA6\xA1\xA0 \xA7\xA0\xE9\xA8\xE2\xEB \xA4\xA5\xE2\xA5\xA9";	// "Служба защиты детей"
+char const *const RUS_ALLEY_CAT = "\x81\xAE\xE3\xAB\xA8\xAD\xA3";	// "Боулинг"
+char const *const RUS_CITY_HALL_JAIL = "\x90\xA0\xE2\xE3\xE8\xA0 \xA8 \xE2\xEE\xE0\xEC\xAC\xA0";	// "Ратуша и тюрьма"
+char const *const RUS_JAMISON_RYAN = "\x8E\xE4\xA8\xE1 \x84\xA6\xED\xAC\xA8\xE1\xAE\xAD\xA0";	// "Офис Джэмисона"
+char const *const RUS_BIKINI_HUT = "\x22\x81\xA8\xAA\xA8\xAD\xA8 \x95\xA0\xE2\x22";	// ""Бикини Хат""
+
+// Scene 570 computer messageS
+char const *const RUS_SCENE570_PASSWORD = "  \xAF\xA0\xE0\xAE\xAB\xEC -> ";	//"  пароль -> "
+char const *const RUS_SCENE570_C_DRIVE = "c:\\";
+char const *const RUS_SCENE570_RING = "ring";
+char const *const RUS_SCENE570_PROTO = "proto";
+char const *const RUS_SCENE570_WACKY = "wacky";
+char const *const RUS_SCENE570_COBB = "\xAA\xAE\xA1\xA1";	//"кобб"
+char const *const RUS_SCENE570_LETTER = "\xAF\xA8\xE1\xEC\xAC\xAE";	//"письмо"
+char const *const RUS_SCENE570_RINGEXE = "ringexe";
+char const *const RUS_SCENE570_RINGDATA = "ringdata";
+char const *const RUS_SCENE570_PROTOEXE = "protoexe";
+char const *const RUS_SCENE570_PROTODATA = "protodata";
+char const *const RUS_SCENE570_WACKYEXE = "wackyexe";
+char const *const RUS_SCENE570_WACKYDATA = "wackydat ";
+
+// Scene 180 messages
+char const *const RUS_THE_NEXT_DAY = "\x93\xE2\xE0\xAE\xAC";	// "Утром"
 
 } // End of namespace BlueForce
 
diff --git a/engines/tsage/staticres.h b/engines/tsage/staticres.h
index 5a4b2dbd521..8fe0e80fb1f 100644
--- a/engines/tsage/staticres.h
+++ b/engines/tsage/staticres.h
@@ -279,6 +279,61 @@ extern char const *const ESP_CITY_HALL_JAIL;
 // Scene 180 message
 extern char const *const ESP_THE_NEXT_DAY;
 
+// Russian version
+extern char const *const RUS_QUIT_CONFIRM_MSG;
+extern char const *const RUS_RESTART_MSG;
+extern char const *const RUS_GAME_PAUSED_MSG;
+extern char const *const RUS_QUIT_BTN_STRING;
+extern char const *const RUS_RESTART_BTN_STRING;
+extern char const *const RUS_SAVE_BTN_STRING;
+extern char const *const RUS_RESUME_BTN_STRING;
+
+// Dialog resources
+extern char const *const RUS_HELP_MSG;
+extern char const *const RUS_WATCH_INTRO_MSG;
+extern char const *const RUS_START_PLAY_BTN_STRING;
+extern char const *const RUS_INTRODUCTION_BTN_STRING;
+extern char const *const RUS_OPTIONS_MSG;
+
+// Blue Force messages
+extern char const *const RUS_BF_NAME;
+extern char const *const RUS_BF_COPYRIGHT;
+extern char const *const RUS_BF_ALL_RIGHTS_RESERVED;
+extern char const *const RUS_BF_19840518;
+extern char const *const RUS_BF_19840515;
+extern char const *const RUS_BF_3_DAYS;
+extern char const *const RUS_BF_11_YEARS;
+
+// Scene 50 tooltips
+extern char const *const RUS_GRANDMA_FRANNIE;
+extern char const *const RUS_MARINA;
+extern char const *const RUS_POLICE_DEPARTMENT;
+extern char const *const RUS_TONYS_BAR;
+extern char const *const RUS_CHILD_PROTECTIVE_SERVICES;
+extern char const *const RUS_ALLEY_CAT;
+extern char const *const RUS_CITY_HALL_JAIL;
+extern char const *const RUS_JAMISON_RYAN;
+extern char const *const RUS_BIKINI_HUT;
+
+// Scene 570 tooltips
+extern char const *const RUS_SCENE570_PASSWORD;
+extern char const *const RUS_SCENE570_C_DRIVE;
+extern char const *const RUS_SCENE570_RING;
+extern char const *const RUS_SCENE570_PROTO;
+extern char const *const RUS_SCENE570_WACKY;
+extern char const *const RUS_SCENE570_COBB;
+extern char const *const RUS_SCENE570_LETTER;
+extern char const *const RUS_SCENE570_RINGEXE;
+extern char const *const RUS_SCENE570_RINGDATA;
+extern char const *const RUS_SCENE570_PROTOEXE;
+extern char const *const RUS_SCENE570_PROTODATA;
+extern char const *const RUS_SCENE570_WACKYEXE;
+extern char const *const RUS_SCENE570_WACKYDATA;
+
+// Scene 180 message
+extern char const *const RUS_THE_NEXT_DAY;
+
+
 } // End of namespace BlueForce
 
 namespace Ringworld2 {




More information about the Scummvm-git-logs mailing list