From bca0a3f2da8db9cfe3c39000e4a9ce3f15ba6ad7 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 7 Oct 2017 21:56:52 -0400 Subject: TITANIC: DE: Fixes for bomb code wheels --- engines/titanic/game/code_wheel.cpp | 83 +++++++++++++++++++++++++++---------- engines/titanic/game/code_wheel.h | 3 +- 2 files changed, 62 insertions(+), 24 deletions(-) diff --git a/engines/titanic/game/code_wheel.cpp b/engines/titanic/game/code_wheel.cpp index 441c481dfe..b395208af4 100644 --- a/engines/titanic/game/code_wheel.cpp +++ b/engines/titanic/game/code_wheel.cpp @@ -21,8 +21,6 @@ */ #include "titanic/game/code_wheel.h" -#include "titanic/titanic.h" -#include "titanic/translation.h" #include "titanic/translation.h" namespace Titanic { @@ -35,15 +33,52 @@ BEGIN_MESSAGE_MAP(CodeWheel, CBomb) ON_MESSAGE(CheckCodeWheelsMsg) END_MESSAGE_MAP() -static const int START_FRAMES[15] = { +static const int START_FRAMES_EN[15] = { 0, 5, 10, 15, 19, 24, 28, 33, 38, 42, 47, 52, 57, 61, 66 }; -static const int END_FRAMES[15] = { +static const int END_FRAMES_EN[15] = { 5, 10, 15, 19, 24, 28, 33, 38, 42, 47, 52, 57, 61, 66, 70 }; +static const int START_FRAMES_DE2[28] = { + 390, 383, 375, 368, 361, 353, 346, 339, 331, 324, + 317, 309, 302, 295, 287, 280, 272, 265, 258, 251, + 244, 236, 229, 221, 214, 207, 199, 0 +}; +static const int END_FRAMES_DE2[28] = { + 397, 390, 383, 375, 368, 361, 353, 346, 339, 331, + 324, 317, 309, 302, 295, 287, 280, 272, 265, 258, + 251, 244, 236, 229, 221, 214, 207, 0 +}; + +static const int CORRECT_VALUES_DE[3][8] = { + { 14, 2, 7, 4, 8, 18, 18, 4 }, + { 17, 12, 0, 6, 10, 11, 20, 6 }, + { 18, 13, 8, 4, 12, 0, 13, 3 } +}; +static const int START_FRAMES_DE[28] = { + 0, 7, 15, 22, 29, 37, 44, 51, 58, 66, + 73, 80, 88, 95, 102, 110, 117, 125, 132, 139, + 146, 154, 161, 168, 175, 183, 190, 0 +}; +static const int END_FRAMES_DE[28] = { + 7, 15, 22, 29, 37, 44, 51, 58, 66, 73, + 80, 88, 95, 102, 110, 117, 125, 132, 139, 146, + 154, 161, 168, 175, 183, 190, 198, 0 +}; +static const int START_FRAMES_REV_DE[28] = { + 390, 383, 375, 368, 361, 353, 346, 339, 331, 324, + 317, 309, 302, 295, 287, 280, 272, 265, 258, 251, + 244, 236, 229, 221, 214, 207, 199, 0 +}; +static const int END_FRAMES_REV_DE[28] = { + 397, 390, 383, 375, 368, 361, 353, 346, 339, 331, + 324, 317, 309, 302, 295, 287, 280, 272, 265, 258, + 251, 244, 236, 229, 221, 214, 207, 0 +}; + CodeWheel::CodeWheel() : CBomb(), _correctValue(0), _value(4), - _matched(false), _field114(0), _field118(0) { + _matched(false), _column(0), _row(0) { } void CodeWheel::save(SimpleFile *file, int indent) { @@ -51,9 +86,9 @@ void CodeWheel::save(SimpleFile *file, int indent) { file->writeNumberLine(_correctValue, indent); file->writeNumberLine(_value, indent); file->writeNumberLine(_matched, indent); - if (g_vm->isGerman()) { - file->writeNumberLine(_field114, indent); - file->writeNumberLine(_field118, indent); + if (g_language == Common::DE_DEU) { + file->writeNumberLine(_row, indent); + file->writeNumberLine(_column, indent); } CBomb::save(file, indent); @@ -64,9 +99,13 @@ void CodeWheel::load(SimpleFile *file) { _correctValue = file->readNumber(); _value = file->readNumber(); _matched = file->readNumber(); - if (g_vm->isGerman()) { - _field114 = file->readNumber(); - _field118 = file->readNumber(); + if (g_language == Common::DE_DEU) { + _row = file->readNumber(); + _column = file->readNumber(); + + assert(_value >= 0 && _value < 8); + assert(_row >= 0 && _row < 3); + _correctValue = CORRECT_VALUES_DE[_row][_column]; } CBomb::load(file); @@ -76,21 +115,21 @@ bool CodeWheel::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { int yp = _bounds.top + _bounds.height() / 2; _matched = false; - if (msg->_mousePos.y > yp) { - if (_value == _correctValue) - _matched = true; + if (_value == _correctValue) + _matched = true; - _value = (_value + 1) % 15; - playMovie(START_FRAMES[_value], END_FRAMES[_value], + if (msg->_mousePos.y > yp) { + _value = (_value + 1) % TRANSLATE(15, 27); + playMovie(TRANSLATE(START_FRAMES_EN[_value], START_FRAMES_DE[_value]), + TRANSLATE(END_FRAMES_EN[_value], END_FRAMES_DE[_value]), MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); - } else { - if (_value == _correctValue) - _matched = true; - playMovie(START_FRAMES[14 - _value] + 68, END_FRAMES[14 - _value] + 68, + } else { + playMovie(TRANSLATE(START_FRAMES_EN[14 - _value] + 68, START_FRAMES_REV_DE[_value]), + TRANSLATE(END_FRAMES_EN[14 - _value] + 68, END_FRAMES_REV_DE[_value]), MOVIE_WAIT_FOR_FINISH | MOVIE_NOTIFY_OBJECT); - _value = (_value <= 0) ? 14 : _value - 1; + _value = (_value <= 0) ? TRANSLATE(14, 26) : _value - 1; } playSound(TRANSLATE("z#59.wav", "z#590.wav")); @@ -99,7 +138,7 @@ bool CodeWheel::MouseButtonDownMsg(CMouseButtonDownMsg *msg) { bool CodeWheel::EnterViewMsg(CEnterViewMsg *msg) { // WORKAROUND: Don't keep resetting code wheels back to default - loadFrame(END_FRAMES[_value]); + loadFrame(TRANSLATE(END_FRAMES_EN[_value], END_FRAMES_DE[_value])); return true; } diff --git a/engines/titanic/game/code_wheel.h b/engines/titanic/game/code_wheel.h index 3d19eeb53c..4de937b5cc 100644 --- a/engines/titanic/game/code_wheel.h +++ b/engines/titanic/game/code_wheel.h @@ -39,8 +39,7 @@ private: int _value; bool _matched; // German specific fields - int _field114; - int _field118; + int _row, _column; public: CLASSDEF; CodeWheel(); -- cgit v1.2.3