[Scummvm-git-logs] scummvm master -> 5410143c605ed7c550a448f3b356359a2693dc3d

yuv422 noreply at scummvm.org
Mon Jan 13 04:02:32 UTC 2025


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:
5410143c60 DARKSEED: Added localised intro/credit text for ES, FR & DE versions.


Commit: 5410143c605ed7c550a448f3b356359a2693dc3d
    https://github.com/scummvm/scummvm/commit/5410143c605ed7c550a448f3b356359a2693dc3d
Author: Eric Fry (yuv422 at reversedgames.com)
Date: 2025-01-13T14:59:34+11:00

Commit Message:
DARKSEED: Added localised intro/credit text for ES, FR & DE versions.

Changed paths:
    engines/darkseed/cutscene.cpp
    engines/darkseed/cutscene.h
    engines/darkseed/langtext.cpp
    engines/darkseed/langtext.h
    engines/darkseed/menu.cpp
    engines/darkseed/menu.h


diff --git a/engines/darkseed/cutscene.cpp b/engines/darkseed/cutscene.cpp
index fe112888e99..62cab1a6c6a 100644
--- a/engines/darkseed/cutscene.cpp
+++ b/engines/darkseed/cutscene.cpp
@@ -21,6 +21,7 @@
 
 #include "darkseed/cutscene.h"
 #include "darkseed/darkseed.h"
+#include "darkseed/langtext.h"
 
 namespace Darkseed {
 
@@ -115,6 +116,7 @@ void Cutscene::update() {
 static constexpr int CREDITS_DELAY = 25;
 
 bool Cutscene::introScene() {
+	auto lang = g_engine->getLanguage();
 	switch (_movieStep) {
 	case 1:
 		g_engine->fadeOut();
@@ -130,7 +132,27 @@ bool Cutscene::introScene() {
 		if (_titleFont == nullptr) {
 			_titleFont = new TitleFont();
 		}
-		_titleFont->displayString(68, 160, "DEVELOPING NEW WAYS TO AMAZE");
+		if (lang == Common::FR_FRA || lang == Common::DE_DEU) {
+			displayTitleText({
+				{0, 0, ""},
+				{0, 0, ""},
+				{41, 145, "DEVELOPPE DE NOUVELLES METHODE"},
+				{68, 145, "DIE ENTWICKLUNG NEUER, SIE IN"}
+			});
+			displayTitleText({
+				{0, 0, ""},
+				{0, 0, ""},
+				{142, 175, "POUR VOUS SURPRENDRE"},
+				{60, 175, "ERSTAUNEN VERSETZENDER WEGE..."}
+			});
+		} else {
+			displayTitleText({
+				{68, 160, "DEVELOPING NEW WAYS TO AMAZE"},
+				{0, 160, "CREANDO NUEVAS FORMAS DE DIVERTIRSE"},
+				{0, 0, ""},
+				{0, 0, ""}
+			});
+		}
 		g_engine->fadeIn(_palette);
 	}
 	break;
@@ -167,7 +189,12 @@ bool Cutscene::introScene() {
 		break;
 	case 11:
 		g_engine->_screen->clear();
-		_titleFont->displayString(250, 160, "PRESENTS");
+		displayTitleText({
+			{250, 160, "PRESENTS"},
+			{250, 160, "PRESENTA"},
+			{250, 160, "PRESENTE"},
+			{232, 160, "PRAESENTIERT"}
+		});
 		g_engine->fadeIn(_palette);
 		break;
 	case 12:
@@ -277,10 +304,25 @@ bool Cutscene::introScene() {
 	case 28:
 		putHouse();
 		registTime();
-		_titleFont->displayString(155, 90, "EXECUTIVE PRODUCERS");
-		_titleFont->displayString(200, 130, "PATRICK KETCHUM");
-		_titleFont->displayString(236, 160, "ROLF KLUG");
-		_titleFont->displayString(236, 190, "JEAN KLUG");
+		if (lang == Common::DE_DEU) {
+			_titleFont->displayString(185, 80, "VERANTWORTLICHE");
+			_titleFont->displayString(218, 110, "PRODUZENTEN");
+
+			_titleFont->displayString(200, 150, "PATRICK KETCHUM");
+			_titleFont->displayString(236, 180, "ROLF KLUG");
+			_titleFont->displayString(236, 210, "JEAN KLUG");
+		} else {
+			displayTitleText({
+				{155, 90, "EXECUTIVE PRODUCERS"},
+				{137, 90, "PRODUCTORES EJECUTIVOS"},
+				{119, 90, "DIRECTEURS DE PRODUCTION"},
+				{0, 0, ""}
+			});
+
+			_titleFont->displayString(200, 130, "PATRICK KETCHUM");
+			_titleFont->displayString(236, 160, "ROLF KLUG");
+			_titleFont->displayString(236, 190, "JEAN KLUG");
+		}
 		g_engine->_screen->makeAllDirty();
 		break;
 	case 29:
@@ -291,7 +333,12 @@ bool Cutscene::introScene() {
 	case 30:
 		putHouse();
 		registTime();
-		_titleFont->displayString(236, 95, "PRODUCERS");
+		displayTitleText({
+			{236, 95, "PRODUCERS"},
+			{218, 95, "PRODUCTORES"},
+			{218, 95, "PRODUCTEURS"},
+			{218, 95, "PRODUZENTEN"}
+		});
 		_titleFont->displayString(200, 135, "HARALD SEELEY");
 		_titleFont->displayString(218, 165, "MIKE DAWSON");
 		g_engine->_screen->makeAllDirty();
@@ -304,7 +351,12 @@ bool Cutscene::introScene() {
 	case 32:
 		putHouse();
 		registTime();
-		_titleFont->displayString(245, 95, "DESIGNERS");
+		displayTitleText({
+			{245, 95, "DESIGNERS"},
+			{227, 95, "DISENADORES"},
+			{218, 95, "DESSINATEURS"},
+			{254, 95, "DESIGNER"}
+		});
 		_titleFont->displayString(209, 135, "MIKE CRANFORD");
 		_titleFont->displayString(227, 165, "MIKE DAWSON");
 		g_engine->_screen->makeAllDirty();
@@ -317,7 +369,12 @@ bool Cutscene::introScene() {
 	case 34:
 		putHouse();
 		registTime();
-		_titleFont->displayString(227, 95, "PROGRAMMERS");
+		displayTitleText({
+			{227, 95, "PROGRAMMERS"},
+			{203, 95, "PROGRAMADORES"},
+			{218, 95, "PROGRAMMEURS"},
+			{206, 95, "PROGRAMMIERER"}
+		});
 		_titleFont->displayString(164, 135, "LENNARD FEDDERSEN");
 		_titleFont->displayString(227, 165, "JOHN KRAUSE");
 		_titleFont->displayString(245, 195, "GARY VICK");
@@ -331,7 +388,12 @@ bool Cutscene::introScene() {
 	case 36:
 		putHouse();
 		registTime();
-		_titleFont->displayString(200, 100, "MUSICAL SCORE");
+		displayTitleText({
+			{200, 100, "MUSICAL SCORE"},
+			{206, 100, "BANDA SONORA"},
+			{200, 100, "THEME MUSICAL"},
+			{214, 100, "MUSIKSTUECKE"}
+		});
 		_titleFont->displayString(200, 140, "GREGORY ALPER");
 		g_engine->_screen->makeAllDirty();
 		break;
@@ -343,7 +405,12 @@ bool Cutscene::introScene() {
 	case 38:
 		putHouse();
 		registTime();
-		_titleFont->displayString(119, 100, "MUSIC AND SOUND EFFECTS");
+		displayTitleText({
+			{119, 100, "MUSIC AND SOUND EFFECTS"},
+			{89, 100, "MUSICA Y EFECTOS DE SONIDO"},
+			{92, 100, "MUSIQUE ET EFFETS SONORES"},
+			{128, 100, "MUSIK-UND SOUNDEFFEKTE"}
+		});
 		_titleFont->displayString(200, 140, "DAVID A. BEAN");
 		g_engine->_screen->makeAllDirty();
 		break;
@@ -355,8 +422,19 @@ bool Cutscene::introScene() {
 	case 40:
 		putHouse();
 		registTime();
-		_titleFont->displayString(218, 100, "ART DIRECTOR");
-		_titleFont->displayString(236, 140, "BRUMMBAER");
+		if (lang == Common::DE_DEU) {
+			_titleFont->displayString(239, 100, "KUNST-UND");
+			_titleFont->displayString(167, 130, "ASSISTENZ DER KUNST-UND");
+			_titleFont->displayString(236, 170, "BRUMMBAER");
+		} else {
+			displayTitleText({
+				{218, 100, "ART DIRECTOR"},
+				{176, 100, "DIRECTOR ARTISTICO"},
+				{146, 100, "DIRECTEUR ARTISTIQUE"},
+				{0, 100, ""}
+			});
+			_titleFont->displayString(236, 140, "BRUMMBAER");
+		}
 		g_engine->_screen->makeAllDirty();
 		break;
 	case 41:
@@ -367,8 +445,24 @@ bool Cutscene::introScene() {
 	case 42:
 		putHouse();
 		registTime();
-		_titleFont->displayString(164, 100, "ASST. ART DIRECTOR");
-		_titleFont->displayString(191, 140, "PAUL DRZEWIECKI");
+		if (lang == Common::EN_ANY) {
+			_titleFont->displayString(164, 100, "ASST. ART DIRECTOR");
+			_titleFont->displayString(191, 140, "PAUL DRZEWIECKI");
+		} else {
+			displayTitleText({
+				{0, 0, ""},
+				{206, 100, "AYUDANTE DEL"},
+				{218, 100, "ASSISTANT DU"},
+				{119, 100, "ASSISTENZ DER KUNST-UND"}
+			});
+			displayTitleText({
+				{0, 0, ""},
+				{176, 130, "DIRECTOR ARTISTICO"},
+				{150, 130, "DIRECTEUR ARTISTIQUE"},
+				{167, 130, "ANIMATIONSDIREKTION"}
+			});
+			_titleFont->displayString(191, 170, "PAUL DRZEWIECKI");
+		}
 		g_engine->_screen->makeAllDirty();
 		break;
 	case 43:
@@ -379,7 +473,12 @@ bool Cutscene::introScene() {
 	case 44:
 		putHouse();
 		registTime();
-		_titleFont->displayString(200, 100, "DARK WORLD ART");
+		displayTitleText({
+			{200, 100, "DARK WORLD ART"},
+			{104, 100, "GRAFICOS DEL MUNDO OSCURO"},
+			{137, 100, "L'ART DU MONDE OBSCUR"},
+			{188, 100, "DARK-WORLD-KUNST"}
+		});
 		_titleFont->displayString(245, 140, "H.R. GIGER");
 		g_engine->_screen->makeAllDirty();
 		break;
@@ -391,10 +490,24 @@ bool Cutscene::introScene() {
 	case 46:
 		putHouse();
 		registTime();
-		_titleFont->displayString(182, 90, "COMPUTER ARTISTS");
-		_titleFont->displayString(227, 130, "JULIA ULANO");
-		_titleFont->displayString(191, 160, "JOBY ROME-OTERO");
-		_titleFont->displayString(236, 190, "PAUL RYAN");
+		if (lang == Common::FR_FRA) {
+			_titleFont->displayString(182, 75, "LES ARTISTES SUR");
+			_titleFont->displayString(236, 105, "ORDINATEUR");
+
+			_titleFont->displayString(227, 145, "JULIA ULANO");
+			_titleFont->displayString(191, 175, "JOBY ROME-OTERO");
+			_titleFont->displayString(236, 205, "PAUL RYAN");
+		} else {
+			displayTitleText({
+				{182, 90, "COMPUTER ARTISTS"},
+				{242, 90, "GRAFISTAS"},
+				{0, 0, ""},
+				{107, 90, "COMPUTERGRAFIK-KUENSTLER"}
+			});
+			_titleFont->displayString(227, 130, "JULIA ULANO");
+			_titleFont->displayString(191, 160, "JOBY ROME-OTERO");
+			_titleFont->displayString(236, 190, "PAUL RYAN");
+		}
 		g_engine->_screen->makeAllDirty();
 		break;
 	case 47:
@@ -405,7 +518,12 @@ bool Cutscene::introScene() {
 	case 48:
 		putHouse();
 		registTime();
-		_titleFont->displayString(236, 100, "GAME TEXT");
+		displayTitleText({
+			{236, 100, "GAME TEXT"},
+			{194, 100, "TEXTO DEL JUEGO"},
+			{173, 100, "LE TEXTE DU JEUX"},
+			{281, 100, "TEXTE"}
+		});
 		_titleFont->displayString(209, 140, "MICHEL HORVAT");
 		g_engine->_screen->makeAllDirty();
 		break;
@@ -519,9 +637,29 @@ bool Cutscene::embryoInsertedScene() {
 		if (_titleFont == nullptr) {
 			_titleFont = new TitleFont();
 		}
-		_titleFont->displayString(80, 130, "AFTER A HORRIFYING NIGHTMARE");
-		_titleFont->displayString(80, 170, "MIKE DAWSON AWAKENS TO THE");
-		_titleFont->displayString(80, 210, "FIRST DAY IN HIS NEW HOUSE...");
+		switch (g_engine->getLanguage()) {
+		case Common::ES_ESP :
+			_titleFont->displayString(80, 130, "TRAS UNA HORRIBLE PESADILLA");
+			_titleFont->displayString(80, 170, "MIKE DAWSON SE DESPIERTA EL");
+			_titleFont->displayString(80, 210, "PRIMER DIA EN SU NUEVA CASA...");
+			break;
+		case Common::FR_FRA :
+			_titleFont->displayString(0, 110, "APRES UN CAUCHEMAAR EPOUVANTABLE");
+			_titleFont->displayString(0, 150, "MIKE DAWSON SE REVEILLE POUR SA");
+			_titleFont->displayString(0, 190, "PREMIERE JOURNEE DANS LA NOUVELLE");
+			_titleFont->displayString(0, 230, "MAISON...");
+			break;
+		case Common::DE_DEU :
+			_titleFont->displayString(44, 130, "NACH EINEM SCHRECKENERREGENDEN");
+			_titleFont->displayString(44, 170, "ALPTRAUM MIKE DAWSON ERWACHT AM");
+			_titleFont->displayString(44, 210, "ERSTEM TAG IN SEINEN NEUEM HAUS...");
+			break;
+		default :
+			_titleFont->displayString(80, 130, "AFTER A HORRIFYING NIGHTMARE");
+			_titleFont->displayString(80, 170, "MIKE DAWSON AWAKENS TO THE");
+			_titleFont->displayString(80, 210, "FIRST DAY IN HIS NEW HOUSE...");
+			break;
+		}
 		g_engine->fadeIn(_palette);
 		break;
 	}
@@ -1171,4 +1309,9 @@ void Cutscene::freeMorph() {
 	_morph = nullptr;
 }
 
+void Cutscene::displayTitleText(const I18NTextWithPosition &text) {
+	const TextWithPosition &textWithPosition = getI18NTextWithPosition(text);
+	_titleFont->displayString(textWithPosition.x, textWithPosition.y, textWithPosition.text);
+}
+
 } // End of namespace Darkseed
diff --git a/engines/darkseed/cutscene.h b/engines/darkseed/cutscene.h
index c76bf64f27a..dc4519b380b 100644
--- a/engines/darkseed/cutscene.h
+++ b/engines/darkseed/cutscene.h
@@ -28,6 +28,8 @@
 
 namespace Darkseed {
 
+struct I18NTextWithPosition;
+
 class Cutscene {
 	char _cutsceneId = 0;
 	uint16 _movieStep = 9999;
@@ -73,6 +75,8 @@ private:
 	bool waitTime(int16 duration) const;
 
 	void freeMorph();
+
+	void displayTitleText(const I18NTextWithPosition &text);
 };
 
 } // namespace Darkseed
diff --git a/engines/darkseed/langtext.cpp b/engines/darkseed/langtext.cpp
index 0266c4cefa0..e6e7526c896 100644
--- a/engines/darkseed/langtext.cpp
+++ b/engines/darkseed/langtext.cpp
@@ -33,4 +33,13 @@ const char *getI18NText(const I18nText &text) {
 	}
 }
 
+const TextWithPosition &getI18NTextWithPosition(const I18NTextWithPosition &i18nTextWithPosition) {
+	switch (g_engine->getLanguage()) {
+	case Common::ES_ESP : return i18nTextWithPosition.es;
+	case Common::FR_FRA : return i18nTextWithPosition.fr;
+	case Common::DE_DEU : return i18nTextWithPosition.de;
+	default : return i18nTextWithPosition.en;
+	}
+}
+
 } // End of namespace Darkseed
diff --git a/engines/darkseed/langtext.h b/engines/darkseed/langtext.h
index b39f77c1f03..0ff9dfa93a3 100644
--- a/engines/darkseed/langtext.h
+++ b/engines/darkseed/langtext.h
@@ -31,7 +31,21 @@ struct I18nText {
 	const char *de;
 };
 
+struct TextWithPosition {
+	int x;
+	int y;
+	const char *text;
+};
+
+struct I18NTextWithPosition {
+	const TextWithPosition en;
+	const TextWithPosition es;
+	const TextWithPosition fr;
+	const TextWithPosition de;
+};
+
 const char *getI18NText(const I18nText &text);
+const TextWithPosition &getI18NTextWithPosition(const I18NTextWithPosition &i18nTextWithPosition);
 
 constexpr I18nText kI18N_CarKeysIgnitionText = {
 	"You see the car keys in the ignition.",
diff --git a/engines/darkseed/menu.cpp b/engines/darkseed/menu.cpp
index e3e268048ea..87ca54bf624 100644
--- a/engines/darkseed/menu.cpp
+++ b/engines/darkseed/menu.cpp
@@ -23,51 +23,57 @@
 #include "common/config-manager.h"
 #include "darkseed/menu.h"
 #include "darkseed/darkseed.h"
+#include "darkseed/langtext.h"
 
 namespace Darkseed {
 
-constexpr I18nMenuText kMenu_load = {
+constexpr I18NTextWithPosition kMenu_load = {
 	{127, 62, "Load"},
 	{118, 62, "CARGAR"},
 	{114, 62, "CHARGER"},
 	{127, 62, "LADEN"}
 };
 
-constexpr I18nMenuText kMenu_silent = {
+constexpr I18NTextWithPosition kMenu_silent = {
 	{123, 136, "Silent"},
 	{115, 136, "SIN SON"},
 	{114, 136, "SILENCE"},
 	{127, 136, "RUHE"}
 };
 
-constexpr I18nMenuText kMenu_sounds = {
+constexpr I18NTextWithPosition kMenu_sounds = {
 	{117, 136, "Sounds"},
 	{118, 136, "SONIDO"},
 	{114, 136, "SONS"},
 	{127, 136, "SOUND"}
 };
 
-constexpr I18nMenuText kMenu_save = {
+constexpr I18NTextWithPosition kMenu_save = {
 	{127, 99, "Save"},
 	{118, 99, "GRABAR"},
 	{114, 99, "SAUVER"},
 	{127, 99, "SICHERN"}
 };
 
-constexpr I18nMenuText kMenu_resume = {
+constexpr I18NTextWithPosition kMenu_resume = {
 	{118, 173, "Resume"},
 	{120, 173, "SEQUIR"},
 	{110, 173, "CONTINUER"},
 	{127, 173, "MEHR"}
 };
 
-constexpr I18nMenuText kMenu_quit = {
+constexpr I18NTextWithPosition kMenu_quit = {
 	{129, 210, "Quit"},
 	{125, 210, "SALIR"},
 	{110, 210, "QUITTER"},
 	{127, 210, "AUSGANG"}
 };
 
+void drawMenuItem(const I18NTextWithPosition &menuText) {
+	const TextWithPosition &textWithPosition = getI18NTextWithPosition(menuText);
+	g_engine->_console->drawStringAt(textWithPosition.x, textWithPosition.y, textWithPosition.text);
+}
+
 void Menu::drawSoundMenuItem() {
 	g_engine->_screen->fillRect({{115, 136}, 61, 11}, 0);
 	if (g_engine->_sound->isMuted()) {
@@ -182,13 +188,4 @@ void Menu::loadMenu() {
 	_open = false;
 }
 
-void Menu::drawMenuItem(const I18nMenuText &menuText) {
-	switch (g_engine->getLanguage()) {
-	case Common::ES_ESP : g_engine->_console->drawStringAt(menuText.es.x, menuText.es.y, menuText.es.text); break;
-	case Common::FR_FRA : g_engine->_console->drawStringAt(menuText.fr.x, menuText.fr.y, menuText.fr.text); break;
-	case Common::DE_DEU : g_engine->_console->drawStringAt(menuText.de.x, menuText.de.y, menuText.de.text); break;
-	default: g_engine->_console->drawStringAt(menuText.en.x, menuText.en.y, menuText.en.text); break;
-	}
-}
-
 } // End of namespace Darkseed
diff --git a/engines/darkseed/menu.h b/engines/darkseed/menu.h
index 074b1aeebba..b3e132e9276 100644
--- a/engines/darkseed/menu.h
+++ b/engines/darkseed/menu.h
@@ -24,19 +24,6 @@
 
 namespace Darkseed {
 
-struct menuText {
-	int x;
-	int y;
-	const char *text;
-};
-
-struct I18nMenuText {
-	const menuText en;
-	const menuText es;
-	const menuText fr;
-	const menuText de;
-};
-
 class Menu {
 private:
 	bool _open = false;
@@ -46,7 +33,6 @@ public:
 	void loadMenu();
 private:
 	void drawSoundMenuItem();
-	void drawMenuItem(const I18nMenuText &menuText);
 };
 
 } // namespace Darkseed




More information about the Scummvm-git-logs mailing list