[Scummvm-git-logs] scummvm master -> 4b8b2df4b50a3a47db9a5a6cd7188131784e7bef
sev-
noreply at scummvm.org
Mon Sep 23 10:03:26 UTC 2024
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6bada4e390 QDENGINE: Implement rest of ShveikShaktulka methods and replaced strings
4b8b2df4b5 QDENGINE: Fixes for ShveikPortret minigame. It is completable now
Commit: 6bada4e390ed8ab4396f835019cad6d1b7ad36de
https://github.com/scummvm/scummvm/commit/6bada4e390ed8ab4396f835019cad6d1b7ad36de
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-23T12:03:13+02:00
Commit Message:
QDENGINE: Implement rest of ShveikShaktulka methods and replaced strings
Changed paths:
engines/qdengine/minigames/shveik_portret.h
engines/qdengine/qdcore/qd_minigame.cpp
diff --git a/engines/qdengine/minigames/shveik_portret.h b/engines/qdengine/minigames/shveik_portret.h
index 711226d071d..275ab350725 100644
--- a/engines/qdengine/minigames/shveik_portret.h
+++ b/engines/qdengine/minigames/shveik_portret.h
@@ -122,22 +122,22 @@ public:
_currentPieceRow = -1;
_currentPieceCol = -1;
- if (_wasStartedObj->is_state_active("\xed\xe5\xf2")) { // "неÑ")
+ if (_wasStartedObj->is_state_active("\xed\xe5\xf2")) { // "неÑ"
// srand(time(0))
for (int i = 1; i <= 24; i++) {
switch (qd_rnd(3)) {
case 0:
- _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x30"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 0")
+ _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 0"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 0")
break;
case 1:
- _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x39\x30"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 90")
+ _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 90"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 90")
break;
case 2:
- _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x31\x38\x30"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 180")
+ _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 180"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 180")
break;
case 3:
- _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x32\x37\x30"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 270")
+ _objArray[i].obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 270"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 270")
break;
default:
break;
@@ -212,14 +212,14 @@ public:
_solutionState[27].pieceNum = 24;
_solutionState[27].angle = 0;
- _exitClickObj->set_state("\xed\xe5\xf2"); // "неÑ")
+ _exitClickObj->set_state("\xed\xe5\xf2"); // "неÑ"
_draggedInvObjectState = 0;
_draggedObjectState = 0;
setPiecesDepth();
setPiecesPos();
- if (_oneAbsentObj->is_state_active("\xed\xe5\xf2")) { // "неÑ")
+ if (_oneAbsentObj->is_state_active("\xed\xe5\xf2")) { // "неÑ"
_objArray[2].obj->set_R(_scene->screen2world_coords(mgVect2i(700, 500), 0.0));
_oneAbsentObj->set_state("\xf4\xeb\xe0\xe3\x20\xee\xf2\xf0\xe0\xe1\xee\xf2\xe0\xed"); // "Ñлаг оÑÑабоÑан"
}
@@ -230,22 +230,22 @@ public:
bool quant(float dt) {
debugC(3, kDebugMinigames, "ShveikPortret::quant(%f)", dt);
- if (!_doneObj->is_state_active("да")) {
+ if (!_doneObj->is_state_active("\xe4\xe0")) { // "да"
if (checkSolution()) {
- _doneObj->set_state("да");
- _completePicObj->set_state("лиÑÐµÐ²Ð°Ñ ÑÑоÑона");
+ _doneObj->set_state("\xe4\xe0"); // "да"
+ _completePicObj->set_state("\xeb\xe8\xf6\xe5\xe2\xe0\xff\x20\xf1\xf2\xee\xf0\xee\xed\xe0"); // "лиÑÐµÐ²Ð°Ñ ÑÑоÑона"
for (int i = 1; i <= 24; i++)
_objArray[i].obj->set_R(mgVect3f(-1000.0, -1000.0, -100.0));
- _scene->activate_personage("Швейк");
+ _scene->activate_personage("\xd8\xe2\xe5\xe9\xea"); // "Швейк"
return true;
}
}
- if (_exitClickObj->is_state_active("да"))
- _exitClickObj->set_state("вÑÑ
од ÑазÑеÑен");
+ if (_exitClickObj->is_state_active("\xe4\xe0")) // "да"
+ _exitClickObj->set_state("\xe2\xfb\xf5\xee\xe4\x20\xf0\xe0\xe7\xf0\xe5\xf8\xe5\xed"); // "вÑÑ
од ÑазÑеÑен"
mgVect2i curPos = _engine->mouse_cursor_position();
@@ -263,14 +263,14 @@ public:
if (state > 24) {
obj = _objArray[state - 24].obj;
- if (obj->is_state_active("inv на мÑÑи 0")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 0");
- } else if (obj->is_state_active("inv на мÑÑи 90")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 90");
- } else if (obj->is_state_active("inv на мÑÑи 180")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 180");
- } else if (obj->is_state_active("inv на мÑÑи 270")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 270");
+ if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 0")) { // "inv на мÑÑи 0"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 0"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 0"
+ } else if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 90")) { // "inv на мÑÑи 90"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 90"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 90"
+ } else if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 180")) { // "inv на мÑÑи 180"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 180"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 180"
+ } else if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 270")) { // "inv на мÑÑи 270"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec 270"); // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 270"
}
if (_engine->mouse_cursor_position().x > 205
@@ -294,8 +294,8 @@ public:
setPiecesPos();
- _clickObj->set_state("неÑ");
- _maskOutsideObj->set_state("!маÑка");
+ _clickObj->set_state("\xed\xe5\xf2"); // "неÑ"
+ _maskOutsideObj->set_state("\x21\xec\xe0\xf1\xea\xe0"); // "!маÑка"
} else if (state > 0) {
_currentPieceRow = getPieceNumber(curPos.x, 204, 4, 99);
_currentPieceCol = getPieceNumber(curPos.y, 4, 6, 99);
@@ -303,17 +303,17 @@ public:
obj = _objArray[state].obj;
if (_fieldState[_currentPieceRow][_currentPieceCol].pieceNum == -1) {
- if (obj->is_state_active("inv на мÑÑи 0")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 0");
+ if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 0")) { // "inv на мÑÑи 0"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 0"); // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 0"
_fieldState[_currentPieceRow][_currentPieceCol].angle = 0;
- } else if (obj->is_state_active("inv на мÑÑи 90")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 90");
+ } else if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 90")) { // "inv на мÑÑи 90"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 90"); // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 90"
_fieldState[_currentPieceRow][_currentPieceCol].angle = 90;
- } else if (obj->is_state_active("inv на мÑÑи 180")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 180");
+ } else if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 180")) { // "inv на мÑÑи 180"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 180"); // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 180"
_fieldState[_currentPieceRow][_currentPieceCol].angle = 180;
- } else if (obj->is_state_active("inv на мÑÑи 270")) {
- obj->set_state("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 270");
+ } else if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 270")) { // "inv на мÑÑи 270"
+ obj->set_state("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 270"); // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 270"
_fieldState[_currentPieceRow][_currentPieceCol].angle = 270;
}
@@ -329,8 +329,8 @@ public:
_fieldState[_currentPieceRow][_currentPieceCol].pieceNum = state;
}
- _clickObj->set_state("неÑ");
- _maskOutsideObj->set_state("!маÑка");
+ _clickObj->set_state("\xed\xe5\xf2"); // "неÑ"
+ _maskOutsideObj->set_state("\x21\xec\xe0\xf1\xea\xe0"); // "!маÑка"
}
state = _objectClickObj->current_state_index();
@@ -338,10 +338,10 @@ public:
if (state > 0) {
obj = _objArray[state].obj;
- if (obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 0")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 90")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 180")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 270")) {
+ if (obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 0") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 0"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 90") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 90"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 180") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 180"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 270")) { // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 270"
_fieldState[_objArray[state].x][_objArray[state].y].pieceNum = -1;
_fieldState[_objArray[state].x][_objArray[state].y].angle = -1;
@@ -349,29 +349,29 @@ public:
_objArray[state].y = -1;
}
- if (obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 0")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 0")) {
- _draggedInvObjectState = obj->state_index("inv на мÑÑи 0");
+ if (obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 0") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 0"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x30")) { // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 0"
+ _draggedInvObjectState = obj->state_index("inv \xed\xe0\x20\xec\xfb\xf8\xe8 0"); // "inv на мÑÑи 0"
}
- if (obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 90")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 90")) {
- _draggedInvObjectState = obj->state_index("inv на мÑÑи 90");
+ if (obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 90") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 90"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x39\x30")) { // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 90"
+ _draggedInvObjectState = obj->state_index("inv \xed\xe0\x20\xec\xfb\xf8\xe8 90"); // "inv на мÑÑи 90"
}
- if (obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 180")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 180")) {
- _draggedInvObjectState = obj->state_index("inv на мÑÑи 180");
+ if (obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 180") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 180"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x31\x38\x30")) { // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 180"
+ _draggedInvObjectState = obj->state_index("inv \xed\xe0\x20\xec\xfb\xf8\xe8 180"); // "inv на мÑÑи 180"
}
- if (obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 270")
- || obj->is_state_active("Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 270")) {
- _draggedInvObjectState = obj->state_index("inv на мÑÑи 270");
+ if (obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xed\xe0\x20\xef\xee\xeb\xe5 270") // "Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° поле 270"
+ || obj->is_state_active("\xeb\xe5\xe6\xe8\xf2\x20\xe7\xe0\x20\xef\xee\xeb\xe5\xec\x20\x32\x37\x30")) { // "Ð»ÐµÐ¶Ð¸Ñ Ð·Ð° полем 270"
+ _draggedInvObjectState = obj->state_index("inv \xed\xe0\x20\xec\xfb\xf8\xe8 270"); // "inv на мÑÑи 270"
}
_draggedObjectState = state;
obj->set_state("to_inv");
- _objectClickObj->set_state("неÑ");
- _maskOutsideObj->set_state("Фон - маÑка");
+ _objectClickObj->set_state("\xed\xe5\xf2"); // "неÑ"
+ _maskOutsideObj->set_state("\xd4\xee\xed\x20\x2d\x20\xec\xe0\xf1\xea\xe0"); // Фон - маÑка"
}
if (_engine->is_mouse_event_active(qdmg::qdEngineInterfaceImpl::MOUSE_EV_RIGHT_DOWN)
@@ -379,21 +379,21 @@ public:
obj =_scene->mouse_object_interface();
if (obj) {
- if (obj->has_state("ÑдалиÑÑ")) {
- if (obj->is_state_active("inv на мÑÑи 0")) {
- obj->set_state("inv на мÑÑи 90");
+ if (obj->has_state("\xf3\xe4\xe0\xeb\xe8\xf2\xfc")) { // "ÑдалиÑÑ"
+ if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 0")) { // "inv на мÑÑи 0"
+ obj->set_state("inv \xed\xe0\x20\xec\xfb\xf8\xe8 90"); // "inv на мÑÑи 90"
return true;
}
- if (obj->is_state_active("inv на мÑÑи 90")) {
- obj->set_state("inv на мÑÑи 180");
+ if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 90")) { // "inv на мÑÑи 90"
+ obj->set_state("inv \xed\xe0\x20\xec\xfb\xf8\xe8 180"); // "inv на мÑÑи 180"
return true;
}
- if (obj->is_state_active("inv на мÑÑи 180")) {
- obj->set_state("inv на мÑÑи 270");
+ if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 180")) { // "inv на мÑÑи 180"
+ obj->set_state("inv \xed\xe0\x20\xec\xfb\xf8\xe8 270"); // "inv на мÑÑи 270"
return true;
}
- if (obj->is_state_active("inv на мÑÑи 270")) {
- obj->set_state("inv на мÑÑи 0");
+ if (obj->is_state_active("inv \xed\xe0\x20\xec\xfb\xf8\xe8 270")) { // "inv на мÑÑи 270"
+ obj->set_state("inv \xed\xe0\x20\xec\xfb\xf8\xe8 0"); // "inv на мÑÑи 0"
return true;
}
}
@@ -496,11 +496,33 @@ private:
}
bool checkSolution() {
- return false;
+ for (int i = 1; i <= 6; i++) {
+ for (int j = 1; j <= 4; j++) {
+ if (_fieldState[i][j].pieceNum != _solutionState[i * 4 + j].pieceNum ||
+ _fieldState[i][j].angle != _solutionState[i * 4 + j].angle)
+ return false;
+ }
+ }
+
+ return true;
}
int getPieceNumber(int left, int right, int dimSize, int step) {
- return 0;
+ if (dimSize < 1)
+ return dimSize;
+
+ int res = dimSize;
+ int curPos = step + 204;
+
+ for (int i = 1; i <= dimSize; i++) {
+ if (right <= left && curPos > left)
+ res = i;
+
+ right += step;
+ curPos += step;
+ }
+
+ return res;
}
private:
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 1b4df8391ea..8d348679efc 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -317,7 +317,9 @@ bool qdMiniGame::load_interface() {
} else if (_dll_name == "DLL\\ShveikShkatulka.dll") {
_interface = new qdShveikShkatulkaMiniGame();
return true;
- // ShveikPortret.dll
+ } else if (_dll_name == "DLL\\ShveikPortret.dll") {
+ _interface = new qdShveikPortretMiniGame();
+ return true;
// klepa
// Karaoke.dll
Commit: 4b8b2df4b50a3a47db9a5a6cd7188131784e7bef
https://github.com/scummvm/scummvm/commit/4b8b2df4b50a3a47db9a5a6cd7188131784e7bef
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-23T12:03:13+02:00
Commit Message:
QDENGINE: Fixes for ShveikPortret minigame. It is completable now
Changed paths:
engines/qdengine/minigames/shveik_portret.h
diff --git a/engines/qdengine/minigames/shveik_portret.h b/engines/qdengine/minigames/shveik_portret.h
index 275ab350725..db84de09009 100644
--- a/engines/qdengine/minigames/shveik_portret.h
+++ b/engines/qdengine/minigames/shveik_portret.h
@@ -37,6 +37,11 @@ public:
bool init(const qdEngineInterface *engine_interface) {
debugC(1, kDebugMinigames, "ShveikPortret::init()");
+ _engine = engine_interface;
+ _scene = engine_interface->current_scene_interface();
+ if (!_scene)
+ return false;
+
_objArray[1].obj = _scene->object_interface("\xee\xe1\xfa\xe5\xea\xf2\x31"); // "обÑекÑ1"
_objArray[1].x = -1;
_objArray[1].y = -1;
@@ -163,55 +168,6 @@ public:
processState();
}
- _solutionState[1].pieceNum = 1;
- _solutionState[1].angle = 0;
- _solutionState[2].pieceNum = 2;
- _solutionState[2].angle = 0;
- _solutionState[3].pieceNum = 3;
- _solutionState[3].angle = 0;
- _solutionState[4].pieceNum = 4;
- _solutionState[4].angle = 0;
- _solutionState[5].pieceNum = 5;
- _solutionState[5].angle = 0;
- _solutionState[6].pieceNum = 6;
- _solutionState[6].angle = 0;
- _solutionState[8].pieceNum = 7;
- _solutionState[8].angle = 0;
- _solutionState[9].pieceNum = 8;
- _solutionState[9].angle = 0;
- _solutionState[10].pieceNum = 9;
- _solutionState[10].angle = 0;
- _solutionState[11].pieceNum = 10;
- _solutionState[11].angle = 0;
- _solutionState[12].pieceNum = 11;
- _solutionState[12].angle = 0;
- _solutionState[13].pieceNum = 12;
- _solutionState[13].angle = 0;
- _solutionState[15].pieceNum = 13;
- _solutionState[15].angle = 0;
- _solutionState[16].pieceNum = 14;
- _solutionState[16].angle = 0;
- _solutionState[17].pieceNum = 15;
- _solutionState[17].angle = 0;
- _solutionState[18].pieceNum = 16;
- _solutionState[18].angle = 0;
- _solutionState[19].pieceNum = 17;
- _solutionState[19].angle = 0;
- _solutionState[20].pieceNum = 18;
- _solutionState[20].angle = 0;
- _solutionState[22].pieceNum = 19;
- _solutionState[22].angle = 0;
- _solutionState[23].pieceNum = 20;
- _solutionState[23].angle = 0;
- _solutionState[24].pieceNum = 21;
- _solutionState[24].angle = 0;
- _solutionState[25].pieceNum = 22;
- _solutionState[25].angle = 0;
- _solutionState[26].pieceNum = 23;
- _solutionState[26].angle = 0;
- _solutionState[27].pieceNum = 24;
- _solutionState[27].angle = 0;
-
_exitClickObj->set_state("\xed\xe5\xf2"); // "неÑ"
_draggedInvObjectState = 0;
_draggedObjectState = 0;
@@ -230,6 +186,24 @@ public:
bool quant(float dt) {
debugC(3, kDebugMinigames, "ShveikPortret::quant(%f)", dt);
+ if (_engine->is_key_pressed(VK_F1)) {
+ for (int j = 0; j < 7; j++) {
+ for (int i = 0; i < 6; i++) {
+ debugN("%02d ", _fieldState[j][i].pieceNum);
+ }
+
+ debugN(" ");
+
+ for (int i = 0; i < 6; i++) {
+ debugN("%3d ", _fieldState[j][i].angle);
+ }
+
+ debugN("\n");
+ }
+
+ debug("\n");
+ }
+
if (!_doneObj->is_state_active("\xe4\xe0")) { // "да"
if (checkSolution()) {
_doneObj->set_state("\xe4\xe0"); // "да"
@@ -496,13 +470,19 @@ private:
}
bool checkSolution() {
- for (int i = 1; i <= 6; i++) {
- for (int j = 1; j <= 4; j++) {
- if (_fieldState[i][j].pieceNum != _solutionState[i * 4 + j].pieceNum ||
- _fieldState[i][j].angle != _solutionState[i * 4 + j].angle)
+ int n = 1;
+
+ // The original was comparing with the static array
+ for (int j = 1; j < 6; j++)
+ for (int i = 0; i < 6; i++) {
+ if ((j == 1 && i == 0) || (j == 5 && i > 0))
+ continue;
+
+ if (_fieldState[j][i].pieceNum != n || _fieldState[j][i].angle != 0)
return false;
+
+ n++;
}
- }
return true;
}
@@ -559,8 +539,6 @@ private:
int _currentPieceCol = 0;
PieceState _fieldState[7][6];
- PieceState _solutionState[28];
-
};
} // namespace QDEngine
More information about the Scummvm-git-logs
mailing list