[Scummvm-git-logs] scummvm master -> 86c99e0b4bf424165a841b1aaa82c9100ac2b4de

sev- noreply at scummvm.org
Wed Aug 28 14:17:05 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:
f5801934a0 QDENINGE: Implement maski_21.dll minigame
86c99e0b4b QDENGINE: Implement maski_21_random.dll minigame


Commit: f5801934a0e4b87e9c480e47e70650b1f1959330
    https://github.com/scummvm/scummvm/commit/f5801934a0e4b87e9c480e47e70650b1f1959330
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-08-28T16:16:50+02:00

Commit Message:
QDENINGE: Implement maski_21.dll minigame

Changed paths:
  A engines/qdengine/minigames/maski_21.h
    engines/qdengine/qdcore/qd_minigame.cpp
    engines/qdengine/qdcore/qd_minigame_interface.h


diff --git a/engines/qdengine/minigames/maski_21.h b/engines/qdengine/minigames/maski_21.h
new file mode 100644
index 00000000000..1f1160ecf4e
--- /dev/null
+++ b/engines/qdengine/minigames/maski_21.h
@@ -0,0 +1,127 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef QDENGINE_MINIGAMES_MASKI_21_H
+#define QDENGINE_MINIGAMES_MASKI_21_H
+
+#include "common/debug.h"
+
+#include "qdengine/qd_fwd.h"
+#include "qdengine/qdcore/qd_minigame_interface.h"
+
+namespace QDEngine {
+
+class qdMaski21MiniGame : public qdMiniGameInterface {
+public:
+	qdMaski21MiniGame() {}
+	~qdMaski21MiniGame() {}
+
+	bool init(const qdEngineInterface *engine_interface) {
+		debugC(1, kDebugMinigames, "Maski21::init()");
+
+		_engine = engine_interface;
+		_scene = engine_interface->current_scene_interface();
+		if (!_scene)
+			return false;
+
+		_flagObj = _scene->object_interface(_scene->minigame_parameter("command_object"));
+		_commandObj = _scene->object_interface(_scene->minigame_parameter("command_object"));
+
+		// srand(time(0))
+
+		_timePassed = -1.0;
+
+  		return true;
+	}
+
+	bool quant(float dt) {
+		debugC(3, kDebugMinigames, "Maski21::quant(%f)", dt);
+
+		mgVect2i pos = _engine->mouse_cursor_position();
+
+		if (pos.x < 25)
+			_commandObj->set_state("\xe2\xeb\xe5\xe2\xee");		// "влево"
+
+		if (pos.x > 775)
+			_commandObj->set_state("\xe2\xef\xf0\xe0\xe2\xee");	// "вправо"
+
+		if (pos.x > 25 && pos.x < 775)
+			_commandObj->set_state("\xed\xe5\xf2");				// "нет"
+
+		if (_flagObj->is_state_active("\xe7\xe0\xef\xf3\xf1\xea")) {	// "запуск"
+			_timePassed = 0.0;
+			_targetTime = qd_rnd(20) + 10;
+
+			_flagObj->set_state("\xe2\xfb\xef\xee\xeb\xed\xe5\xed\xe8\xe5");	// "выполнение"
+		} else if ( _flagObj->is_state_active("\xe2\xfb\xef\xee\xeb\xed\xe5\xed\xe8\xe5") ) {	// "выполнение"
+			_timePassed += dt;
+		}
+
+		if ((float)_targetTime < _timePassed && _timePassed != -1.0 ) {
+			_timePassed = -1.0;
+			_flagObj->set_state("\xea\xee\xed\xe5\xf6");		// "конец"
+		}
+
+		return true;
+	}
+
+	bool finit() {
+		debugC(1, kDebugMinigames, "Maski21::finit()");
+
+		if (_scene)  {
+			_engine->release_scene_interface(_scene);
+			_scene = 0;
+		}
+
+ 		return true;
+	}
+
+	bool new_game(const qdEngineInterface *engine_interface) {
+		return true;
+	}
+
+	int save_game(const qdEngineInterface *engine_interface, const qdMinigameSceneInterface *scene_interface, char *buffer, int buffer_size) {
+		return 0;
+	}
+
+	int load_game(const qdEngineInterface *engine_interface, const qdMinigameSceneInterface *scene_interface, const char *buffer, int buffer_size) {
+		return 0;
+	}
+
+	enum { INTERFACE_VERSION = 99 };
+	int version() const {
+		return INTERFACE_VERSION;
+	}
+
+private:
+	const qdEngineInterface *_engine = nullptr;
+	qdMinigameSceneInterface *_scene = nullptr;
+
+	qdMinigameObjectInterface *_commandObj  = nullptr;
+	qdMinigameObjectInterface *_flagObj  = nullptr;
+
+	float _timePassed = -1.0;
+	int _targetTime = 0;
+};
+
+} // namespace QDEngine
+
+#endif // QDENGINE_MINIGAMES_MASKI_21_H
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 9d37e6ff1db..45d544723d1 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -35,6 +35,7 @@
 
 // maski
 #include "qdengine/minigames/kartiny.h"
+#include "qdengine/minigames/maski_21.h"
 #include "qdengine/minigames/masky_order.h"
 #include "qdengine/minigames/scroll.h"
 #include "qdengine/minigames/tetris.h"
@@ -266,7 +267,6 @@ bool qdMiniGame::load_interface() {
 		// maski
 		// Arkada_avtomat.dll
 		// kartiny.dll
-		// maski_21.dll
 		// maski_21_random.dll
 		// orchestra.dll
 		if (_dll_name == "Resource\\DLL\\tetris.dll") {
@@ -278,6 +278,9 @@ bool qdMiniGame::load_interface() {
 		} else if (_dll_name == "Resource\\DLL\\MaskyOrder.dll") {
 			_interface = new qdMaskyOrderMiniGame();
 			return true;
+		} else if (_dll_name == "Resource\\DLL\\maski_21.dll") {
+			_interface = new qdMaski21MiniGame();
+			return true;
 
 		// 3mice1
 		} else if (_dll_name == "DLL\\Book_gusenica.dll" || _dll_name == "DLL\\Book_les.dll"
diff --git a/engines/qdengine/qdcore/qd_minigame_interface.h b/engines/qdengine/qdcore/qd_minigame_interface.h
index ebaa157aef8..b9e01c186c7 100644
--- a/engines/qdengine/qdcore/qd_minigame_interface.h
+++ b/engines/qdengine/qdcore/qd_minigame_interface.h
@@ -108,7 +108,7 @@ public:
 	// version 102, 20060629
 	// version 103, 20060715
 	// version 104, never released
-	// version 105, 20061026
+	// version 105, 20061026, b945e65
 	// version 106, 20070214
 	// version 107, 20070404 09:13
 	// version 108, 20070404 10:12


Commit: 86c99e0b4bf424165a841b1aaa82c9100ac2b4de
    https://github.com/scummvm/scummvm/commit/86c99e0b4bf424165a841b1aaa82c9100ac2b4de
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-08-28T16:16:57+02:00

Commit Message:
QDENGINE: Implement maski_21_random.dll minigame

The minigame is not directly accessible from within the game.

It also logs all random numbers to file "data.txt" which was skipped
in this implementation.

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


diff --git a/engines/qdengine/minigames/maski_21.h b/engines/qdengine/minigames/maski_21.h
index 1f1160ecf4e..5bf2e8c4c7f 100644
--- a/engines/qdengine/minigames/maski_21.h
+++ b/engines/qdengine/minigames/maski_21.h
@@ -31,7 +31,7 @@ namespace QDEngine {
 
 class qdMaski21MiniGame : public qdMiniGameInterface {
 public:
-	qdMaski21MiniGame() {}
+	qdMaski21MiniGame(bool randomDll) { _randomDll = randomDll; }
 	~qdMaski21MiniGame() {}
 
 	bool init(const qdEngineInterface *engine_interface) {
@@ -43,7 +43,9 @@ public:
 			return false;
 
 		_flagObj = _scene->object_interface(_scene->minigame_parameter("command_object"));
-		_commandObj = _scene->object_interface(_scene->minigame_parameter("command_object"));
+
+		if (!_randomDll)
+			_commandObj = _scene->object_interface(_scene->minigame_parameter("command_object"));
 
 		// srand(time(0))
 
@@ -55,23 +57,25 @@ public:
 	bool quant(float dt) {
 		debugC(3, kDebugMinigames, "Maski21::quant(%f)", dt);
 
-		mgVect2i pos = _engine->mouse_cursor_position();
+		if (!_randomDll) {
+			mgVect2i pos = _engine->mouse_cursor_position();
 
-		if (pos.x < 25)
-			_commandObj->set_state("\xe2\xeb\xe5\xe2\xee");		// "влево"
+			if (pos.x < 25)
+				_commandObj->set_state("\xe2\xeb\xe5\xe2\xee");		// "влево"
 
-		if (pos.x > 775)
-			_commandObj->set_state("\xe2\xef\xf0\xe0\xe2\xee");	// "вправо"
+			if (pos.x > 775)
+				_commandObj->set_state("\xe2\xef\xf0\xe0\xe2\xee");	// "вправо"
 
-		if (pos.x > 25 && pos.x < 775)
-			_commandObj->set_state("\xed\xe5\xf2");				// "нет"
+			if (pos.x > 25 && pos.x < 775)
+				_commandObj->set_state("\xed\xe5\xf2");				// "нет"
+		}
 
 		if (_flagObj->is_state_active("\xe7\xe0\xef\xf3\xf1\xea")) {	// "запуск"
 			_timePassed = 0.0;
 			_targetTime = qd_rnd(20) + 10;
 
 			_flagObj->set_state("\xe2\xfb\xef\xee\xeb\xed\xe5\xed\xe8\xe5");	// "выполнение"
-		} else if ( _flagObj->is_state_active("\xe2\xfb\xef\xee\xeb\xed\xe5\xed\xe8\xe5") ) {	// "выполнение"
+		} else if (_flagObj->is_state_active("\xe2\xfb\xef\xee\xeb\xed\xe5\xed\xe8\xe5")) {	// "выполнение"
 			_timePassed += dt;
 		}
 
@@ -120,6 +124,8 @@ private:
 
 	float _timePassed = -1.0;
 	int _targetTime = 0;
+
+	bool _randomDll = false;
 };
 
 } // namespace QDEngine
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index 45d544723d1..c7115b76f49 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -267,7 +267,6 @@ bool qdMiniGame::load_interface() {
 		// maski
 		// Arkada_avtomat.dll
 		// kartiny.dll
-		// maski_21_random.dll
 		// orchestra.dll
 		if (_dll_name == "Resource\\DLL\\tetris.dll") {
 			_interface = new qdTetrisMiniGame();
@@ -279,8 +278,12 @@ bool qdMiniGame::load_interface() {
 			_interface = new qdMaskyOrderMiniGame();
 			return true;
 		} else if (_dll_name == "Resource\\DLL\\maski_21.dll") {
-			_interface = new qdMaski21MiniGame();
+			_interface = new qdMaski21MiniGame(false);
 			return true;
+		} else if (_dll_name == "Resource\\DLL\\maski_21_random.dll") {
+			_interface = new qdMaski21MiniGame(true);
+			return true;
+
 
 		// 3mice1
 		} else if (_dll_name == "DLL\\Book_gusenica.dll" || _dll_name == "DLL\\Book_les.dll"




More information about the Scummvm-git-logs mailing list