aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/game/code_wheel.cpp83
-rw-r--r--engines/titanic/game/code_wheel.h3
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();