[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