SHERLOCK: action processing uses fixed text class

action error messages are now localized too
This commit is contained in:
Martin Kiewitz 2015-06-14 17:52:11 +02:00
parent b26bc29619
commit 1b6a60f359
8 changed files with 229 additions and 59 deletions

View file

@ -85,10 +85,12 @@ static const Common::String fixedTextDE[] = {
// Journal search
"Zur\201ck",
"R\201ckw\204rts", // original: "Backward"
"V\224rw\204rts", // original: "Forward"
"Vorw\204rts", // original: "Forward"
"Text nicht gefunden!"
};
// up-side down exclamation mark - 0xAD / octal 255
// up-side down question mark - 0xA8 / octal 250
static const Common::String fixedTextES[] = {
// Window buttons
"Exit",
@ -119,31 +121,191 @@ static const Common::String fixedTextES[] = {
"Texto no encontrado!"
};
static const SherlockFixedTextLanguageEntry fixedTextLanguages[] = {
{ Common::DE_DEU, fixedTextDE },
{ Common::ES_ESP, fixedTextES },
{ Common::EN_ANY, fixedTextEN },
{ Common::UNK_LANG, fixedTextEN }
// =========================================
static const Common::String fixedTextEN_ActionOpen[] = {
"This cannot be opened",
"It is already open",
"It is locked",
"Wait for Watson",
" ",
"."
};
static const Common::String fixedTextDE_ActionOpen[] = {
"Das kann man nicht \224ffnen",
"Ist doch schon offen!",
"Leider verschlossen",
"Warte auf Watson",
" ",
"."
};
static const Common::String fixedTextES_ActionOpen[] = {
"No puede ser abierto",
"Ya esta abierto",
"Esta cerrado",
"Espera a Watson",
" ",
"."
};
static const Common::String fixedTextEN_ActionClose[] = {
"This cannot be closed",
"It is already closed",
"The safe door is in the way"
};
static const Common::String fixedTextDE_ActionClose[] = {
"Das kann man nicht schlie\341en",
"Ist doch schon zu!",
"Die safet\201r ist Weg"
};
static const Common::String fixedTextES_ActionClose[] = {
"No puede ser cerrado",
"Ya esta cerrado",
"La puerta de seguridad esta entre medias"
};
static const Common::String fixedTextEN_ActionMove[] = {
"This cannot be moved",
"It is bolted to the floor",
"It is too heavy",
"The other crate is in the way"
};
static const Common::String fixedTextDE_ActionMove[] = {
"L\204\341t sich nicht bewegen",
"Festged\201belt in der Erde...",
"Oha, VIEL zu schwer",
"Der andere Kiste ist im Weg" // [sic]
};
static const Common::String fixedTextES_ActionMove[] = {
"No puede moverse",
"Esta sujeto a la pared",
"Es demasiado pesado",
"El otro cajon esta en mitad"
};
static const Common::String fixedTextEN_ActionPick[] = {
"Nothing of interest here",
"It is bolted down",
"It is too big to carry",
"It is too heavy",
"I think a girl would be more your type",
"Those flowers belong to Penny",
"She's far too young for you!",
"I think a girl would be more your type!",
"Government property for official use only"
};
static const Common::String fixedTextDE_ActionPick[] = {
"Nichts Interessantes da",
"Zu gut befestigt",
"Ist ja wohl ein bi\341chen zu gro\341, oder ?",
"Ich denke, Du stehst mehr auf M\204dchen ?",
"Diese Blumen geh\224ren Penny",
"Sie ist doch viel zu jung f\201r Dich!",
"Staatseigentum - Nur für den Dienstgebrauch !"
};
static const Common::String fixedTextES_ActionPick[] = {
"No hay nada interesante",
"Esta anclado al suelo",
"Es muy grande para llevarlo",
"Pesa demasiado",
"Creo que una chica sera mas tu tipo",
"Esas flores pertenecen a Penny",
"\255Es demasiado joven para ti!"
"\255Creo que una chica sera mas tu tipo!",
"Propiedad del gobierno para uso oficial"
};
static const Common::String fixedTextEN_ActionUse[] = {
"You can't do that",
"It had no effect",
"You can't reach it",
"OK, the door looks bigger! Happy?"
"Doors don't smoke"
};
static const Common::String fixedTextDE_ActionUse[] = {
"Nein, das geht wirklich nicht",
"Tja keinerlei Wirkung",
"Da kommst du nicht dran",
"Na gut, die Tür sieht jetzt gr\224\341er aus. Zufrieden?"
"Türen sind Nichtraucher!"
};
static const Common::String fixedTextES_ActionUse[] = {
"No puedes hacerlo",
"No tuvo ningun efecto",
"No puedes alcanzarlo",
"Bien, \255es enorme! \250Feliz?"
"Las puertas no fuman"
};
static const FixedTextActionEntry fixedTextEN_Actions[] = {
{ fixedTextEN_ActionOpen },
{ fixedTextEN_ActionClose },
{ fixedTextEN_ActionMove },
{ fixedTextEN_ActionPick },
{ fixedTextEN_ActionUse }
};
static const FixedTextActionEntry fixedTextDE_Actions[] = {
{ fixedTextDE_ActionOpen },
{ fixedTextDE_ActionClose },
{ fixedTextDE_ActionMove },
{ fixedTextDE_ActionPick },
{ fixedTextDE_ActionUse }
};
static const FixedTextActionEntry fixedTextES_Actions[] = {
{ fixedTextES_ActionOpen },
{ fixedTextES_ActionClose },
{ fixedTextES_ActionMove },
{ fixedTextES_ActionPick },
{ fixedTextES_ActionUse }
};
// =========================================
static const FixedTextLanguageEntry fixedTextLanguages[] = {
{ Common::DE_DEU, fixedTextDE, fixedTextDE_Actions },
{ Common::ES_ESP, fixedTextES, fixedTextES_Actions },
{ Common::EN_ANY, fixedTextEN, fixedTextEN_Actions },
{ Common::UNK_LANG, fixedTextEN, fixedTextEN_Actions }
};
// =========================================
// =========================================
FixedText::FixedText(SherlockEngine *vm) : _vm(vm) {
// Figure out which fixed texts to use
Common::Language curLanguage = _vm->getLanguage();
const SherlockFixedTextLanguageEntry *curLanguageEntry = fixedTextLanguages;
const FixedTextLanguageEntry *curLanguageEntry = fixedTextLanguages;
while (curLanguageEntry->language != Common::UNK_LANG) {
if (curLanguageEntry->language == curLanguage)
break; // found current language
curLanguageEntry++;
}
_fixedText = curLanguageEntry->fixedTextArray;
_curLanguageEntry = curLanguageEntry;
}
const Common::String FixedText::getText(FixedTextId fixedTextId) {
return _fixedText[fixedTextId];
return _curLanguageEntry->fixedTextArray[fixedTextId];
}
const Common::String FixedText::getActionMessage(FixedTextActionId actionId, int messageIndex) {
assert(actionId >= 0);
return _curLanguageEntry->actionArray[actionId].fixedTextArray[messageIndex];
}
} // End of namespace Sherlock