[Scummvm-git-logs] scummvm master -> 464834000f857feac8504e33c5d44b943f0b9a1f

elasota noreply at scummvm.org
Tue Jun 13 04:10:49 UTC 2023


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:
464834000f MTROPOLIS: Add another variable reference hack to fix Hispaniola not transitioning to night in MTI


Commit: 464834000f857feac8504e33c5d44b943f0b9a1f
    https://github.com/scummvm/scummvm/commit/464834000f857feac8504e33c5d44b943f0b9a1f
Author: elasota (ejlasota at gmail.com)
Date: 2023-06-13T00:10:23-04:00

Commit Message:
MTROPOLIS: Add another variable reference hack to fix Hispaniola not transitioning to night in MTI

Changed paths:
    engines/mtropolis/modifiers.cpp
    engines/mtropolis/runtime.cpp
    engines/mtropolis/runtime.h


diff --git a/engines/mtropolis/modifiers.cpp b/engines/mtropolis/modifiers.cpp
index 614720a9169..cc92919274e 100644
--- a/engines/mtropolis/modifiers.cpp
+++ b/engines/mtropolis/modifiers.cpp
@@ -2770,6 +2770,16 @@ Modifier *CompoundVariableModifier::findChildByName(Runtime *runtime, const Comm
 			if (modifier)
 				return modifier;
 		}
+
+		if (myName.size() == 1 && myName == "g") {
+			if (caseInsensitiveEqual(name, "choresdone") || caseInsensitiveEqual(name, "donechore")) {
+				Project *project = runtime->getProject();
+				Modifier *modifier = project->findGlobalVarWithName(MTropolis::toCaseInsensitive(name)).get();
+
+				if (modifier)
+					return modifier;
+			}
+		}
 	}
 
 	for (Common::Array<Common::SharedPtr<Modifier> >::const_iterator it = _children.begin(), itEnd = _children.end(); it != itEnd; ++it) {
@@ -2814,10 +2824,20 @@ CompoundVariableModifier::SaveLoad::SaveLoad(Runtime *runtime, CompoundVariableM
 				break;
 			}
 		}
+
 	}
 
 	for (const Common::SharedPtr<Modifier> &child : modifier->_children) {
-		if (isMTIHackGlobalContainer) {
+		bool loadFromGlobal = false;
+
+		if (isMTIHackGlobalContainer)
+			loadFromGlobal = true;
+		else if (isMTIHackG) {
+			// Hack to fix Hispaniola not transitioning to night
+			loadFromGlobal = caseInsensitiveEqual(child->getName(), "choresdone") || caseInsensitiveEqual(child->getName(), "donechore");
+		}
+
+		if (loadFromGlobal) {
 			Common::SharedPtr<Modifier> globalVarModifier = runtime->getProject()->findGlobalVarWithName(child->getName());
 
 			if (globalVarModifier) {
diff --git a/engines/mtropolis/runtime.cpp b/engines/mtropolis/runtime.cpp
index 6f5e5819788..4c4fb84a85f 100644
--- a/engines/mtropolis/runtime.cpp
+++ b/engines/mtropolis/runtime.cpp
@@ -9324,6 +9324,15 @@ DynamicValueWriteProxy VariableModifier::createWriteProxy() {
 	return proxy;
 }
 
+#ifdef MTROPOLIS_DEBUG_ENABLE
+void VariableModifier::debugInspect(IDebugInspectionReport *report) const {
+	Modifier::debugInspect(report);
+
+	if (report->declareStatic("storage"))
+		report->declareStaticContents(Common::String::format("%p", _storage.get()));
+}
+#endif
+
 MiniscriptInstructionOutcome VariableModifier::WriteProxyInterface::write(MiniscriptThread *thread, const DynamicValue &dest, void *objectRef, uintptr ptrOrOffset) {
 	if (!static_cast<VariableModifier *>(objectRef)->varSetValue(thread, dest))
 		return kMiniscriptInstructionOutcomeFailed;
diff --git a/engines/mtropolis/runtime.h b/engines/mtropolis/runtime.h
index efbb305f5ae..3a772362456 100644
--- a/engines/mtropolis/runtime.h
+++ b/engines/mtropolis/runtime.h
@@ -3010,6 +3010,10 @@ public:
 
 	virtual DynamicValueWriteProxy createWriteProxy();
 
+#ifdef MTROPOLIS_DEBUG_ENABLE
+	void debugInspect(IDebugInspectionReport *report) const override;
+#endif
+
 private:
 	VariableModifier() = delete;
 




More information about the Scummvm-git-logs mailing list