[Scummvm-git-logs] scummvm master -> eb6942fbc3656d98d2f138e9c8c24ba8b740a340

dreammaster noreply at scummvm.org
Sun Jun 23 22:25:43 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:
eb6942fbc3 BAGEL: Added 'timefreeze' console command to pause time


Commit: eb6942fbc3656d98d2f138e9c8c24ba8b740a340
    https://github.com/scummvm/scummvm/commit/eb6942fbc3656d98d2f138e9c8c24ba8b740a340
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-06-23T15:25:18-07:00

Commit Message:
BAGEL: Added 'timefreeze' console command to pause time

Changed paths:
    engines/bagel/baglib/var.cpp
    engines/bagel/baglib/var.h
    engines/bagel/console.cpp
    engines/bagel/console.h


diff --git a/engines/bagel/baglib/var.cpp b/engines/bagel/baglib/var.cpp
index 9b923486991..664500afc47 100644
--- a/engines/bagel/baglib/var.cpp
+++ b/engines/bagel/baglib/var.cpp
@@ -70,12 +70,14 @@ CBagVar::~CBagVar() {
 void CBagVar::setValue(const CBofString &s) {
 	assert(isValidObject(this));
 
-	if (!s.isEmpty()) {
-		char c = s[0];
-		if (Common::isDigit(c) || c == '-')
-			setNumeric();
+	if (!_freeze) {
+		if (!s.isEmpty()) {
+			char c = s[0];
+			if (Common::isDigit(c) || c == '-')
+				setNumeric();
+		}
+		_sVarValue = s;
 	}
-	_sVarValue = s;
 }
 
 const CBofString &CBagVar::getValue() {
@@ -117,10 +119,12 @@ void CBagVar::setBoolValue(bool bVal) {
 void CBagVar::setValue(int nVal) {
 	assert(isValidObject(this));
 
-	setNumeric();
+	if (!_freeze) {
+		setNumeric();
 
-	Common::String tmp = Common::String::format("%d", nVal);
-	_sVarValue = tmp.c_str();
+		Common::String tmp = Common::String::format("%d", nVal);
+		_sVarValue = tmp.c_str();
+	}
 }
 
 int CBagVar::getNumValue() {
diff --git a/engines/bagel/baglib/var.h b/engines/bagel/baglib/var.h
index 27a47148f2b..dd69ce6c072 100644
--- a/engines/bagel/baglib/var.h
+++ b/engines/bagel/baglib/var.h
@@ -42,6 +42,7 @@ private:
 	bool _bReference : 1;  // Is the variable a reference to an objects state date
 	bool _bTimer : 1;      // Is the variable updated on object timer events
 	bool _bRandom : 1;     // Is the variable updated as a random number
+	bool _freeze = false;
 
 public:
 	CBagVar();
@@ -80,6 +81,9 @@ public:
 	bool isRandom() {
 		return _bRandom;
 	}
+	bool isFrozen() const {
+		return _freeze;
+	}
 	VARTYPE getType() {
 		return _xVarType;
 	}
@@ -104,6 +108,9 @@ public:
 	void setRandom(bool bVal = true) {
 		_bRandom = bVal;
 	}
+	void setFreeze(bool bVal = true) {
+		_freeze = bVal;
+	}
 	void setString() {
 		_xVarType = STRING;
 	}
diff --git a/engines/bagel/console.cpp b/engines/bagel/console.cpp
index c55f3803d80..00c7a8f826d 100644
--- a/engines/bagel/console.cpp
+++ b/engines/bagel/console.cpp
@@ -37,6 +37,7 @@ Console::Console() : GUI::Debugger() {
 	registerCmd("save",      WRAP_METHOD(Console, cmdSave));
 	registerCmd("load",      WRAP_METHOD(Console, cmdLoad));
 	registerCmd("video",     WRAP_METHOD(Console, cmdVideo));
+	registerCmd("timefreeze", WRAP_METHOD(Console, cmdTimefreeze));
 }
 
 Console::~Console() {
@@ -157,4 +158,12 @@ bool Console::cmdVideo(int argc, const char **argv) {
 	}
 }
 
+bool Console::cmdTimefreeze(int argc, const char **argv) {
+	CBagVar *var = g_VarManager->getVariable("TURNCOUNT");
+	var->setFreeze(!var->isFrozen());
+
+	debugPrintf("Time freeze is %s\n", var->isFrozen() ? "on" : "off");
+	return true;
+}
+
 } // End of namespace Bagel
diff --git a/engines/bagel/console.h b/engines/bagel/console.h
index f8cf7a11d87..f19b9617b35 100644
--- a/engines/bagel/console.h
+++ b/engines/bagel/console.h
@@ -36,6 +36,7 @@ private:
 	bool cmdSave(int argc, const char **argv);
 	bool cmdVideo(int argc, const char **argv);
 	bool cmdMegawave(int argc, const char **argv);
+	bool cmdTimefreeze(int argc, const char **argv);
 
 public:
 	Console();




More information about the Scummvm-git-logs mailing list