[Scummvm-git-logs] scummvm master -> b067153ecca2cb0247577f56677f41f6f8b4c97d
bluegr
noreply at scummvm.org
Wed Jul 17 20:31:25 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:
e782adb3fb DGDS: Add the "trigger" console command
b067153ecc DGDS: Implement the tank mini-game handling menu for HoC
Commit: e782adb3fbce6276a5e54010124d632fd104f51a
https://github.com/scummvm/scummvm/commit/e782adb3fbce6276a5e54010124d632fd104f51a
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2024-07-17T23:29:26+03:00
Commit Message:
DGDS: Add the "trigger" console command
Changed paths:
engines/dgds/console.cpp
engines/dgds/console.h
engines/dgds/scene.cpp
engines/dgds/scene.h
diff --git a/engines/dgds/console.cpp b/engines/dgds/console.cpp
index 340f83f1294..ea86e3c5c66 100644
--- a/engines/dgds/console.cpp
+++ b/engines/dgds/console.cpp
@@ -51,6 +51,7 @@ Console::Console(DgdsEngine *vm) : _vm(vm) {
registerCmd("global", WRAP_METHOD(Console, cmdGlobal));
registerCmd("scene", WRAP_METHOD(Console, cmdScene));
registerCmd("scriptdump", WRAP_METHOD(Console, cmdScriptDump));
+ registerCmd("trigger", WRAP_METHOD(Console, cmdTrigger));
}
bool Console::cmdFileInfo(int argc, const char **argv) {
@@ -286,6 +287,29 @@ bool Console::cmdScene(int argc, const char **argv) {
return true;
}
+bool Console::cmdTrigger(int argc, const char **argv) {
+ if (argc < 2) {
+ debugPrintf("Usage: %s <num> <val>\n", argv[0]);
+ debugPrintf("%s <num> returns the status of a trigger\n", argv[0]);
+ debugPrintf("%s <num> <val> sets the status of a trigger\n", argv[0]);
+ return true;
+ }
+
+ SDSScene *scene = _vm->getScene();
+ int num = atoi(argv[1]);
+
+ if (argc == 2) {
+ bool val = scene->isTriggerEnabled(num);
+ debugPrintf("Trigger %d is %d\n", num, val);
+ } else if (argc == 3) {
+ bool enable = atoi(argv[2]);
+ scene->enableTrigger(num, enable);
+ debugPrintf("Trigger %d set to %d\n", num, enable);
+ }
+
+ return true;
+}
+
void Console::printOp(int indent, const char *text) {
for (int i = 0; i < indent; i++) {
debugPrintf("\t");
diff --git a/engines/dgds/console.h b/engines/dgds/console.h
index 26c066a44e4..c912e61e09b 100644
--- a/engines/dgds/console.h
+++ b/engines/dgds/console.h
@@ -44,6 +44,7 @@ private:
bool cmdScene(int argc, const char **argv);
void printOp(int indent, const char *text);
bool cmdScriptDump(int argc, const char **argv);
+ bool cmdTrigger(int argc, const char **argv);
DgdsEngine *_vm;
};
diff --git a/engines/dgds/scene.cpp b/engines/dgds/scene.cpp
index 941bddffef8..58cc5f04a78 100644
--- a/engines/dgds/scene.cpp
+++ b/engines/dgds/scene.cpp
@@ -995,9 +995,22 @@ void SDSScene::enableTrigger(uint16 num, bool enable /* = true */) {
for (auto &trigger : _triggers) {
if (trigger.getNum() == num) {
trigger._enabled = enable;
- break;
+ return;
}
}
+
+ warning("Trigger %d not found", num);
+}
+
+bool SDSScene::isTriggerEnabled(uint16 num) {
+ for (auto &trigger : _triggers) {
+ if (trigger.getNum() == num) {
+ return trigger._enabled;
+ }
+ }
+
+ warning("Trigger %d not found", num);
+ return false;
}
void SDSScene::checkTriggers() {
diff --git a/engines/dgds/scene.h b/engines/dgds/scene.h
index 88923be1ea9..b267c5418bb 100644
--- a/engines/dgds/scene.h
+++ b/engines/dgds/scene.h
@@ -457,6 +457,7 @@ public:
void prevChoice();
void nextChoice();
void activateChoice();
+ bool isTriggerEnabled(uint16 num);
protected:
HotArea *findAreaUnderMouse(const Common::Point &pt);
Commit: b067153ecca2cb0247577f56677f41f6f8b4c97d
https://github.com/scummvm/scummvm/commit/b067153ecca2cb0247577f56677f41f6f8b4c97d
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2024-07-17T23:30:55+03:00
Commit Message:
DGDS: Implement the tank mini-game handling menu for HoC
Changed paths:
engines/dgds/menu.cpp
engines/dgds/scene.cpp
engines/dgds/scene.h
diff --git a/engines/dgds/menu.cpp b/engines/dgds/menu.cpp
index 9a9887dd00b..fdb7550d307 100644
--- a/engines/dgds/menu.cpp
+++ b/engines/dgds/menu.cpp
@@ -113,6 +113,10 @@ enum MenuButtonIds {
kMenuGameOverQuit = 169,
kMenuGameOverRestart = 168,
kMenuGameOverRestore = 170,
+
+ // Tank menu in Heart of China
+ kMenuTankSkipArcade = 153,
+ kMenuTankPlayArcade = 154,
};
Menu::Menu() : _curMenu(kMenuNone), _dragGadget(nullptr), _selectedItem(0), _numSelectable(0) {
@@ -489,6 +493,15 @@ void Menu::handleClick(const Common::Point &mouse) {
drawMenu(_curMenu);
break;
}
+ case kMenuTankSkipArcade:
+ hideMenu();
+ engine->changeScene(12);
+ break;
+ case kMenuTankPlayArcade:
+ // TODO
+ warning("Play tank mini-game");
+ drawMenu(_curMenu);
+ break;
default:
debug("Clicked ID %d", clickedMenuItem);
break;
diff --git a/engines/dgds/scene.cpp b/engines/dgds/scene.cpp
index 58cc5f04a78..95e29ed508c 100644
--- a/engines/dgds/scene.cpp
+++ b/engines/dgds/scene.cpp
@@ -755,6 +755,9 @@ bool Scene::runChinaOp(const SceneOp &op) {
case kSceneOpOpenChinaOpenSkipCreditsMenu:
engine->setMenuToTrigger(kMenuSkipPlayIntro);
break;
+ case kSceneOpOpenChinaTankMenu:
+ engine->setMenuToTrigger(kMenuSkipArcade);
+ break;
case kSceneOpOpenChinaStartIntro:
// The game first jumps to scene 100, and then to 98
engine->changeScene(98);
diff --git a/engines/dgds/scene.h b/engines/dgds/scene.h
index b267c5418bb..0dc3ed1f49c 100644
--- a/engines/dgds/scene.h
+++ b/engines/dgds/scene.h
@@ -124,6 +124,7 @@ enum SceneOpCode {
kSceneOpOpenBetterSaveGameMenu = 108, // args: none. DRAGON: Show menu 46, the "Before arcade maybe you better save your game" menu.
// China-specific opcodes
+ kSceneOpOpenChinaTankMenu = 102,
kSceneOpOpenChinaOpenGameOverMenu = 114, // args: none.
kSceneOpOpenChinaOpenSkipCreditsMenu = 115, // args: none.
kSceneOpOpenChinaStartIntro = 116, // args: none.
More information about the Scummvm-git-logs
mailing list