[Scummvm-git-logs] scummvm master -> bc0de5454599a5abf07b4464ad646959cb020eb5

sev- noreply at scummvm.org
Sun Oct 13 18:10:20 UTC 2024


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7541704371 QDENGINE: Completed code for 3mice2_testo.dll minigame
6bb411a58c QDENGINE: Code fixes to 3mice2_testo.dll minigame
6371b2866c QDENGINE: Fix wrong semicolon. PVS-Studio V529
bc0de54545 QDENGINE: Init class variables. PVS-Studio V730


Commit: 754170437121d2f4ce84d01755e6b5a7816ffc0f
    https://github.com/scummvm/scummvm/commit/754170437121d2f4ce84d01755e6b5a7816ffc0f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-10-13T20:09:54+02:00

Commit Message:
QDENGINE: Completed code for 3mice2_testo.dll minigame

Changed paths:
    engines/qdengine/minigames/3mice2_testo.h


diff --git a/engines/qdengine/minigames/3mice2_testo.h b/engines/qdengine/minigames/3mice2_testo.h
index 213c07235ef..1b53fcc72eb 100644
--- a/engines/qdengine/minigames/3mice2_testo.h
+++ b/engines/qdengine/minigames/3mice2_testo.h
@@ -285,70 +285,39 @@ private:
 	}
 
 	bool checkSnapPiece(int num) {
-#if 0
-		v3 = _noDoughX + _engine->mouse_cursor_position(_engine, &v22)->x;
-		v4 = _engine->mouse_cursor_position(_engine, &v22);
-		v5 = num;
-		y = v4->y;
-		v16 = 0;
-		if (_numVerts[num] > 0) {
-			p_y = (mgVect2i_s1 *)&_figureVerts[num].y;
-			while (2) {
-				v7 = 0;
-				v8 = &_figures[8];
-				v19 = 0;
-				do {
-					if (v7 != v5) {
-						v9 = p_y->y;
-						v21[0] = p_y[-1].x + v3;
-						v10 = *v8;
-						v21[1] = y + v9;
-						if (v10->hit_test(v10, (mgVect2i *)v21))
-							return 1;
-						v11 = y + p_y->y;
-						v22.x = p_y[-1].x + v3;
-						v22.y = v11;
-						if (_objNoDoughFake->hit_test(_objNoDoughFake, &v22))
-							return 1;
-						v5 = num;
-						v7 = v19;
-					}
-					++v7;
-					++v8;
-					v19 = v7;
-				} while (v7 < 8);
-
-				p_y += 8;
-
-				if (++v16 < _numVerts[v5])
-					continue;
-				break;
+		mgVect2i pos = _engine->mouse_cursor_position();
+		pos.x += _noDoughX;
+
+		int v = num;
+
+		for (int i = 0; i < _numVerts[num]; i++) {
+			mgVect2i npos = _figureVerts[v];
+			npos.x += pos.x;
+			npos.y += pos.y;
+
+			for (int j = 0; j < 8; j++) {
+				if (j != num) {
+					if (_figures[8 + i]->hit_test(npos))
+						return true;
+
+					if (_objNoDoughFake->hit_test(npos))
+						return true;
+				}
 			}
+
+			v += 8;
 		}
-		v12 = 0;
-		figures_ = &_figures[8];
-		v17 = 0;
-		v14 = (mgVect2i_s1 *)&_figureBboxes[0].y;
-		do {
-			if (v12 != v5) {
-				if (v14[-1].x + (*figures_)->screen_R(*figures_, &v22)->x < v3 + _figureBboxes[2 * num].x) {
-					v20 = (qdMinigameInterface *)((char *)this + 16 * num);
-					if (v14->y + (*figures_)->screen_R(*figures_, (mgVect2i *)v21)->x > v3
-																							+ v20->_figureBboxes[offsetof(qdMinigameInterface, vmt)].y
-					&& v14[1].y + (*figures_)->screen_R(*figures_, &v23)->y > y + v20->_figureBboxes[1].y
-					&& v14->x + (*figures_)->screen_R(*figures_, (mgVect2i *)v24)->y < y + v20->_figureBboxes[1].x) {
+
+		for (int i = 0; i < 8; i++) {
+			if (i != num) {
+				if (_figureBboxes[2 * i].x     + _figures[i]->screen_R().x < pos.x + _figureBboxes[2 * num].x &&
+					_figureBboxes[2 * i].y     + _figures[i]->screen_R().x > pos.x + _figureBboxes[2 * num].y &&
+					_figureBboxes[2 * i + 1].x + _figures[i]->screen_R().y < pos.y + _figureBboxes[2 * num + 1].x &&
+					_figureBboxes[2 * i + 1].y + _figures[i]->screen_R().y > pos.y + _figureBboxes[2 * num + 1].y)
 						return true;
-					}
-				}
-				v5 = num;
-				v12 = v17;
 			}
-			++v12;
-			++figures_;
-			v14 += 2;
-			v17 = v12;
-		} while (v12 < 8);
-#endif
+		}
+
 		return false;
 	}
 


Commit: 6bb411a58cb3bc147bbcd3661c9dfc3d814d8faa
    https://github.com/scummvm/scummvm/commit/6bb411a58cb3bc147bbcd3661c9dfc3d814d8faa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-10-13T20:09:54+02:00

Commit Message:
QDENGINE: Code fixes to 3mice2_testo.dll minigame

Changed paths:
    engines/qdengine/minigames/3mice2_testo.h
    engines/qdengine/qdcore/qd_minigame.cpp


diff --git a/engines/qdengine/minigames/3mice2_testo.h b/engines/qdengine/minigames/3mice2_testo.h
index 1b53fcc72eb..8e612e0c018 100644
--- a/engines/qdengine/minigames/3mice2_testo.h
+++ b/engines/qdengine/minigames/3mice2_testo.h
@@ -23,6 +23,7 @@
 #define QDENGINE_MINIGAMES_3MICE2_TESTO_H
 
 #include "common/debug.h"
+#include "common/rect.h"
 
 #include "qdengine/qd_fwd.h"
 #include "qdengine/qdcore/qd_minigame_interface.h"
@@ -112,10 +113,12 @@ public:
 				v += 8;	// Data is arranged in vertical columns
 			}
 
-			_figureBboxes[i * 2].x = maxX;
-			_figureBboxes[i * 2].y = minX;
-			_figureBboxes[i * 2 + 1].x = maxY;
-			_figureBboxes[i * 2 + 1].y = minY;
+			_figureBboxes[i].top = maxX;
+			_figureBboxes[i].left = minX;
+			_figureBboxes[i].bottom = maxY;
+			_figureBboxes[i].top = minY;
+
+			debugC(2, kDebugMinigames, "bbox for: %d: [%d, %d, %d, %d]", i, _figureBboxes[i].left, _figureBboxes[i].top, _figureBboxes[i].right, _figureBboxes[i].bottom);
 		}
 
 		mgVect2i pos = _objNoDough->screen_R();
@@ -157,24 +160,25 @@ public:
 		debugC(3, kDebugMinigames, "3mice2Testo::quant(%f)", dt);
 
 		if (checkSolution())
-			_objDone->set_state("да");
+			_objDone->set_state("\xe4\xe0");	// "да"
 		else
-			_objDone->set_state("нет");
+			_objDone->set_state("\xed\xe5\xf2"); // "нет"
 
 		for (int i = 0; i < 8; i++) {
 			mgVect2i pos = _figures[i]->screen_R();
 
 			pos.x += _noDoughX;
 
-			_figures[8 + i]->set_R(_scene->screen2world_coords(pos, 1000.0));
+			_figures[i + 8]->set_R(_scene->screen2world_coords(pos, 1000.0));
 		}
 
 		qdMinigameObjectInterface *mouseObj = _scene->mouse_object_interface();
 		qdMinigameObjectInterface *clickObj = _scene->mouse_click_object_interface();
 
-		const char *name = mouseObj->name();
+		const char *name = nullptr;
 
 		if (mouseObj) {
+			name = mouseObj->name();
 			if (strstr(name, "figure") && strstr(name, "inv")) {
 				int num = atol(name + 6);
 
@@ -188,6 +192,8 @@ public:
 		if (_engine->is_mouse_event_active(qdmg::qdEngineInterfaceImpl::MOUSE_EV_LEFT_DOWN) && !mouseObj) {
 			int hit = hitTest();
 
+			debugC(2, kDebugMinigames, "hit: %d", hit);
+
 			if (hit > -1) {
 				_figures[hit]->set_state("hide");
 				_figures[hit + 16]->set_state("to_inv");
@@ -200,6 +206,8 @@ public:
 			if (strstr(name, "figure") && strstr(name, "inv")) {
 				num = atol(name + 6);
 
+				debugC(2, kDebugMinigames, "drop: %d", num);
+
 				if (num > 0 && num <= 8 && !checkSnapPiece(num - 1)) {
 					_figures[num - 1]->set_state("testo");
 					_figures[num + 15]->set_state("del");
@@ -310,10 +318,10 @@ private:
 
 		for (int i = 0; i < 8; i++) {
 			if (i != num) {
-				if (_figureBboxes[2 * i].x     + _figures[i]->screen_R().x < pos.x + _figureBboxes[2 * num].x &&
-					_figureBboxes[2 * i].y     + _figures[i]->screen_R().x > pos.x + _figureBboxes[2 * num].y &&
-					_figureBboxes[2 * i + 1].x + _figures[i]->screen_R().y < pos.y + _figureBboxes[2 * num + 1].x &&
-					_figureBboxes[2 * i + 1].y + _figures[i]->screen_R().y > pos.y + _figureBboxes[2 * num + 1].y)
+				if (_figureBboxes[i].right  + _figures[i]->screen_R().x < pos.x + _figureBboxes[num].right &&
+					_figureBboxes[i].left   + _figures[i]->screen_R().x > pos.x + _figureBboxes[num].left &&
+					_figureBboxes[i].top    + _figures[i]->screen_R().y < pos.y + _figureBboxes[num].top &&
+					_figureBboxes[i].bottom + _figures[i]->screen_R().y > pos.y + _figureBboxes[num].bottom)
 						return true;
 			}
 		}
@@ -336,7 +344,7 @@ private:
 
 	mgVect2i _initialCoords[8];
 	int _noDoughX = 0;
-	mgVect2i _figureBboxes[16];
+	Common::Rect _figureBboxes[8];
 
 
 	const mgVect2i _figureVerts[1088] = {
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index b917fa81ccc..c3f24426ae5 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -344,14 +344,15 @@ bool qdMiniGame::load_interface() {
 		} else if (_dll_name == "DLL\\3Mice2_states.dll") {
 			_interface = new qd3mice2StatesMiniGame();
 			return true;
+		} else if (_dll_name == "DLL\\3Mice2_testo.dll") {
+			_interface = new qd3mice2TestoMiniGame();
+			return true;
 		// 3Mice2_babochka.dll
-		// 3Mice2_kovrik.dll
 		// 3Mice2_plate.dll
 		// 3Mice2_raskr1.dll
 		// 3Mice2_raskr2.dll
 		// 3Mice2_raskr3.dll
 		// 3Mice2_raskr4.dll
-		// 3Mice2_testo.dll
 
 		// dogncat
 		// scores.dll


Commit: 6371b2866ccac2c712acd752557a13ff0284219f
    https://github.com/scummvm/scummvm/commit/6371b2866ccac2c712acd752557a13ff0284219f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-10-13T20:09:54+02:00

Commit Message:
QDENGINE: Fix wrong semicolon. PVS-Studio V529

Changed paths:
    engines/qdengine/minigames/3mice2_kovrik.h


diff --git a/engines/qdengine/minigames/3mice2_kovrik.h b/engines/qdengine/minigames/3mice2_kovrik.h
index 6d80ebbb3ff..0134b9697b4 100644
--- a/engines/qdengine/minigames/3mice2_kovrik.h
+++ b/engines/qdengine/minigames/3mice2_kovrik.h
@@ -129,7 +129,7 @@ public:
 					}
 
 					if (_objSound->is_state_active("\xed\xe5\xf2") // "нет"
-							|| _objSound->is_state_active("\xed\xe5\xf2\x31")); // "нет1"
+							|| _objSound->is_state_active("\xed\xe5\xf2\x31")) // "нет1"
 						_objSound->set_state("\xe4\xe0");	// "да"
 				}
 			}


Commit: bc0de5454599a5abf07b4464ad646959cb020eb5
    https://github.com/scummvm/scummvm/commit/bc0de5454599a5abf07b4464ad646959cb020eb5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-10-13T20:09:54+02:00

Commit Message:
QDENGINE: Init class variables. PVS-Studio V730

Changed paths:
    engines/qdengine/minigames/3mice2_kovrik.h
    engines/qdengine/minigames/3mice2_sbor_karty.h


diff --git a/engines/qdengine/minigames/3mice2_kovrik.h b/engines/qdengine/minigames/3mice2_kovrik.h
index 0134b9697b4..d1c5e9c6706 100644
--- a/engines/qdengine/minigames/3mice2_kovrik.h
+++ b/engines/qdengine/minigames/3mice2_kovrik.h
@@ -196,11 +196,11 @@ private:
 	const qdEngineInterface *_engine = nullptr;
 	qdMinigameSceneInterface *_scene = nullptr;
 
-	qdMinigameObjectInterface *_objects[84];
+	qdMinigameObjectInterface *_objects[84] = { nullptr };
 	qdMinigameObjectInterface *_objDone = nullptr;
 	qdMinigameObjectInterface *_objSound = nullptr;
 
-	float _timePassed;
+	float _timePassed = 0.0;
 };
 
 } // namespace QDEngine
diff --git a/engines/qdengine/minigames/3mice2_sbor_karty.h b/engines/qdengine/minigames/3mice2_sbor_karty.h
index 6e5d969948a..ee3201fe00e 100644
--- a/engines/qdengine/minigames/3mice2_sbor_karty.h
+++ b/engines/qdengine/minigames/3mice2_sbor_karty.h
@@ -183,11 +183,11 @@ private:
 	const qdEngineInterface *_engine = nullptr;
 	qdMinigameSceneInterface *_scene = nullptr;
 
-	qdMinigameObjectInterface *_objects[22];
+	qdMinigameObjectInterface *_objects[22] = { nullptr };
 	qdMinigameObjectInterface *_objDone = nullptr;
 	qdMinigameObjectInterface *_objDrop = nullptr;
 
-	float _timePassed;
+	float _timePassed = 0.0;
 };
 
 } // namespace QDEngine




More information about the Scummvm-git-logs mailing list