[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