[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