[Scummvm-git-logs] scummvm master -> ab096190e6adab2f916264ce98088653fab84cc7
sev-
noreply at scummvm.org
Fri Nov 24 23:32:10 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:
ab096190e6 SLUDGE: Fix bug caused by getTextFromAnyVar in a debug context
Commit: ab096190e6adab2f916264ce98088653fab84cc7
https://github.com/scummvm/scummvm/commit/ab096190e6adab2f916264ce98088653fab84cc7
Author: polyesterswing (kurianjojo2004 at gmail.com)
Date: 2023-11-25T00:32:06+01:00
Commit Message:
SLUDGE: Fix bug caused by getTextFromAnyVar in a debug context
In Out of Order, you could not walk/talk to "Urban Leopard".
Changed paths:
engines/sludge/objtypes.cpp
engines/sludge/objtypes.h
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/objtypes.cpp b/engines/sludge/objtypes.cpp
index ef2a18c6b04..52b5700b4db 100644
--- a/engines/sludge/objtypes.cpp
+++ b/engines/sludge/objtypes.cpp
@@ -47,13 +47,17 @@ void ObjectManager::kill() {
_allObjectTypes.clear();
}
-ObjectType *ObjectManager::findObjectType(int i) {
+ObjectType *ObjectManager::findObjectType(int i, bool skipLoad) {
ObjectTypeList::iterator it;
for (it = _allObjectTypes.begin(); it != _allObjectTypes.end(); ++it) {
if ((*it)->objectNum == i) {
return (*it);
}
}
+
+ if (skipLoad)
+ return nullptr;
+
return loadObjectType(i);
}
diff --git a/engines/sludge/objtypes.h b/engines/sludge/objtypes.h
index 99ef3813017..b83e801d8f7 100644
--- a/engines/sludge/objtypes.h
+++ b/engines/sludge/objtypes.h
@@ -49,7 +49,7 @@ public:
bool init();
void kill();
- ObjectType *findObjectType(int i);
+ ObjectType *findObjectType(int i, bool skipLoad = false);
ObjectType *loadObjectType(int i);
int getCombinationFunction(int a, int b);
void removeObjectType(ObjectType *oT);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 9b67371fca4..5142ed65be3 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -313,7 +313,7 @@ bool Variable::loadStringToVar(int value) {
return (bool)(varData.theString != NULL);
}
-Common::String Variable::getTextFromAnyVar() const {
+Common::String Variable::getTextFromAnyVar(bool skipLoad) const {
switch (varType) {
case SVT_STRING:
return varData.theString;
@@ -325,7 +325,7 @@ Common::String Variable::getTextFromAnyVar() const {
for (int i = 0; i < varData.fastArray->size; i++) {
builder2 = builder + " ";
- grabText = varData.fastArray->fastVariables[i].getTextFromAnyVar();
+ grabText = varData.fastArray->fastVariables[i].getTextFromAnyVar(skipLoad);
builder.clear();
builder = builder2 + grabText;
}
@@ -341,7 +341,7 @@ Common::String Variable::getTextFromAnyVar() const {
while (stacky) {
builder2 = builder + " ";
- grabText = stacky->thisVar.getTextFromAnyVar();
+ grabText = stacky->thisVar.getTextFromAnyVar(skipLoad);
builder.clear();
builder = builder2 + grabText;
stacky = stacky->next;
@@ -359,9 +359,11 @@ Common::String Variable::getTextFromAnyVar() const {
}
case SVT_OBJTYPE: {
- ObjectType *thisType = g_sludge->_objMan->findObjectType(varData.intValue);
+ ObjectType *thisType = g_sludge->_objMan->findObjectType(varData.intValue, skipLoad);
if (thisType)
return thisType->screenName;
+ else
+ return Common::String::format("<unloaded id %d>", varData.intValue);
break;
}
@@ -499,7 +501,7 @@ bool addVarToStack(const Variable &va, VariableStack *&thisStack) {
return false;
newStack->next = thisStack;
thisStack = newStack;
- debugC(2, kSludgeDebugStackMachine, "Variable %s was added to stack", va.getTextFromAnyVar().c_str());
+ debugC(2, kSludgeDebugStackMachine, "Variable %s was added to stack", va.getTextFromAnyVar(true).c_str());
return true;
}
@@ -515,7 +517,7 @@ bool addVarToStackQuick(Variable &va, VariableStack *&thisStack) {
newStack->next = thisStack;
thisStack = newStack;
- debugC(2, kSludgeDebugStackMachine, "Variable %s was added to stack quick", va.getTextFromAnyVar().c_str());
+ debugC(2, kSludgeDebugStackMachine, "Variable %s was added to stack quick", va.getTextFromAnyVar(true).c_str());
return true;
}
@@ -589,7 +591,7 @@ void trimStack(VariableStack *&stack) {
VariableStack *killMe = stack;
stack = stack->next;
- debugC(2, kSludgeDebugStackMachine, "Variable %s was removed from stack", killMe->thisVar.getTextFromAnyVar().c_str());
+ debugC(2, kSludgeDebugStackMachine, "Variable %s was removed from stack", killMe->thisVar.getTextFromAnyVar(true).c_str());
// When calling this, we've ALWAYS checked that stack != NULL
killMe->thisVar.unlinkVar();
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index c0d3e65d8e0..9959c834871 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -122,7 +122,7 @@ struct Variable {
int compareVars(const Variable &other) const;
// General getters
- Common::String getTextFromAnyVar() const;
+ Common::String getTextFromAnyVar(bool skipLoad = false) const;
bool getBoolean() const;
bool getValueType(int &toHere, VariableType vT) const;
More information about the Scummvm-git-logs
mailing list