[Scummvm-git-logs] scummvm master -> 299ddd6ffaf838ffc820322c579a19e2491358a9
sev-
noreply at scummvm.org
Sun Oct 20 22:49:19 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
299ddd6ffa QDENGINE: Plug triangle.dll minigame in
Commit: 299ddd6ffaf838ffc820322c579a19e2491358a9
https://github.com/scummvm/scummvm/commit/299ddd6ffaf838ffc820322c579a19e2491358a9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-10-21T00:48:55+02:00
Commit Message:
QDENGINE: Plug triangle.dll minigame in
Changed paths:
engines/qdengine/minigames/adv/ExportInterface.cpp
engines/qdengine/minigames/adv/RunTime.cpp
engines/qdengine/minigames/adv/RunTime.h
engines/qdengine/minigames/adv/m_triangles.cpp
engines/qdengine/minigames/adv/m_triangles.h
engines/qdengine/module.mk
engines/qdengine/qdcore/qd_minigame.cpp
diff --git a/engines/qdengine/minigames/adv/ExportInterface.cpp b/engines/qdengine/minigames/adv/ExportInterface.cpp
index ab462757ab9..7ff9d1315c5 100644
--- a/engines/qdengine/minigames/adv/ExportInterface.cpp
+++ b/engines/qdengine/minigames/adv/ExportInterface.cpp
@@ -27,16 +27,16 @@
namespace QDEngine {
-qdMiniGameInterface *open_game_interface(const char* name) {
+qdMiniGameInterface *creade_adv_minigame(const char *name, MinigameConsCallback callback) {
debugC(3, kDebugMinigames, "open_game_interface: %s, runtime%s", name, g_runtime ? "!=0" : "==0");
if (!g_runtime)
- return g_runtime = new MinigameManager;
+ return g_runtime = new MinigameManager(callback);
- return new MinigameManager;
+ return new MinigameManager(callback);
}
-bool close_game_interface(qdMiniGameInterface* game) {
+bool close_adv_minigame(qdMiniGameInterface *game) {
debugC(3, kDebugMinigames, "close_game_interface, runtime%s%s", g_runtime == game ? "==game" : "!=game", g_runtime ? "!=0" : "==0");
delete game;
diff --git a/engines/qdengine/minigames/adv/RunTime.cpp b/engines/qdengine/minigames/adv/RunTime.cpp
index f18992d1d3c..e32e2cc3a18 100644
--- a/engines/qdengine/minigames/adv/RunTime.cpp
+++ b/engines/qdengine/minigames/adv/RunTime.cpp
@@ -36,8 +36,6 @@
namespace QDEngine {
MinigameManager *g_runtime = 0;
-// createGame() должна ÑеализоваÑÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно в ÐÐÐÐÐРпÑоекÑе игÑÑ
-MinigameInterface *createGame();
class TimeManager {
enum Direction {
@@ -68,7 +66,7 @@ private:
QDObject timeBar_;
};
-MinigameManager::MinigameManager()
+MinigameManager::MinigameManager(MinigameConsCallback callback)
: currentGameIndex_(-1, -1) {
state_container_name_ = "Saves/minigames.dat";
@@ -97,6 +95,8 @@ MinigameManager::MinigameManager()
for (int idx = 0; idx < 256; ++idx)
lastKeyChecked_[idx] = false;
+
+ _callback = callback;
}
MinigameManager::~MinigameManager() {
@@ -233,7 +233,7 @@ bool MinigameManager::createGame() {
}
// Here we instantiate the specific game
- game_ = ::createGame();
+ game_ = _callback();
if (currentGameInfo_)
currentGameInfo_->empty_ = false;
diff --git a/engines/qdengine/minigames/adv/RunTime.h b/engines/qdengine/minigames/adv/RunTime.h
index b76fdcb6069..78db94cafc9 100644
--- a/engines/qdengine/minigames/adv/RunTime.h
+++ b/engines/qdengine/minigames/adv/RunTime.h
@@ -24,6 +24,8 @@
#include "common/hashmap.h"
+#include "qdengine/minigames/adv/common.h"
+
namespace Common {
class MemoryWriteStream;
class SeekableWriteStream;
@@ -79,10 +81,16 @@ struct GameInfo {
void *gameData_;
};
+typedef MinigameInterface *(*MinigameConsCallback)();
+
+qdMiniGameInterface *creade_adv_minigame(const char *name, MinigameConsCallback callback);
+
+bool close_adv_minigame(qdMiniGameInterface *game);
+
class MinigameManager : public qdMiniGameInterface {
friend class TempValue;
public:
- MinigameManager();
+ MinigameManager(MinigameConsCallback callback);
~MinigameManager();
// begin MiniGame virtual interface
@@ -283,6 +291,8 @@ private:
QDCounter getCounter(const char* name);
// ÐÑвободиÑÑ ÑÑеÑÑик
void release(QDCounter& counter);
+
+ MinigameConsCallback _callback = nullptr;
};
} // namespace QDEngine
diff --git a/engines/qdengine/minigames/adv/m_triangles.cpp b/engines/qdengine/minigames/adv/m_triangles.cpp
index 99ec8b58f37..0a5b7ee90d2 100644
--- a/engines/qdengine/minigames/adv/m_triangles.cpp
+++ b/engines/qdengine/minigames/adv/m_triangles.cpp
@@ -29,7 +29,7 @@
namespace QDEngine {
-MinigameInterface *createGame() {
+MinigameInterface *createMinigameTriangleGame() {
return new MinigameTriangle;
}
diff --git a/engines/qdengine/minigames/adv/m_triangles.h b/engines/qdengine/minigames/adv/m_triangles.h
index a462dffa241..ce45e6118de 100644
--- a/engines/qdengine/minigames/adv/m_triangles.h
+++ b/engines/qdengine/minigames/adv/m_triangles.h
@@ -28,6 +28,8 @@
namespace QDEngine {
+MinigameInterface *createMinigameTriangleGame();
+
class MinigameTriangle : public MinigameInterface {
enum GameType {
TRIANGLE,
diff --git a/engines/qdengine/module.mk b/engines/qdengine/module.mk
index 285f9bb5e14..189e19ef08e 100644
--- a/engines/qdengine/module.mk
+++ b/engines/qdengine/module.mk
@@ -13,6 +13,7 @@ MODULE_OBJS = \
minigames/adv/Range.o \
minigames/adv/RunTime.o \
minigames/adv/TextManager.o \
+ minigames/adv/m_triangles.o \
parser/qdscr_parser.o \
parser/xml_parser.o \
parser/xml_tag_buffer.o \
diff --git a/engines/qdengine/qdcore/qd_minigame.cpp b/engines/qdengine/qdcore/qd_minigame.cpp
index c86ed833768..112016a6ce6 100644
--- a/engines/qdengine/qdcore/qd_minigame.cpp
+++ b/engines/qdengine/qdcore/qd_minigame.cpp
@@ -31,6 +31,8 @@
#include "qdengine/qdcore/qd_minigame_interface.h"
#include "qdengine/qdcore/qd_engine_interface.h"
+#include "qdengine/minigames/adv/RunTime.h"
+
#include "qdengine/minigames/qd_empty_minigame_interface.h"
// maski
@@ -61,6 +63,9 @@
#include "qdengine/minigames/3mice2_raskr_all.h"
#include "qdengine/minigames/3mice2_babochka.h"
+// dogncat
+#include "qdengine/minigames/adv/m_triangles.h"
+
namespace QDEngine {
qdMiniGame::qdMiniGame() : _dll_handle(NULL),
@@ -370,6 +375,9 @@ bool qdMiniGame::load_interface() {
return true;
// dogncat
+ } else if (_dll_name == "DLL\\triangles.dll") {
+ _interface = creade_adv_minigame(_dll_name.c_str(), createMinigameTriangleGame);
+ return true;
// scores.dll
// triangles.dll
More information about the Scummvm-git-logs
mailing list