[Scummvm-git-logs] scummvm master -> 8ead8de2846539fd68811937abdd1cbb94382ce0
yinsimei
roseline.yin at gmail.com
Thu May 31 23:15:56 CEST 2018
This automated email contains information about 17 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6004cd319d SLUDGE: Move createCString() with string tools
04444b70f9 SLUDGE: Move unlinkVar into struct Variable
2ab7665e56 SLUDGE: Move SetVariable() into struct Variable
56f0821876 SLUDGE: Move save/loadVariable() to struct Variable
98f764050a SLUDGE: Move copyVariable to struct Variable
805a47b74a SLUDGE: Move text related functions to struct Variable
04ef7becf3 SLUDGE: Move PersonAnimation functions into struct Variable
719f5842fa SLUDGE: Move costume functions to struct Variable
9d85b807fb SLUDGE: Move add/comparison functions to struct Variable
746fb3819f SLUDGE: Move value getters to struct Variable
399ff4788c SLUDGE: Move fastarray functions to struct Variable
dc18ec2fd0 SLUDGE: Move FastArray getter to struct FastArrayHandler
9fb57f944d SLUDGE: Move stack variable getter/setter to VariableStack
ca583ebfcf SLUDGE: Move last stack finding function to struct VariableStack
80478ee470 SLUDGE: Move copyStack() to struct Variable
fa72209845 SLUDGE: Move stack size getter to struct StackHandler
8ead8de284 SLUDGE: Move save game getter to StackHandler
Commit: 6004cd319d3c865821bc2be29647222c957ed517
https://github.com/scummvm/scummvm/commit/6004cd319d3c865821bc2be29647222c957ed517
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move createCString() with string tools
Changed paths:
engines/sludge/moreio.cpp
engines/sludge/moreio.h
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/moreio.cpp b/engines/sludge/moreio.cpp
index 1512574..ee9ab8e 100644
--- a/engines/sludge/moreio.cpp
+++ b/engines/sludge/moreio.cpp
@@ -167,4 +167,15 @@ Common::String decodeFilename(const Common::String &nameIn) {
return newName;
}
+char *createCString(const Common::String &s) {
+ uint n = s.size() + 1;
+ char *res = new char[n];
+ if (!checkNew(res)) {
+ fatal("createCString : Unable to copy String");
+ return NULL;
+ }
+ memcpy(res, s.c_str(), n);
+ return res;
+}
+
} // End of namespace Sludge
diff --git a/engines/sludge/moreio.h b/engines/sludge/moreio.h
index 09235ae..237a918 100644
--- a/engines/sludge/moreio.h
+++ b/engines/sludge/moreio.h
@@ -31,6 +31,8 @@ void writeString(Common::String s, Common::WriteStream *stream);
Common::String encodeFilename(const Common::String &nameIn);
Common::String decodeFilename(const Common::String &nameIn);
+char *createCString(const Common::String &s);
+
} // End of namespace Sludge
#endif
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 35e1036..b9e7b12 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -239,17 +239,6 @@ void compareVariablesInSecond(const Variable &var1, Variable &var2) {
setVariable(var2, SVT_INT, compareVars(var1, var2));
}
-char *createCString(const Common::String &s) {
- uint n = s.size() + 1;
- char *res = new char[n];
- if (!checkNew(res)) {
- fatal("createCString : Unable to copy String");
- return NULL;
- }
- memcpy(res, s.c_str(), n);
- return res;
-}
-
void makeTextVar(Variable &thisVar, const Common::String &txt) {
unlinkVar(thisVar);
thisVar.varType = SVT_STRING;
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 8f0d394..a3ae673 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -90,7 +90,6 @@ void newCostumeVariable(Variable &thisVar, struct Persona *i);
void makeTextVar(Variable &thisVar, const Common::String &txt);
void addVariablesInSecond(Variable &var1, Variable &var2);
void compareVariablesInSecond(const Variable &var1, Variable &var2);
-char *createCString(const Common::String &s);
// Misc.
Commit: 04444b70f97c40fe3893e80d73042b4f11dbfa46
https://github.com/scummvm/scummvm/commit/04444b70f97c40fe3893e80d73042b4f11dbfa46
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move unlinkVar into struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/function.cpp
engines/sludge/loadsave.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 0d1d940..0ebcea1 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -205,7 +205,7 @@ builtIn(getMatchingFiles) {
UNUSEDALL
Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
trimStack(fun->stack);
- unlinkVar(fun->reg);
+ fun->reg.unlinkVar();
// Return value
fun->reg.varType = SVT_STACK;
@@ -498,7 +498,7 @@ builtIn(stringLength) {
builtIn(newStack) {
UNUSEDALL
- unlinkVar(fun->reg);
+ fun->reg.unlinkVar();
// Return value
fun->reg.varType = SVT_STACK;
@@ -2236,7 +2236,7 @@ builtIn(loadCustomData) {
return BR_ERROR;
trimStack(fun->stack);
- unlinkVar(fun->reg);
+ fun->reg.unlinkVar();
fun->reg.varType = SVT_STACK;
fun->reg.varData.theStack = new StackHandler;
if (!checkNew(fun->reg.varData.theStack))
@@ -2311,7 +2311,7 @@ builtIn(getPixelColour) {
return BR_ERROR;
trimStack(fun->stack);
- unlinkVar(fun->reg);
+ fun->reg.unlinkVar();
fun->reg.varType = SVT_STACK;
fun->reg.varData.theStack = new StackHandler;
if (!checkNew(fun->reg.varData.theStack))
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 0a7a344..97c5130 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -100,9 +100,9 @@ void finishFunction(LoadedFunction *fun) {
fatal(ERROR_NON_EMPTY_STACK);
delete[] fun->compiledLines;
for (a = 0; a < fun->numLocals; a++)
- unlinkVar(fun->localVars[a]);
+ fun->localVars[a].unlinkVar();
delete[] fun->localVars;
- unlinkVar(fun->reg);
+ fun->reg.unlinkVar();
delete fun;
fun = NULL;
}
@@ -115,9 +115,9 @@ void abortFunction(LoadedFunction *fun) {
trimStack(fun->stack);
delete []fun->compiledLines;
for (a = 0; a < fun->numLocals; a++)
- unlinkVar(fun->localVars[a]);
+ fun->localVars[a].unlinkVar();
delete []fun->localVars;
- unlinkVar(fun->reg);
+ fun->reg.unlinkVar();
if (fun->calledBy)
abortFunction(fun->calledBy);
delete fun;
diff --git a/engines/sludge/loadsave.cpp b/engines/sludge/loadsave.cpp
index 4a78b83..22781ea 100644
--- a/engines/sludge/loadsave.cpp
+++ b/engines/sludge/loadsave.cpp
@@ -257,7 +257,7 @@ bool loadGame(const Common::String &fname) {
}
for (int a = 0; a < numGlobals; a++) {
- unlinkVar(globalVars[a]);
+ globalVars[a].unlinkVar();
loadVariable(&globalVars[a], fp);
}
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index b9e7b12..dc5604f 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -38,36 +38,36 @@ const char *typeName[] = { "undefined", "number", "user function", "string",
"built-in function", "file", "stack", "object type", "animation",
"costume" };
-void unlinkVar(Variable &thisVar) {
- switch (thisVar.varType) {
+void Variable::unlinkVar() {
+ switch (varType) {
case SVT_STRING:
- delete []thisVar.varData.theString;
- thisVar.varData.theString = NULL;
+ delete []varData.theString;
+ varData.theString = NULL;
break;
case SVT_STACK:
- thisVar.varData.theStack->timesUsed--;
- if (thisVar.varData.theStack->timesUsed <= 0) {
- while (thisVar.varData.theStack->first)
- trimStack(thisVar.varData.theStack->first);
- delete thisVar.varData.theStack;
- thisVar.varData.theStack = NULL;
+ varData.theStack->timesUsed--;
+ if (varData.theStack->timesUsed <= 0) {
+ while (varData.theStack->first)
+ trimStack(varData.theStack->first);
+ delete varData.theStack;
+ varData.theStack = NULL;
}
break;
case SVT_FASTARRAY:
- thisVar.varData.fastArray->timesUsed--;
- if (thisVar.varData.theStack->timesUsed <= 0) {
- delete thisVar.varData.fastArray->fastVariables;
- delete[] thisVar.varData.fastArray;
- thisVar.varData.fastArray = NULL;
+ varData.fastArray->timesUsed--;
+ if (varData.theStack->timesUsed <= 0) {
+ delete varData.fastArray->fastVariables;
+ delete[] varData.fastArray;
+ varData.fastArray = NULL;
}
break;
case SVT_ANIM:
- if (thisVar.varData.animHandler) {
- delete thisVar.varData.animHandler;
- thisVar.varData.animHandler = nullptr;
+ if (varData.animHandler) {
+ delete varData.animHandler;
+ varData.animHandler = nullptr;
}
break;
@@ -77,13 +77,13 @@ void unlinkVar(Variable &thisVar) {
}
void setVariable(Variable &thisVar, VariableType vT, int value) {
- unlinkVar(thisVar);
+ thisVar.unlinkVar();
thisVar.varType = vT;
thisVar.varData.intValue = value;
}
void newAnimationVariable(Variable &thisVar, PersonaAnimation *i) {
- unlinkVar(thisVar);
+ thisVar.unlinkVar();
thisVar.varType = SVT_ANIM;
thisVar.varData.animHandler = i;
}
@@ -100,7 +100,7 @@ PersonaAnimation *getAnimationFromVar(Variable &thisVar) {
}
void newCostumeVariable(Variable &thisVar, Persona *i) {
- unlinkVar(thisVar);
+ thisVar.unlinkVar();
thisVar.varType = SVT_COSTUME;
thisVar.varData.costumeHandler = i;
}
@@ -198,7 +198,7 @@ void addVariablesInSecond(Variable &var1, Variable &var2) {
Common::String string1 = getTextFromAnyVar(var1);
Common::String string2 = getTextFromAnyVar(var2);
- unlinkVar(var2);
+ var2.unlinkVar();
var2.varData.theString = createCString(string1 + string2);
var2.varType = SVT_STRING;
}
@@ -240,7 +240,7 @@ void compareVariablesInSecond(const Variable &var1, Variable &var2) {
}
void makeTextVar(Variable &thisVar, const Common::String &txt) {
- unlinkVar(thisVar);
+ thisVar.unlinkVar();
thisVar.varType = SVT_STRING;
thisVar.varData.theString = createCString(txt);
}
@@ -376,7 +376,7 @@ bool copyMain(const Variable &from, Variable &to) {
}
bool copyVariable(const Variable &from, Variable &to) {
- unlinkVar(to);
+ to.unlinkVar();
return copyMain(from, to);
}
@@ -389,7 +389,7 @@ Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex) {
bool makeFastArraySize(Variable &to, int size) {
if (size < 0)
return fatal("Can't create a fast array with a negative number of elements!");
- unlinkVar(to);
+ to.unlinkVar();
to.varType = SVT_FASTARRAY;
to.varData.fastArray = new FastArrayHandler;
if (!checkNew(to.varData.fastArray))
@@ -476,7 +476,7 @@ int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOf
if (compareVars((*huntVar)->thisVar, va)) {
killMe = *huntVar;
*huntVar = killMe->next;
- unlinkVar(killMe->thisVar);
+ killMe->thisVar.unlinkVar();
delete killMe;
if (!allOfEm)
return 1;
@@ -522,7 +522,7 @@ void trimStack(VariableStack *&stack) {
//debugC(2, kSludgeDebugStackMachine, "Variable %s was removed from stack", getTextFromAnyVar(killMe->thisVar));
// When calling this, we've ALWAYS checked that stack != NULL
- unlinkVar(killMe->thisVar);
+ killMe->thisVar.unlinkVar();
delete killMe;
}
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index a3ae673..5a750b5 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -73,6 +73,8 @@ struct Variable {
varType = SVT_NULL;
varData.intValue = 0;
}
+
+ void unlinkVar();
};
struct VariableStack {
@@ -93,7 +95,6 @@ void compareVariablesInSecond(const Variable &var1, Variable &var2);
// Misc.
-void unlinkVar(Variable &thisVar);
Common::String getTextFromAnyVar(const Variable &from);
struct Persona *getCostumeFromVar(Variable &thisVar);
struct PersonaAnimation *getAnimationFromVar(Variable &thisVar);
Commit: 2ab7665e56b303e7d5311b4d88945cd2007bee3e
https://github.com/scummvm/scummvm/commit/2ab7665e56b303e7d5311b4d88945cd2007bee3e
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move SetVariable() into struct Variable
Changed paths:
engines/sludge/backdrop.cpp
engines/sludge/builtin.cpp
engines/sludge/event.cpp
engines/sludge/function.cpp
engines/sludge/loadsave.cpp
engines/sludge/savedata.cpp
engines/sludge/sound.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/backdrop.cpp b/engines/sludge/backdrop.cpp
index 04f4847..0e41230 100644
--- a/engines/sludge/backdrop.cpp
+++ b/engines/sludge/backdrop.cpp
@@ -540,14 +540,14 @@ bool GraphicsManager::getRGBIntoStack(uint x, uint y, StackHandler *sH) {
byte *target = (byte *)_renderSurface.getBasePtr(x, y);
- setVariable(newValue, SVT_INT, target[1]);
+ newValue.setVariable(SVT_INT, target[1]);
if (!addVarToStackQuick(newValue, sH->first)) return false;
sH->last = sH->first;
- setVariable(newValue, SVT_INT, target[2]);
+ newValue.setVariable(SVT_INT, target[2]);
if (!addVarToStackQuick(newValue, sH->first)) return false;
- setVariable(newValue, SVT_INT, target[3]);
+ newValue.setVariable(SVT_INT, target[3]);
if (!addVarToStackQuick(newValue, sH->first)) return false;
return true;
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 0ebcea1..e899014 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -159,7 +159,7 @@ builtIn(unfreeze) {
builtIn(howFrozen) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->_gfxMan->howFrozen());
+ fun->reg.setVariable(SVT_INT, g_sludge->_gfxMan->howFrozen());
return BR_CONTINUE;
}
@@ -173,25 +173,25 @@ builtIn(setCursor) {
builtIn(getMouseX) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->_evtMan->mouseX() + g_sludge->_gfxMan->getCamX());
+ fun->reg.setVariable(SVT_INT, g_sludge->_evtMan->mouseX() + g_sludge->_gfxMan->getCamX());
return BR_CONTINUE;
}
builtIn(getMouseY) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->_evtMan->mouseY() + g_sludge->_gfxMan->getCamY());
+ fun->reg.setVariable(SVT_INT, g_sludge->_evtMan->mouseY() + g_sludge->_gfxMan->getCamY());
return BR_CONTINUE;
}
builtIn(getMouseScreenX) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->_evtMan->mouseX() * g_sludge->_gfxMan->getCamZoom());
+ fun->reg.setVariable(SVT_INT, g_sludge->_evtMan->mouseX() * g_sludge->_gfxMan->getCamZoom());
return BR_CONTINUE;
}
builtIn(getMouseScreenY) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->_evtMan->mouseY() * g_sludge->_gfxMan->getCamZoom());
+ fun->reg.setVariable(SVT_INT, g_sludge->_evtMan->mouseY() * g_sludge->_gfxMan->getCamZoom());
return BR_CONTINUE;
}
@@ -237,7 +237,7 @@ builtIn(saveGame) {
g_sludge->loadNow = ":" + aaaaa;
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
saverFunc = fun;
return BR_KEEP_AND_PAUSE;
}
@@ -267,7 +267,7 @@ builtIn(fileExists) {
}
// Return value
- setVariable(fun->reg, SVT_INT, exist);
+ fun->reg.setVariable(SVT_INT, exist);
return BR_CONTINUE;
}
@@ -492,7 +492,7 @@ builtIn(stringLength) {
UNUSEDALL
Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, g_sludge->_txtMan->stringLength(newText));
+ fun->reg.setVariable(SVT_INT, g_sludge->_txtMan->stringLength(newText));
return BR_CONTINUE;
}
@@ -527,13 +527,13 @@ builtIn(stackSize) {
switch (fun->stack->thisVar.varType) {
case SVT_STACK:
// Return value
- setVariable(fun->reg, SVT_INT, stackSize(fun->stack->thisVar.varData.theStack));
+ fun->reg.setVariable(SVT_INT, stackSize(fun->stack->thisVar.varData.theStack));
trimStack(fun->stack);
return BR_CONTINUE;
case SVT_FASTARRAY:
// Return value
- setVariable(fun->reg, SVT_INT, fun->stack->thisVar.varData.fastArray->size);
+ fun->reg.setVariable(SVT_INT, fun->stack->thisVar.varData.fastArray->size);
trimStack(fun->stack);
return BR_CONTINUE;
@@ -606,7 +606,7 @@ builtIn(deleteFromStack) {
}
// Return value
- setVariable(fun->reg, SVT_INT, deleteVarFromStack(fun->stack->thisVar, fun->stack->next->thisVar.varData.theStack->first, false));
+ fun->reg.setVariable(SVT_INT, deleteVarFromStack(fun->stack->thisVar, fun->stack->next->thisVar.varData.theStack->first, false));
// Horrible hacking because 'last' value might now be wrong!
fun->stack->next->thisVar.varData.theStack->last = stackFindLast(fun->stack->next->thisVar.varData.theStack->first);
@@ -624,7 +624,7 @@ builtIn(deleteAllFromStack) {
}
// Return value
- setVariable(fun->reg, SVT_INT, deleteVarFromStack(fun->stack->thisVar, fun->stack->next->thisVar.varData.theStack->first, true));
+ fun->reg.setVariable(SVT_INT, deleteVarFromStack(fun->stack->thisVar, fun->stack->next->thisVar.varData.theStack->first, true));
// Horrible hacking because 'last' value might now be wrong!
fun->stack->next->thisVar.varData.theStack->last = stackFindLast(fun->stack->next->thisVar.varData.theStack->first);
@@ -696,7 +696,7 @@ builtIn(random) {
trimStack(fun->stack);
if (num <= 0)
num = 1;
- setVariable(fun->reg, SVT_INT, 0 /*rand() % num*/); //TODO:false value
+ fun->reg.setVariable(SVT_INT, 0 /*rand() % num*/); //TODO:false value
return BR_CONTINUE;
}
@@ -754,7 +754,7 @@ builtIn(setBlankColour) {
return BR_ERROR;
g_sludge->_gfxMan->setBlankColor(red, green, blue);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -766,7 +766,7 @@ builtIn(setBurnColour) {
return BR_ERROR;
g_sludge->_gfxMan->setBurnColor(red, green, blue);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -796,7 +796,7 @@ builtIn(inFont) {
trimStack(fun->stack);
// Return value
- setVariable(fun->reg, SVT_INT, g_sludge->_txtMan->isInFont(newText));
+ fun->reg.setVariable(SVT_INT, g_sludge->_txtMan->isInFont(newText));
return BR_CONTINUE;
}
@@ -889,7 +889,7 @@ builtIn(launch) {
if (g_sludge->launchMe.empty())
return BR_ERROR;
}
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
launchResult = &fun->reg;
return BR_KEEP_AND_PAUSE;
@@ -929,10 +929,10 @@ builtIn(callEvent) {
// Return value
if (fNum) {
- setVariable(fun->reg, SVT_FUNC, fNum);
+ fun->reg.setVariable(SVT_FUNC, fNum);
return BR_CALLAFUNC;
}
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
@@ -954,13 +954,13 @@ builtIn(_rem_movieStart) {
builtIn(_rem_movieAbort) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
builtIn(_rem_moviePlaying) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
@@ -977,7 +977,7 @@ builtIn(playMovie) {
r = playMovie(fileNumber);
- setVariable(fun->reg, SVT_INT, r);
+ fun->reg.setVariable(SVT_INT, r);
if (r && (!fun->next)) {
restartFunction(fun);
@@ -991,7 +991,7 @@ builtIn(stopMovie) {
stopMovie();
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
@@ -1000,7 +1000,7 @@ builtIn(pauseMovie) {
pauseMovie();
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
@@ -1231,11 +1231,11 @@ builtIn(setLightMap) {
trimStack(fun->stack);
if (!g_sludge->_gfxMan->loadLightMap(v))
return BR_ERROR;
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
} else {
trimStack(fun->stack);
g_sludge->_gfxMan->killLightMap();
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
break;
@@ -1267,9 +1267,9 @@ builtIn(somethingSpeaking) {
UNUSEDALL
int i = g_sludge->_speechMan->isThereAnySpeechGoingOn();
if (i == -1) {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
} else {
- setVariable(fun->reg, SVT_OBJTYPE, i);
+ fun->reg.setVariable(SVT_OBJTYPE, i);
}
return BR_CONTINUE;
}
@@ -1284,10 +1284,10 @@ builtIn(getOverObject) {
UNUSEDALL
if (g_sludge->_regionMan->getOverRegion())
// Return value
- setVariable(fun->reg, SVT_OBJTYPE, g_sludge->_regionMan->getOverRegion()->thisType->objectNum);
+ fun->reg.setVariable(SVT_OBJTYPE, g_sludge->_regionMan->getOverRegion()->thisType->objectNum);
else
// Return value
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
@@ -1314,13 +1314,13 @@ builtIn(getObjectX) {
OnScreenPerson *pers = g_sludge->_peopleMan->findPerson(objectNumber);
if (pers) {
- setVariable(fun->reg, SVT_INT, pers->x);
+ fun->reg.setVariable(SVT_INT, pers->x);
} else {
ScreenRegion *la = g_sludge->_regionMan->getRegionForObject(objectNumber);
if (la) {
- setVariable(fun->reg, SVT_INT, la->sX);
+ fun->reg.setVariable(SVT_INT, la->sX);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
}
return BR_CONTINUE;
@@ -1335,13 +1335,13 @@ builtIn(getObjectY) {
OnScreenPerson *pers = g_sludge->_peopleMan->findPerson(objectNumber);
if (pers) {
- setVariable(fun->reg, SVT_INT, pers->y);
+ fun->reg.setVariable(SVT_INT, pers->y);
} else {
ScreenRegion *la = g_sludge->_regionMan->getRegionForObject(objectNumber);
if (la) {
- setVariable(fun->reg, SVT_INT, la->sY);
+ fun->reg.setVariable(SVT_INT, la->sY);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
}
return BR_CONTINUE;
@@ -1520,7 +1520,7 @@ builtIn(stopCharacter) {
trimStack(fun->stack);
// Return value
- setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->stopPerson(obj));
+ fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->stopPerson(obj));
return BR_CONTINUE;
}
@@ -1543,9 +1543,9 @@ builtIn(pasteCharacter) {
int fNum = myAnim->frames[thisPerson->frameNum].frameNum;
g_sludge->_gfxMan->fixScaleSprite(thisPerson->x, thisPerson->y, myAnim->theSprites->bank.sprites[ABS(fNum)], myAnim->theSprites->bank.myPalette, thisPerson, 0, 0, fNum < 0);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -1561,7 +1561,7 @@ builtIn(animate) {
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->animatePerson(obj, pp);
- setVariable(fun->reg, SVT_INT, pp->getTotalTime());
+ fun->reg.setVariable(SVT_INT, pp->getTotalTime());
return BR_CONTINUE;
}
@@ -1588,7 +1588,7 @@ builtIn(floatCharacter) {
if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->floatCharacter(di, obj));
+ fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->floatCharacter(di, obj));
return BR_CONTINUE;
}
@@ -1601,7 +1601,7 @@ builtIn(setCharacterWalkSpeed) {
if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->setCharacterWalkSpeed(di, obj));
+ fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->setCharacterWalkSpeed(di, obj));
return BR_CONTINUE;
}
@@ -1614,7 +1614,7 @@ builtIn(turnCharacter) {
if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->turnPersonToFace(obj, di));
+ fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->turnPersonToFace(obj, di));
return BR_CONTINUE;
}
@@ -1627,7 +1627,7 @@ builtIn(setCharacterExtra) {
if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, g_sludge->_peopleMan->setPersonExtra(obj, di));
+ fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->setPersonExtra(obj, di));
return BR_CONTINUE;
}
@@ -1895,7 +1895,7 @@ builtIn(stringWidth) {
trimStack(fun->stack);
// Return value
- setVariable(fun->reg, SVT_INT, g_sludge->_txtMan->stringWidth(theText));
+ fun->reg.setVariable(SVT_INT, g_sludge->_txtMan->stringWidth(theText));
return BR_CONTINUE;
}
@@ -1915,7 +1915,7 @@ builtIn(isScreenRegion) {
if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, g_sludge->_regionMan->getRegionForObject(objectNumber) != NULL);
+ fun->reg.setVariable(SVT_INT, g_sludge->_regionMan->getRegionForObject(objectNumber) != NULL);
return BR_CONTINUE;
}
@@ -1926,7 +1926,7 @@ builtIn(setSpeechSpeed) {
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_speechMan->setSpeechSpeed(number * 0.01);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -1937,7 +1937,7 @@ builtIn(setFontSpacing) {
return BR_ERROR;
g_sludge->_txtMan->setFontSpace(fontSpaceI);
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -1950,7 +1950,7 @@ builtIn(transitionLevel) {
g_sludge->_gfxMan->setBrightnessLevel(brightnessLevel);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -1959,7 +1959,7 @@ builtIn(captureAllKeys) {
// This built-in function doesn't have any effect any more, we capture all keys by default
bool captureAllKeysDeprecated = getBoolean(fun->stack->thisVar);
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, captureAllKeysDeprecated);
+ fun->reg.setVariable(SVT_INT, captureAllKeysDeprecated);
return BR_CONTINUE;
}
@@ -1978,10 +1978,10 @@ builtIn(spinCharacter) {
thisPerson->wantAngle = number;
thisPerson->spinning = true;
thisPerson->continueAfterWalking = fun;
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_PAUSE;
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
}
@@ -1994,9 +1994,9 @@ builtIn(getCharacterDirection) {
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
if (thisPerson) {
- setVariable(fun->reg, SVT_INT, thisPerson->direction);
+ fun->reg.setVariable(SVT_INT, thisPerson->direction);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -2008,7 +2008,7 @@ builtIn(isCharacter) {
return BR_ERROR;
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
- setVariable(fun->reg, SVT_INT, thisPerson != NULL);
+ fun->reg.setVariable(SVT_INT, thisPerson != NULL);
return BR_CONTINUE;
}
@@ -2021,9 +2021,9 @@ builtIn(normalCharacter) {
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
if (thisPerson) {
thisPerson->myAnim = thisPerson->myPersona->animation[thisPerson->direction];
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -2036,9 +2036,9 @@ builtIn(isMoving) {
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
if (thisPerson) {
- setVariable(fun->reg, SVT_INT, thisPerson->walking);
+ fun->reg.setVariable(SVT_INT, thisPerson->walking);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -2057,9 +2057,9 @@ builtIn(fetchEvent) {
// Return value
if (fNum) {
- setVariable(fun->reg, SVT_FUNC, fNum);
+ fun->reg.setVariable(SVT_FUNC, fNum);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -2073,7 +2073,7 @@ builtIn(deleteFile) {
namNormal.clear();
if (failSecurityCheck(nam))
return BR_ERROR;
- setVariable(fun->reg, SVT_INT, remove(nam.c_str()));
+ fun->reg.setVariable(SVT_INT, remove(nam.c_str()));
return BR_CONTINUE;
}
@@ -2096,7 +2096,7 @@ builtIn(renameFile) {
if (failSecurityCheck(nam))
return BR_ERROR;
- setVariable(fun->reg, SVT_INT, rename(nam.c_str(), newnam.c_str()));
+ fun->reg.setVariable(SVT_INT, rename(nam.c_str(), newnam.c_str()));
return BR_CONTINUE;
}
@@ -2143,9 +2143,9 @@ builtIn(setCharacterSpinSpeed) {
if (thisPerson) {
thisPerson->spinSpeed = speed;
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -2164,9 +2164,9 @@ builtIn(setCharacterAngleOffset) {
if (thisPerson) {
thisPerson->angleOffset = angle;
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
@@ -2178,7 +2178,7 @@ builtIn(transitionMode) {
return BR_ERROR;
g_sludge->_gfxMan->setFadeMode(n);
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -2186,7 +2186,7 @@ builtIn(transitionMode) {
builtIn(_rem_updateDisplay) {
UNUSEDALL
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, true);
+ fun->reg.setVariable(SVT_INT, true);
return BR_CONTINUE;
}
@@ -2256,7 +2256,7 @@ builtIn(setCustomEncoding) {
return BR_ERROR;
CustomSaveHelper::_saveEncoding = n;
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -2289,7 +2289,7 @@ builtIn(parallaxAdd) {
if (!g_sludge->_gfxMan->loadParallax(v, wrapX, wrapY))
return BR_ERROR;
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
}
return BR_CONTINUE;
}
@@ -2297,7 +2297,7 @@ builtIn(parallaxAdd) {
builtIn(parallaxClear) {
UNUSEDALL
g_sludge->_gfxMan->killParallax();
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
return BR_CONTINUE;
}
@@ -2358,16 +2358,16 @@ builtIn(getCharacterScale) {
OnScreenPerson *pers = g_sludge->_peopleMan->findPerson(objectNumber);
if (pers) {
- setVariable(fun->reg, SVT_INT, pers->scale * 100);
+ fun->reg.setVariable(SVT_INT, pers->scale * 100);
} else {
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
}
return BR_CONTINUE;
}
builtIn(getLanguageID) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->getLanguageID());
+ fun->reg.setVariable(SVT_INT, g_sludge->getLanguageID());
return BR_CONTINUE;
}
@@ -2397,13 +2397,13 @@ builtIn(_rem_launchWith) {
}
g_sludge->launchNext.clear();
- setVariable(fun->reg, SVT_INT, false);
+ fun->reg.setVariable(SVT_INT, false);
return BR_CONTINUE;
}
builtIn(getFramesPerSecond) {
UNUSEDALL
- setVariable(fun->reg, SVT_INT, g_sludge->_timer.getLastFps());
+ fun->reg.setVariable(SVT_INT, g_sludge->_timer.getLastFps());
return BR_CONTINUE;
}
@@ -2454,7 +2454,7 @@ builtIn(hasFlag) {
ObjectType *objT = g_sludge->_objMan->findObjectType(objNum);
if (!objT)
return BR_ERROR;
- setVariable(fun->reg, SVT_INT, objT->flags & (1 << flagIndex));
+ fun->reg.setVariable(SVT_INT, objT->flags & (1 << flagIndex));
return BR_CONTINUE;
}
@@ -2474,7 +2474,7 @@ builtIn(bodgeFilenames) {
bool lastValue = allowAnyFilename;
allowAnyFilename = getBoolean(fun->stack->thisVar);
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, lastValue);
+ fun->reg.setVariable(SVT_INT, lastValue);
return BR_CONTINUE;
}
@@ -2483,7 +2483,7 @@ builtIn(_rem_registryGetString) {
UNUSEDALL
trimStack(fun->stack);
trimStack(fun->stack);
- setVariable(fun->reg, SVT_INT, 0);
+ fun->reg.setVariable(SVT_INT, 0);
return BR_CONTINUE;
}
@@ -2521,14 +2521,14 @@ builtIn(_rem_setMaximumAA) {
builtIn(setBackgroundEffect) {
UNUSEDALL
bool done = blur_createSettings(numParams, fun->stack);
- setVariable(fun->reg, SVT_INT, done ? 1 : 0);
+ fun->reg.setVariable(SVT_INT, done ? 1 : 0);
return BR_CONTINUE;
}
builtIn(doBackgroundEffect) {
UNUSEDALL
bool done = blurScreen();
- setVariable(fun->reg, SVT_INT, done ? 1 : 0);
+ fun->reg.setVariable(SVT_INT, done ? 1 : 0);
return BR_CONTINUE;
}
diff --git a/engines/sludge/event.cpp b/engines/sludge/event.cpp
index acccd7f..16e02e5 100644
--- a/engines/sludge/event.cpp
+++ b/engines/sludge/event.cpp
@@ -157,7 +157,7 @@ bool EventManager::handleInput() {
} else {
l = 1;
- setVariable(*launchResult, SVT_INT, 0/*launch(launchMe) > 31*/); //TODO:false value
+ launchResult->setVariable(SVT_INT, 0/*launch(launchMe) > 31*/); //TODO:false value
_vm->launchMe.clear();
launchResult = nullptr;
}
@@ -184,9 +184,9 @@ bool EventManager::handleInput() {
ScreenRegion *overRegion = _vm->_regionMan->getOverRegion();
if (overRegion) {
- setVariable(tempStack->thisVar, SVT_OBJTYPE, overRegion->thisType->objectNum);
+ tempStack->thisVar.setVariable(SVT_OBJTYPE, overRegion->thisType->objectNum);
} else {
- setVariable(tempStack->thisVar, SVT_INT, 0);
+ tempStack->thisVar.setVariable(SVT_INT, 0);
}
tempStack->next = nullptr;
if (!startNewFunctionNum(_currentEvents->func[kFocus], 1, nullptr, tempStack))
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 97c5130..7ed6207 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -247,7 +247,7 @@ bool continueFunction(LoadedFunction *fun) {
case BR_CALLAFUNC: {
int i = fun->reg.varData.intValue;
- setVariable(fun->reg, SVT_INT, 1);
+ fun->reg.setVariable(SVT_INT, 1);
pauseFunction(fun);
if (numBIFNames)
setFatalInfo(
@@ -278,15 +278,15 @@ bool continueFunction(LoadedFunction *fun) {
// These all grab things and shove 'em into the register
case SLU_LOAD_NULL:
- setVariable(fun->reg, SVT_NULL, 0);
+ fun->reg.setVariable(SVT_NULL, 0);
break;
case SLU_LOAD_FILE:
- setVariable(fun->reg, SVT_FILE, param);
+ fun->reg.setVariable(SVT_FILE, param);
break;
case SLU_LOAD_VALUE:
- setVariable(fun->reg, SVT_INT, param);
+ fun->reg.setVariable(SVT_INT, param);
break;
case SLU_LOAD_LOCAL:
@@ -295,27 +295,27 @@ bool continueFunction(LoadedFunction *fun) {
break;
case SLU_AND:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
getBoolean(fun->reg) && getBoolean(fun->stack->thisVar));
trimStack(fun->stack);
break;
case SLU_OR:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
getBoolean(fun->reg) || getBoolean(fun->stack->thisVar));
trimStack(fun->stack);
break;
case SLU_LOAD_FUNC:
- setVariable(fun->reg, SVT_FUNC, param);
+ fun->reg.setVariable(SVT_FUNC, param);
break;
case SLU_LOAD_BUILT:
- setVariable(fun->reg, SVT_BUILT, param);
+ fun->reg.setVariable(SVT_BUILT, param);
break;
case SLU_LOAD_OBJTYPE:
- setVariable(fun->reg, SVT_OBJTYPE, param);
+ fun->reg.setVariable(SVT_OBJTYPE, param);
break;
case SLU_UNREG:
@@ -333,7 +333,7 @@ bool continueFunction(LoadedFunction *fun) {
switch (fun->stack->thisVar.varType) {
case SVT_NULL:
if (com == SLU_INDEXGET) {
- setVariable(fun->reg, SVT_NULL, 0);
+ fun->reg.setVariable(SVT_NULL, 0);
trimStack(fun->stack);
} else {
return fatal(ERROR_INCDEC_UNKNOWN);
@@ -360,21 +360,21 @@ bool continueFunction(LoadedFunction *fun) {
trimStack(fun->stack);
if (!grab) {
- setVariable(fun->reg, SVT_NULL, 0);
+ fun->reg.setVariable(SVT_NULL, 0);
} else {
int kk;
switch (com) {
case SLU_INCREMENT_INDEX:
if (!getValueType(kk, SVT_INT, *grab))
return false;
- setVariable(fun->reg, SVT_INT, kk);
+ fun->reg.setVariable(SVT_INT, kk);
grab->varData.intValue = kk + 1;
break;
case SLU_DECREMENT_INDEX:
if (!getValueType(kk, SVT_INT, *grab))
return false;
- setVariable(fun->reg, SVT_INT, kk);
+ fun->reg.setVariable(SVT_INT, kk);
grab->varData.intValue = kk - 1;
break;
@@ -437,8 +437,8 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!getValueType(ii, SVT_INT, fun->localVars[param]))
return false;
- setVariable(fun->reg, SVT_INT, ii);
- setVariable(fun->localVars[param], SVT_INT, ii + 1);
+ fun->reg.setVariable(SVT_INT, ii);
+ fun->localVars[param].setVariable(SVT_INT, ii + 1);
}
break;
@@ -446,8 +446,8 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!getValueType(ii, SVT_INT, globalVars[param]))
return false;
- setVariable(fun->reg, SVT_INT, ii);
- setVariable(globalVars[param], SVT_INT, ii + 1);
+ fun->reg.setVariable(SVT_INT, ii);
+ globalVars[param].setVariable(SVT_INT, ii + 1);
}
break;
@@ -455,8 +455,8 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!getValueType(ii, SVT_INT, fun->localVars[param]))
return false;
- setVariable(fun->reg, SVT_INT, ii);
- setVariable(fun->localVars[param], SVT_INT, ii - 1);
+ fun->reg.setVariable(SVT_INT, ii);
+ fun->localVars[param].setVariable(SVT_INT, ii - 1);
}
break;
@@ -464,8 +464,8 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!getValueType(ii, SVT_INT, globalVars[param]))
return false;
- setVariable(fun->reg, SVT_INT, ii);
- setVariable(globalVars[param], SVT_INT, ii - 1);
+ fun->reg.setVariable(SVT_INT, ii);
+ globalVars[param].setVariable(SVT_INT, ii - 1);
}
break;
@@ -500,7 +500,7 @@ bool continueFunction(LoadedFunction *fun) {
break;
case SLU_NOT:
- setVariable(fun->reg, SVT_INT, !getBoolean(fun->reg));
+ fun->reg.setVariable(SVT_INT, !getBoolean(fun->reg));
break;
case SLU_BR_ZERO:
@@ -519,7 +519,7 @@ bool continueFunction(LoadedFunction *fun) {
int i;
if (!getValueType(i, SVT_INT, fun->reg))
return false;
- setVariable(fun->reg, SVT_INT, -i);
+ fun->reg.setVariable(SVT_INT, -i);
}
break;
@@ -565,42 +565,42 @@ bool continueFunction(LoadedFunction *fun) {
switch (com) {
case SLU_MULT:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue * secondValue);
break;
case SLU_MINUS:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue - secondValue);
break;
case SLU_MODULUS:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue % secondValue);
break;
case SLU_DIVIDE:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue / secondValue);
break;
case SLU_LESSTHAN:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue < secondValue);
break;
case SLU_MORETHAN:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue > secondValue);
break;
case SLU_LESS_EQUAL:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue <= secondValue);
break;
case SLU_MORE_EQUAL:
- setVariable(fun->reg, SVT_INT,
+ fun->reg.setVariable(SVT_INT,
firstValue >= secondValue);
break;
diff --git a/engines/sludge/loadsave.cpp b/engines/sludge/loadsave.cpp
index 22781ea..bb41d0a 100644
--- a/engines/sludge/loadsave.cpp
+++ b/engines/sludge/loadsave.cpp
@@ -71,7 +71,7 @@ bool handleSaveLoad() {
if (!g_sludge->loadNow.empty()) {
if (g_sludge->loadNow[0] == ':') {
saveGame(g_sludge->loadNow.c_str() + 1);
- setVariable(saverFunc->reg, SVT_INT, 1);
+ saverFunc->reg.setVariable(SVT_INT, 1);
} else {
if (!loadGame(g_sludge->loadNow))
return false;
diff --git a/engines/sludge/savedata.cpp b/engines/sludge/savedata.cpp
index 687c913..f8b07a5 100644
--- a/engines/sludge/savedata.cpp
+++ b/engines/sludge/savedata.cpp
@@ -138,11 +138,11 @@ bool CustomSaveHelper::fileToStack(const Common::String &filename, StackHandler
break;
case 1:
- setVariable(stringVar, SVT_INT, fp->readUint32LE());
+ stringVar.setVariable(SVT_INT, fp->readUint32LE());
break;
case 2:
- setVariable(stringVar, SVT_INT, fp->readByte());
+ stringVar.setVariable(SVT_INT, fp->readByte());
break;
default:
diff --git a/engines/sludge/sound.cpp b/engines/sludge/sound.cpp
index 306fd49..25b239c 100644
--- a/engines/sludge/sound.cpp
+++ b/engines/sludge/sound.cpp
@@ -402,7 +402,7 @@ bool SoundManager::getSoundCacheStack(StackHandler *sH) {
for (int a = 0; a < MAX_SAMPLES; a++) {
if (_soundCache[a].fileLoaded != -1) {
- setVariable(newFileHandle, SVT_FILE, _soundCache[a].fileLoaded);
+ newFileHandle.setVariable(SVT_FILE, _soundCache[a].fileLoaded);
if (!addVarToStackQuick(newFileHandle, sH->first))
return false;
if (sH->last == NULL)
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index dc5604f..faaf9bd 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -76,10 +76,10 @@ void Variable::unlinkVar() {
}
}
-void setVariable(Variable &thisVar, VariableType vT, int value) {
- thisVar.unlinkVar();
- thisVar.varType = vT;
- thisVar.varData.intValue = value;
+void Variable::setVariable(VariableType vT, int value) {
+ unlinkVar();
+ varType = vT;
+ varData.intValue = value;
}
void newAnimationVariable(Variable &thisVar, PersonaAnimation *i) {
@@ -236,7 +236,7 @@ int compareVars(const Variable &var1, const Variable &var2) {
}
void compareVariablesInSecond(const Variable &var1, Variable &var2) {
- setVariable(var2, SVT_INT, compareVars(var1, var2));
+ var2.setVariable(SVT_INT, compareVars(var1, var2));
}
void makeTextVar(Variable &thisVar, const Common::String &txt) {
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 5a750b5..3381051 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -75,6 +75,7 @@ struct Variable {
}
void unlinkVar();
+ void setVariable(VariableType vT, int value);
};
struct VariableStack {
@@ -84,7 +85,6 @@ struct VariableStack {
// Setting variables
-void setVariable(Variable &thisVar, VariableType vT, int value);
bool copyVariable(const Variable &from, Variable &to);
bool loadStringToVar(Variable &thisVar, int value);
void newAnimationVariable(Variable &thisVar, struct PersonaAnimation *i);
Commit: 56f0821876b20da1c20afde9799bb22829cc537d
https://github.com/scummvm/scummvm/commit/56f0821876b20da1c20afde9799bb22829cc537d
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move save/loadVariable() to struct Variable
Changed paths:
engines/sludge/function.cpp
engines/sludge/loadsave.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 7ed6207..232a040 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -749,14 +749,14 @@ void saveFunction(LoadedFunction *fun, Common::WriteStream *stream) {
stream->writeByte(fun->cancelMe);
stream->writeByte(fun->returnSomething);
stream->writeByte(fun->isSpeech);
- saveVariable(&(fun->reg), stream);
+ fun->reg.save(stream);
if (fun->freezerLevel) {
fatal(ERROR_GAME_SAVE_FROZEN);
}
saveStack(fun->stack, stream);
for (a = 0; a < fun->numLocals; a++) {
- saveVariable(&(fun->localVars[a]), stream);
+ fun->localVars[a].save(stream);
}
}
@@ -785,13 +785,13 @@ LoadedFunction *loadFunction(Common::SeekableReadStream *stream) {
buildFunc->cancelMe = stream->readByte();
buildFunc->returnSomething = stream->readByte();
buildFunc->isSpeech = stream->readByte();
- loadVariable(&(buildFunc->reg), stream);
+ buildFunc->reg.load(stream);
loadFunctionCode(buildFunc);
buildFunc->stack = loadStack(stream, NULL);
for (a = 0; a < buildFunc->numLocals; a++) {
- loadVariable(&(buildFunc->localVars[a]), stream);
+ buildFunc->localVars[a].load(stream);
}
return buildFunc;
diff --git a/engines/sludge/loadsave.cpp b/engines/sludge/loadsave.cpp
index bb41d0a..453e78f 100644
--- a/engines/sludge/loadsave.cpp
+++ b/engines/sludge/loadsave.cpp
@@ -132,7 +132,7 @@ bool saveGame(const Common::String &fname) {
}
for (int a = 0; a < numGlobals; a++) {
- saveVariable(&globalVars[a], fp);
+ globalVars[a].save(fp);
}
g_sludge->_peopleMan->savePeople(fp);
@@ -258,7 +258,7 @@ bool loadGame(const Common::String &fname) {
for (int a = 0; a < numGlobals; a++) {
globalVars[a].unlinkVar();
- loadVariable(&globalVars[a], fp);
+ globalVars[a].load(fp);
}
g_sludge->_peopleMan->loadPeople(fp);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index faaf9bd..d52e5ef 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -554,7 +554,7 @@ void saveStack(VariableStack *vs, Common::WriteStream *stream) {
stream->writeUint16BE(elements);
search = vs;
for (a = 0; a < elements; a++) {
- saveVariable(&search->thisVar, stream);
+ search->thisVar.save(stream);
search = search->next;
}
}
@@ -569,7 +569,7 @@ VariableStack *loadStack(Common::SeekableReadStream *stream, VariableStack **las
VariableStack *nS = new VariableStack;
if (!checkNew(nS))
return NULL;
- loadVariable(&(nS->thisVar), stream);
+ nS->thisVar.load(stream);
if (last && a == elements - 1) {
*last = nS;
}
@@ -656,72 +656,72 @@ StackHandler *loadStackRef(Common::SeekableReadStream *stream) {
//----------------------------------------------------------------------
// For saving and loading variables...
//----------------------------------------------------------------------
-bool saveVariable(Variable *from, Common::WriteStream *stream) {
- stream->writeByte(from->varType);
- switch (from->varType) {
+bool Variable::save(Common::WriteStream *stream) {
+ stream->writeByte(varType);
+ switch (varType) {
case SVT_INT:
case SVT_FUNC:
case SVT_BUILT:
case SVT_FILE:
case SVT_OBJTYPE:
- stream->writeUint32LE(from->varData.intValue);
+ stream->writeUint32LE(varData.intValue);
return true;
case SVT_STRING:
- writeString(from->varData.theString, stream);
+ writeString(varData.theString, stream);
return true;
case SVT_STACK:
- return saveStackRef(from->varData.theStack, stream);
+ return saveStackRef(varData.theStack, stream);
case SVT_COSTUME:
- from->varData.costumeHandler->save(stream);
+ varData.costumeHandler->save(stream);
return false;
case SVT_ANIM:
- from->varData.animHandler->save(stream);
+ varData.animHandler->save(stream);
return false;
case SVT_NULL:
return false;
default:
- fatal("Can't save variables of this type:", (from->varType < SVT_NUM_TYPES) ? typeName[from->varType] : "bad ID");
+ fatal("Can't save variables of this type:", (varType < SVT_NUM_TYPES) ? typeName[varType] : "bad ID");
}
return true;
}
-bool loadVariable(Variable *to, Common::SeekableReadStream *stream) {
- to->varType = (VariableType)stream->readByte();
- switch (to->varType) {
+bool Variable::load(Common::SeekableReadStream *stream) {
+ varType = (VariableType)stream->readByte();
+ switch (varType) {
case SVT_INT:
case SVT_FUNC:
case SVT_BUILT:
case SVT_FILE:
case SVT_OBJTYPE:
- to->varData.intValue = stream->readUint32LE();
+ varData.intValue = stream->readUint32LE();
return true;
case SVT_STRING:
- to->varData.theString = createCString(readString(stream));
+ varData.theString = createCString(readString(stream));
return true;
case SVT_STACK:
- to->varData.theStack = loadStackRef(stream);
+ varData.theStack = loadStackRef(stream);
return true;
case SVT_COSTUME:
- to->varData.costumeHandler = new Persona;
- if (!checkNew(to->varData.costumeHandler))
+ varData.costumeHandler = new Persona;
+ if (!checkNew(varData.costumeHandler))
return false;
- to->varData.costumeHandler->load(stream);
+ varData.costumeHandler->load(stream);
return true;
case SVT_ANIM:
- to->varData.animHandler = new PersonaAnimation;
- if (!checkNew(to->varData.animHandler))
+ varData.animHandler = new PersonaAnimation;
+ if (!checkNew(varData.animHandler))
return false;
- to->varData.animHandler->load(stream);
+ varData.animHandler->load(stream);
return true;
default:
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 3381051..c78976a 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -76,6 +76,10 @@ struct Variable {
void unlinkVar();
void setVariable(VariableType vT, int value);
+
+ // Load & save
+ bool save(Common::WriteStream *stream);
+ bool load(Common::SeekableReadStream *stream);
};
struct VariableStack {
@@ -120,9 +124,6 @@ bool makeFastArraySize(Variable &to, int size);
Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex);
// load & save
-bool saveVariable(Variable *from, Common::WriteStream *stream);
-bool loadVariable(Variable *to, Common::SeekableReadStream *stream);
-
void saveStack(VariableStack *vs, Common::WriteStream *stream);
VariableStack *loadStack(Common::SeekableReadStream *stream, VariableStack **last);
bool saveStackRef(StackHandler *vs, Common::WriteStream *stream);
Commit: 98f764050a67f67c6bfaa4fb4ba685dd6ee6a0fb
https://github.com/scummvm/scummvm/commit/98f764050a67f67c6bfaa4fb4ba685dd6ee6a0fb
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move copyVariable to struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/function.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index e899014..2ee7de3 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -443,7 +443,7 @@ builtIn(pickOne) {
// Return value
while (numParams--) {
if (i == numParams)
- copyVariable(fun->stack->thisVar, fun->reg);
+ fun->reg.copyFrom(fun->stack->thisVar);
trimStack(fun->stack);
}
return BR_CONTINUE;
@@ -646,7 +646,7 @@ builtIn(popFromStack) {
}
// Return value
- copyVariable(fun->stack->thisVar.varData.theStack->first->thisVar, fun->reg);
+ fun->reg.copyFrom(fun->stack->thisVar.varData.theStack->first->thisVar);
trimStack(fun->stack->thisVar.varData.theStack->first);
trimStack(fun->stack);
return BR_CONTINUE;
@@ -664,7 +664,7 @@ builtIn(peekStart) {
}
// Return value
- copyVariable(fun->stack->thisVar.varData.theStack->first->thisVar, fun->reg);
+ fun->reg.copyFrom(fun->stack->thisVar.varData.theStack->first->thisVar);
trimStack(fun->stack);
return BR_CONTINUE;
}
@@ -681,7 +681,7 @@ builtIn(peekEnd) {
}
// Return value
- copyVariable(fun->stack->thisVar.varData.theStack->last->thisVar, fun->reg);
+ fun->reg.copyFrom(fun->stack->thisVar.varData.theStack->last->thisVar);
trimStack(fun->stack);
return BR_CONTINUE;
}
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 232a040..f876746 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -190,7 +190,7 @@ bool continueFunction(LoadedFunction *fun) {
if (fun->calledBy) {
LoadedFunction *returnTo = fun->calledBy;
if (fun->returnSomething)
- copyVariable(fun->reg, returnTo->reg);
+ returnTo->reg.copyFrom(fun->reg);
finishFunction(fun);
fun = returnTo;
restartFunction(fun);
@@ -290,7 +290,7 @@ bool continueFunction(LoadedFunction *fun) {
break;
case SLU_LOAD_LOCAL:
- if (!copyVariable(fun->localVars[param], fun->reg))
+ if (!fun->reg.copyFrom(fun->localVars[param]))
return false;
break;
@@ -379,7 +379,7 @@ bool continueFunction(LoadedFunction *fun) {
break;
default:
- if (!copyVariable(*grab, fun->reg))
+ if (!fun->reg.copyFrom(*grab))
return false;
}
}
@@ -418,7 +418,7 @@ bool continueFunction(LoadedFunction *fun) {
fun->stack->thisVar.varData.fastArray, ii);
if (v == NULL)
return fatal("Not within bounds of fast array.");
- if (!copyVariable(fun->stack->next->thisVar, *v))
+ if (!v->copyFrom(fun->stack->next->thisVar))
return false;
trimStack(fun->stack);
trimStack(fun->stack);
@@ -470,22 +470,17 @@ bool continueFunction(LoadedFunction *fun) {
break;
case SLU_SET_LOCAL:
- if (!copyVariable(fun->reg, fun->localVars[param]))
+ if (!fun->localVars[param].copyFrom(fun->reg))
return false;
break;
case SLU_SET_GLOBAL:
-// newDebug (" Copying TO global variable", param);
-// newDebug (" Global type at the moment", globalVars[param].varType);
- if (!copyVariable(fun->reg, globalVars[param]))
+ if (!globalVars[param].copyFrom(fun->reg))
return false;
-// newDebug (" New type", globalVars[param].varType);
break;
case SLU_LOAD_GLOBAL:
-// newDebug (" Copying FROM global variable", param);
-// newDebug (" Global type at the moment", globalVars[param].varType);
- if (!copyVariable(globalVars[param], fun->reg))
+ if (!fun->reg.copyFrom(globalVars[param]))
return false;
break;
@@ -685,7 +680,7 @@ int startNewFunctionNum(uint funcNum, uint numParamsExpected,
if (vStack == NULL)
return fatal(
"Corrupted file!The stack's empty and there were still parameters expected");
- copyVariable(vStack->thisVar, newFunc->localVars[numParamsExpected]);
+ newFunc->localVars[numParamsExpected].copyFrom(vStack->thisVar);
trimStack(vStack);
}
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index d52e5ef..90a2f14 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -332,37 +332,37 @@ bool getBoolean(const Variable &from) {
return true;
}
-bool copyMain(const Variable &from, Variable &to) {
- to.varType = from.varType;
- switch (to.varType) {
+bool Variable::copyMain(const Variable &from) {
+ varType = from.varType;
+ switch (varType) {
case SVT_INT:
case SVT_FUNC:
case SVT_BUILT:
case SVT_FILE:
case SVT_OBJTYPE:
- to.varData.intValue = from.varData.intValue;
+ varData.intValue = from.varData.intValue;
return true;
case SVT_FASTARRAY:
- to.varData.fastArray = from.varData.fastArray;
- to.varData.fastArray->timesUsed++;
+ varData.fastArray = from.varData.fastArray;
+ varData.fastArray->timesUsed++;
return true;
case SVT_STRING:
- to.varData.theString = createCString(from.varData.theString);
- return to.varData.theString ? true : false;
+ varData.theString = createCString(from.varData.theString);
+ return varData.theString ? true : false;
case SVT_STACK:
- to.varData.theStack = from.varData.theStack;
- to.varData.theStack->timesUsed++;
+ varData.theStack = from.varData.theStack;
+ varData.theStack->timesUsed++;
return true;
case SVT_COSTUME:
- to.varData.costumeHandler = from.varData.costumeHandler;
+ varData.costumeHandler = from.varData.costumeHandler;
return true;
case SVT_ANIM:
- to.varData.animHandler = new PersonaAnimation(from.varData.animHandler);
+ varData.animHandler = new PersonaAnimation(from.varData.animHandler);
return true;
case SVT_NULL:
@@ -375,9 +375,9 @@ bool copyMain(const Variable &from, Variable &to) {
return false;
}
-bool copyVariable(const Variable &from, Variable &to) {
- to.unlinkVar();
- return copyMain(from, to);
+bool Variable::copyFrom(const Variable &from) {
+ unlinkVar();
+ return copyMain(from);
}
Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex) {
@@ -412,7 +412,7 @@ bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky) {
VariableStack *allV = stacky->first;
size = 0;
while (allV) {
- copyMain(allV->thisVar, to.varData.fastArray->fastVariables[size]);
+ to.varData.fastArray->fastVariables[size].copyMain(allV->thisVar);
size++;
allV = allV->next;
}
@@ -424,7 +424,7 @@ bool addVarToStack(const Variable &va, VariableStack *&thisStack) {
if (!checkNew(newStack))
return false;
- if (!copyMain(va, newStack->thisVar))
+ if (!newStack->thisVar.copyMain(va))
return false;
newStack->next = thisStack;
thisStack = newStack;
@@ -454,7 +454,7 @@ bool stackSetByIndex(VariableStack *vS, uint theIndex, const Variable &va) {
if (!vS)
return fatal("Index past end of stack.");
}
- return copyVariable(va, vS->thisVar);
+ return vS->thisVar.copyFrom(va);
}
Variable *stackGetByIndex(VariableStack *vS, uint theIndex) {
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index c78976a..22ed395 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -77,6 +77,10 @@ struct Variable {
void unlinkVar();
void setVariable(VariableType vT, int value);
+ // Copy from another variable
+ bool copyFrom(const Variable &from);
+ bool copyMain(const Variable &from); // without variable unlink
+
// Load & save
bool save(Common::WriteStream *stream);
bool load(Common::SeekableReadStream *stream);
@@ -88,8 +92,6 @@ struct VariableStack {
};
// Setting variables
-
-bool copyVariable(const Variable &from, Variable &to);
bool loadStringToVar(Variable &thisVar, int value);
void newAnimationVariable(Variable &thisVar, struct PersonaAnimation *i);
void newCostumeVariable(Variable &thisVar, struct Persona *i);
Commit: 805a47b74ab9b2ffa299d5c8401f178db022d4d8
https://github.com/scummvm/scummvm/commit/805a47b74ab9b2ffa299d5c8401f178db022d4d8
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move text related functions to struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/event.cpp
engines/sludge/function.cpp
engines/sludge/savedata.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 2ee7de3..20b4ba8 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -113,7 +113,7 @@ static BuiltReturn sayCore(int numParams, LoadedFunction *fun, bool sayIt) {
// fall through
case 2:
- newText = getTextFromAnyVar(fun->stack->thisVar);
+ newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
if (!getValueType(objT, SVT_OBJTYPE, fun->stack->thisVar))
return BR_ERROR;
@@ -197,13 +197,13 @@ builtIn(getMouseScreenY) {
builtIn(getStatusText) {
UNUSEDALL
- makeTextVar(fun->reg, statusBarText());
+ fun->reg.makeTextVar(statusBarText());
return BR_CONTINUE;
}
builtIn(getMatchingFiles) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
fun->reg.unlinkVar();
@@ -227,7 +227,7 @@ builtIn(saveGame) {
fatal("Can't save game state while the engine is frozen");
}
- g_sludge->loadNow = getTextFromAnyVar(fun->stack->thisVar);
+ g_sludge->loadNow = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
Common::String aaaaa = encodeFilename(g_sludge->loadNow);
@@ -244,7 +244,7 @@ builtIn(saveGame) {
builtIn(fileExists) {
UNUSEDALL
- g_sludge->loadNow = getTextFromAnyVar(fun->stack->thisVar);
+ g_sludge->loadNow = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
Common::String aaaaa = encodeFilename(g_sludge->loadNow);
g_sludge->loadNow.clear();
@@ -273,7 +273,7 @@ builtIn(fileExists) {
builtIn(loadGame) {
UNUSEDALL
- Common::String aaaaa = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String aaaaa = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
g_sludge->loadNow.clear();
g_sludge->loadNow = encodeFilename(aaaaa);
@@ -462,7 +462,7 @@ builtIn(substring) {
if (!getValueType(start, SVT_INT, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- wholeString = getTextFromAnyVar(fun->stack->thisVar);
+ wholeString = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
UTF8Converter convert;
@@ -484,13 +484,13 @@ builtIn(substring) {
Common::String newString(wholeString.begin() + startoffset, wholeString.begin() + endoffset);
- makeTextVar(fun->reg, newString);
+ fun->reg.makeTextVar(newString);
return BR_CONTINUE;
}
builtIn(stringLength) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, g_sludge->_txtMan->stringLength(newText));
return BR_CONTINUE;
@@ -777,7 +777,7 @@ builtIn(setFont) {
return BR_ERROR;
// newDebug (" Height:", newHeight);
trimStack(fun->stack);
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
// newDebug (" Character supported:", newText);
trimStack(fun->stack);
if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
@@ -792,7 +792,7 @@ builtIn(setFont) {
builtIn(inFont) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
// Return value
@@ -802,7 +802,7 @@ builtIn(inFont) {
builtIn(pasteString) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
int y, x;
if (!getValueType(y, SVT_INT, fun->stack->thisVar))
@@ -871,7 +871,7 @@ builtIn(costume) {
builtIn(launch) {
UNUSEDALL
- Common::String newTextA = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newTextA = fun->stack->thisVar.getTextFromAnyVar();
Common::String newText = encodeFilename(newTextA);
@@ -1293,7 +1293,7 @@ builtIn(getOverObject) {
builtIn(rename) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
int objT;
trimStack(fun->stack);
if (!getValueType(objT, SVT_OBJTYPE, fun->stack->thisVar))
@@ -1735,7 +1735,7 @@ builtIn(addStatus) {
builtIn(statusText) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
setStatusBar(newText);
return BR_CONTINUE;
@@ -1891,7 +1891,7 @@ builtIn(cancelSub) {
builtIn(stringWidth) {
UNUSEDALL
- Common::String theText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String theText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
// Return value
@@ -2067,7 +2067,7 @@ builtIn(fetchEvent) {
builtIn(deleteFile) {
UNUSEDALL
- Common::String namNormal = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String namNormal = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
Common::String nam = encodeFilename(namNormal);
namNormal.clear();
@@ -2083,14 +2083,14 @@ builtIn(renameFile) {
Common::String temp;
temp.clear();
- temp = getTextFromAnyVar(fun->stack->thisVar);
+ temp = fun->stack->thisVar.getTextFromAnyVar();
Common::String newnam = encodeFilename(temp);
trimStack(fun->stack);
if (failSecurityCheck(newnam))
return BR_ERROR;
temp.clear();
- temp = getTextFromAnyVar(fun->stack->thisVar);
+ temp = fun->stack->thisVar.getTextFromAnyVar();
Common::String nam = encodeFilename(temp);
trimStack(fun->stack);
if (failSecurityCheck(nam))
@@ -2114,7 +2114,7 @@ builtIn(cacheSound) {
builtIn(burnString) {
UNUSEDALL
- Common::String newText = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
int y, x;
if (!getValueType(y, SVT_INT, fun->stack->thisVar))
@@ -2207,7 +2207,7 @@ builtIn(getSoundCache) {
builtIn(saveCustomData) {
UNUSEDALL
// saveCustomData (thisStack, fileName);
- Common::String fileNameB = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String fileNameB = fun->stack->thisVar.getTextFromAnyVar();
Common::String fileName = encodeFilename(fileNameB);
@@ -2228,7 +2228,7 @@ builtIn(saveCustomData) {
builtIn(loadCustomData) {
UNUSEDALL
- Common::String newTextA = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String newTextA = fun->stack->thisVar.getTextFromAnyVar();
Common::String newText = encodeFilename(newTextA);
@@ -2378,7 +2378,7 @@ builtIn(_rem_launchWith) {
trimStack(fun->stack);
// To support some windows only games
- Common::String filename = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String filename = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
if (filename.hasSuffix(".exe")) {
@@ -2418,7 +2418,7 @@ builtIn(showThumbnail) {
trimStack(fun->stack);
// Encode the name!Encode the name!
- Common::String aaaaa = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String aaaaa = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
Common::String file = encodeFilename(aaaaa);
g_sludge->_gfxMan->showThumbnail(file, x, y);
@@ -2490,7 +2490,7 @@ builtIn(_rem_registryGetString) {
builtIn(quitWithFatalError) {
UNUSEDALL
- Common::String mess = getTextFromAnyVar(fun->stack->thisVar);
+ Common::String mess = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
fatal(mess);
return BR_ERROR;
diff --git a/engines/sludge/event.cpp b/engines/sludge/event.cpp
index 16e02e5..098720b 100644
--- a/engines/sludge/event.cpp
+++ b/engines/sludge/event.cpp
@@ -320,7 +320,7 @@ bool EventManager::handleInput() {
VariableStack *tempStack = new VariableStack;
if (!checkNew(tempStack))
return false;
- makeTextVar(tempStack->thisVar, tempString);
+ tempStack->thisVar.makeTextVar(tempString);
tempStack->next = nullptr;
if (!startNewFunctionNum(_currentEvents->func[kSpace], 1, nullptr, tempStack))
return false;
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index f876746..ed7280f 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -322,7 +322,7 @@ bool continueFunction(LoadedFunction *fun) {
break;
case SLU_LOAD_STRING:
- if (!loadStringToVar(fun->reg, param)) {
+ if (!fun->reg.loadStringToVar(param)) {
return false;
}
break;
diff --git a/engines/sludge/savedata.cpp b/engines/sludge/savedata.cpp
index f8b07a5..b103523 100644
--- a/engines/sludge/savedata.cpp
+++ b/engines/sludge/savedata.cpp
@@ -133,7 +133,7 @@ bool CustomSaveHelper::fileToStack(const Common::String &filename, StackHandler
switch (i) {
case 0: {
Common::String g = readStringEncoded(fp);
- makeTextVar(stringVar, g);
+ stringVar.makeTextVar(g);
}
break;
@@ -154,7 +154,7 @@ bool CustomSaveHelper::fileToStack(const Common::String &filename, StackHandler
char *line = readTextPlain(fp);
if (!line)
break;
- makeTextVar(stringVar, line);
+ stringVar.makeTextVar(line);
}
if (sH->first == NULL) {
@@ -218,7 +218,7 @@ bool CustomSaveHelper::stackToFile(const Common::String &filename, const Variabl
return false;
}
} else {
- Common::String makeSureItsText = getTextFromAnyVar(hereWeAre -> thisVar);
+ Common::String makeSureItsText = hereWeAre->thisVar.getTextFromAnyVar();
if (makeSureItsText.empty())
break;
fp->writeString((makeSureItsText + "\n").c_str());
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 90a2f14..8385476 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -160,7 +160,7 @@ bool getSavedGamesStack(StackHandler *sH, const Common::String &ext) {
Common::StringArray::iterator it;
for (it = sa.begin(); it != sa.end(); ++it) {
(*it).erase((*it).size() - len, len);
- makeTextVar(newName, (*it));
+ newName.makeTextVar((*it));
if (!addVarToStack(newName, sH->first))
return false;
if (sH->last == NULL)
@@ -195,8 +195,8 @@ void addVariablesInSecond(Variable &var1, Variable &var2) {
if (var1.varType == SVT_INT && var2.varType == SVT_INT) {
var2.varData.intValue += var1.varData.intValue;
} else {
- Common::String string1 = getTextFromAnyVar(var1);
- Common::String string2 = getTextFromAnyVar(var2);
+ Common::String string1 = var1.getTextFromAnyVar();
+ Common::String string2 = var2.getTextFromAnyVar();
var2.unlinkVar();
var2.varData.theString = createCString(string1 + string2);
@@ -239,30 +239,30 @@ void compareVariablesInSecond(const Variable &var1, Variable &var2) {
var2.setVariable(SVT_INT, compareVars(var1, var2));
}
-void makeTextVar(Variable &thisVar, const Common::String &txt) {
- thisVar.unlinkVar();
- thisVar.varType = SVT_STRING;
- thisVar.varData.theString = createCString(txt);
+void Variable::makeTextVar(const Common::String &txt) {
+ unlinkVar();
+ varType = SVT_STRING;
+ varData.theString = createCString(txt);
}
-bool loadStringToVar(Variable &thisVar, int value) {
- makeTextVar(thisVar, g_sludge->_resMan->getNumberedString(value));
- return (bool)(thisVar.varData.theString != NULL);
+bool Variable::loadStringToVar(int value) {
+ makeTextVar(g_sludge->_resMan->getNumberedString(value));
+ return (bool)(varData.theString != NULL);
}
-Common::String getTextFromAnyVar(const Variable &from) {
- switch (from.varType) {
+Common::String Variable::getTextFromAnyVar() {
+ switch (varType) {
case SVT_STRING:
- return from.varData.theString;
+ return varData.theString;
case SVT_FASTARRAY: {
Common::String builder = "FAST:";
Common::String builder2 = "";
Common::String grabText = "";
- for (int i = 0; i < from.varData.fastArray->size; i++) {
+ for (int i = 0; i < varData.fastArray->size; i++) {
builder2 = builder + " ";
- grabText = getTextFromAnyVar(from.varData.fastArray->fastVariables[i]);
+ grabText = varData.fastArray->fastVariables[i].getTextFromAnyVar();
builder.clear();
builder = builder2 + grabText;
}
@@ -274,11 +274,11 @@ Common::String getTextFromAnyVar(const Variable &from) {
Common::String builder2 = "";
Common::String grabText = "";
- VariableStack *stacky = from.varData.theStack->first;
+ VariableStack *stacky = varData.theStack->first;
while (stacky) {
builder2 = builder + " ";
- grabText = getTextFromAnyVar(stacky->thisVar);
+ grabText = stacky->thisVar.getTextFromAnyVar();
builder.clear();
builder = builder2 + grabText;
stacky = stacky->next;
@@ -287,16 +287,16 @@ Common::String getTextFromAnyVar(const Variable &from) {
}
case SVT_INT: {
- Common::String buff = Common::String::format("%i", from.varData.intValue);
+ Common::String buff = Common::String::format("%i", varData.intValue);
return buff;
}
case SVT_FILE: {
- return g_sludge->_resMan->resourceNameFromNum(from.varData.intValue);
+ return g_sludge->_resMan->resourceNameFromNum(varData.intValue);
}
case SVT_OBJTYPE: {
- ObjectType *thisType = g_sludge->_objMan->findObjectType(from.varData.intValue);
+ ObjectType *thisType = g_sludge->_objMan->findObjectType(varData.intValue);
if (thisType)
return thisType->screenName;
break;
@@ -306,7 +306,7 @@ Common::String getTextFromAnyVar(const Variable &from) {
break;
}
- return typeName[from.varType];
+ return typeName[varType];
}
bool getBoolean(const Variable &from) {
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 22ed395..aa1e2aa 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -84,6 +84,14 @@ struct Variable {
// Load & save
bool save(Common::WriteStream *stream);
bool load(Common::SeekableReadStream *stream);
+
+ // Text variable
+ void makeTextVar(const Common::String &txt);
+ bool loadStringToVar(int value);
+ Common::String getTextFromAnyVar();
+
+ // Get Text
+
};
struct VariableStack {
@@ -92,16 +100,13 @@ struct VariableStack {
};
// Setting variables
-bool loadStringToVar(Variable &thisVar, int value);
void newAnimationVariable(Variable &thisVar, struct PersonaAnimation *i);
void newCostumeVariable(Variable &thisVar, struct Persona *i);
-void makeTextVar(Variable &thisVar, const Common::String &txt);
void addVariablesInSecond(Variable &var1, Variable &var2);
void compareVariablesInSecond(const Variable &var1, Variable &var2);
// Misc.
-Common::String getTextFromAnyVar(const Variable &from);
struct Persona *getCostumeFromVar(Variable &thisVar);
struct PersonaAnimation *getAnimationFromVar(Variable &thisVar);
bool getBoolean(const Variable &from);
Commit: 04ef7becf37fbc5ed0ac9183aa8355ffa838df4b
https://github.com/scummvm/scummvm/commit/04ef7becf37fbc5ed0ac9183aa8355ffa838df4b
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move PersonAnimation functions into struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 20b4ba8..f282d68 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -165,7 +165,7 @@ builtIn(howFrozen) {
builtIn(setCursor) {
UNUSEDALL
- PersonaAnimation *aa = getAnimationFromVar(fun->stack->thisVar);
+ PersonaAnimation *aa = fun->stack->thisVar.getAnimationFromVar();
g_sludge->_cursorMan->pickAnimCursor(aa);
trimStack(fun->stack);
return BR_CONTINUE;
@@ -370,7 +370,7 @@ builtIn(pasteImage) {
if (!getValueType(x, SVT_INT, fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
- PersonaAnimation *pp = getAnimationFromVar(fun->stack->thisVar);
+ PersonaAnimation *pp = fun->stack->thisVar.getAnimationFromVar();
trimStack(fun->stack);
if (pp == NULL)
return BR_CONTINUE;
@@ -840,7 +840,7 @@ builtIn(anim) {
ba->theSprites = sprBanky;
// Return value
- newAnimationVariable(fun->reg, ba);
+ fun->reg.makeAnimationVariable(ba);
return BR_CONTINUE;
}
@@ -860,7 +860,7 @@ builtIn(costume) {
if (!checkNew(newPersona->animation))
return BR_ERROR;
for (iii = numParams - 1; iii >= 0; iii--) {
- newPersona->animation[iii] = getAnimationFromVar(fun->stack->thisVar);
+ newPersona->animation[iii] = fun->stack->thisVar.getAnimationFromVar();
trimStack(fun->stack);
}
@@ -1553,7 +1553,7 @@ builtIn(pasteCharacter) {
builtIn(animate) {
UNUSEDALL
int obj;
- PersonaAnimation *pp = getAnimationFromVar(fun->stack->thisVar);
+ PersonaAnimation *pp = fun->stack->thisVar.getAnimationFromVar();
if (pp == NULL)
return BR_ERROR;
trimStack(fun->stack);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 8385476..27b38db 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -82,20 +82,20 @@ void Variable::setVariable(VariableType vT, int value) {
varData.intValue = value;
}
-void newAnimationVariable(Variable &thisVar, PersonaAnimation *i) {
- thisVar.unlinkVar();
- thisVar.varType = SVT_ANIM;
- thisVar.varData.animHandler = i;
+void Variable::makeAnimationVariable(PersonaAnimation *i) {
+ unlinkVar();
+ varType = SVT_ANIM;
+ varData.animHandler = i;
}
-PersonaAnimation *getAnimationFromVar(Variable &thisVar) {
- if (thisVar.varType == SVT_ANIM)
- return new PersonaAnimation(thisVar.varData.animHandler);
+PersonaAnimation *Variable::getAnimationFromVar() {
+ if (varType == SVT_ANIM)
+ return new PersonaAnimation(varData.animHandler);
- if (thisVar.varType == SVT_INT && thisVar.varData.intValue == 0)
+ if (varType == SVT_INT && varData.intValue == 0)
return new PersonaAnimation();
- fatal("Expecting an animation variable; found Variable of type", typeName[thisVar.varType]);
+ fatal("Expecting an animation variable; found Variable of type", typeName[varType]);
return NULL;
}
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index aa1e2aa..5a03693 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -90,7 +90,9 @@ struct Variable {
bool loadStringToVar(int value);
Common::String getTextFromAnyVar();
- // Get Text
+ // Animation variable
+ void makeAnimationVariable(struct PersonaAnimation *i);
+ struct PersonaAnimation *getAnimationFromVar();
};
@@ -100,7 +102,6 @@ struct VariableStack {
};
// Setting variables
-void newAnimationVariable(Variable &thisVar, struct PersonaAnimation *i);
void newCostumeVariable(Variable &thisVar, struct Persona *i);
void addVariablesInSecond(Variable &var1, Variable &var2);
void compareVariablesInSecond(const Variable &var1, Variable &var2);
@@ -108,7 +109,6 @@ void compareVariablesInSecond(const Variable &var1, Variable &var2);
// Misc.
struct Persona *getCostumeFromVar(Variable &thisVar);
-struct PersonaAnimation *getAnimationFromVar(Variable &thisVar);
bool getBoolean(const Variable &from);
bool getValueType(int &toHere, VariableType vT, const Variable &v);
Commit: 719f5842fa2199b6003610aa5f4981626e9b52e1
https://github.com/scummvm/scummvm/commit/719f5842fa2199b6003610aa5f4981626e9b52e1
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move costume functions to struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index f282d68..2aacead 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -865,7 +865,7 @@ builtIn(costume) {
}
// Return value
- newCostumeVariable(fun->reg, newPersona);
+ fun->reg.makeCostumeVariable(newPersona);
return BR_CONTINUE;
}
@@ -1407,7 +1407,7 @@ builtIn(addCharacter) {
Persona *p;
int x, y, objectNumber;
- p = getCostumeFromVar(fun->stack->thisVar);
+ p = fun->stack->thisVar.getCostumeFromVar();
if (p == NULL)
return BR_ERROR;
@@ -1568,7 +1568,7 @@ builtIn(animate) {
builtIn(setCostume) {
UNUSEDALL
int obj;
- Persona *pp = getCostumeFromVar(fun->stack->thisVar);
+ Persona *pp = fun->stack->thisVar.getCostumeFromVar();
if (pp == NULL)
return BR_ERROR;
trimStack(fun->stack);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 27b38db..d431077 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -99,16 +99,16 @@ PersonaAnimation *Variable::getAnimationFromVar() {
return NULL;
}
-void newCostumeVariable(Variable &thisVar, Persona *i) {
- thisVar.unlinkVar();
- thisVar.varType = SVT_COSTUME;
- thisVar.varData.costumeHandler = i;
+void Variable::makeCostumeVariable(Persona *i) {
+ unlinkVar();
+ varType = SVT_COSTUME;
+ varData.costumeHandler = i;
}
-Persona *getCostumeFromVar(Variable &thisVar) {
+Persona *Variable::getCostumeFromVar() {
Persona *p = NULL;
- switch (thisVar.varType) {
+ switch (varType) {
case SVT_ANIM:
p = new Persona;
if (!checkNew(p))
@@ -119,16 +119,16 @@ Persona *getCostumeFromVar(Variable &thisVar) {
return NULL;
for (int iii = 0; iii < 3; iii++)
- p->animation[iii] = new PersonaAnimation(thisVar.varData.animHandler);
+ p->animation[iii] = new PersonaAnimation(varData.animHandler);
break;
case SVT_COSTUME:
- return thisVar.varData.costumeHandler;
+ return varData.costumeHandler;
break;
default:
- fatal("Expecting an animation variable; found Variable of type", typeName[thisVar.varType]);
+ fatal("Expecting an animation variable; found Variable of type", typeName[varType]);
}
return p;
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 5a03693..2537c6e 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -91,9 +91,13 @@ struct Variable {
Common::String getTextFromAnyVar();
// Animation variable
- void makeAnimationVariable(struct PersonaAnimation *i);
+ void makeAnimationVariable(PersonaAnimation *i);
struct PersonaAnimation *getAnimationFromVar();
+ // Custome variable
+ void makeCostumeVariable(Persona *i);
+ struct Persona *getCostumeFromVar();
+
};
struct VariableStack {
@@ -102,13 +106,11 @@ struct VariableStack {
};
// Setting variables
-void newCostumeVariable(Variable &thisVar, struct Persona *i);
void addVariablesInSecond(Variable &var1, Variable &var2);
void compareVariablesInSecond(const Variable &var1, Variable &var2);
// Misc.
-struct Persona *getCostumeFromVar(Variable &thisVar);
bool getBoolean(const Variable &from);
bool getValueType(int &toHere, VariableType vT, const Variable &v);
Commit: 9d85b807fbb15c850c2e5d2eb598badf565a4497
https://github.com/scummvm/scummvm/commit/9d85b807fbb15c850c2e5d2eb598badf565a4497
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move add/comparison functions to struct Variable
Changed paths:
engines/sludge/function.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index ed7280f..179dc1f 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -536,17 +536,17 @@ bool continueFunction(LoadedFunction *fun) {
switch (com) {
case SLU_PLUS:
- addVariablesInSecond(fun->stack->thisVar, fun->reg);
+ fun->reg.addVariablesInSecond(fun->stack->thisVar);
trimStack(fun->stack);
break;
case SLU_EQUALS:
- compareVariablesInSecond(fun->stack->thisVar, fun->reg);
+ fun->reg.compareVariablesInSecond(fun->stack->thisVar);
trimStack(fun->stack);
break;
case SLU_NOT_EQ:
- compareVariablesInSecond(fun->stack->thisVar, fun->reg);
+ fun->reg.compareVariablesInSecond(fun->stack->thisVar);
trimStack(fun->stack);
fun->reg.varData.intValue = !fun->reg.varData.intValue;
break;
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index d431077..88b27d0 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -191,52 +191,52 @@ bool copyStack(const Variable &from, Variable &to) {
return true;
}
-void addVariablesInSecond(Variable &var1, Variable &var2) {
- if (var1.varType == SVT_INT && var2.varType == SVT_INT) {
- var2.varData.intValue += var1.varData.intValue;
+void Variable::addVariablesInSecond(const Variable &other) {
+ if (other.varType == SVT_INT && varType == SVT_INT) {
+ varData.intValue += other.varData.intValue;
} else {
- Common::String string1 = var1.getTextFromAnyVar();
- Common::String string2 = var2.getTextFromAnyVar();
+ Common::String string1 = other.getTextFromAnyVar();
+ Common::String string2 = getTextFromAnyVar();
- var2.unlinkVar();
- var2.varData.theString = createCString(string1 + string2);
- var2.varType = SVT_STRING;
+ unlinkVar();
+ varData.theString = createCString(string1 + string2);
+ varType = SVT_STRING;
}
}
-int compareVars(const Variable &var1, const Variable &var2) {
+int Variable::compareVars(const Variable &other) const {
int re = 0;
- if (var1.varType == var2.varType) {
- switch (var1.varType) {
+ if (other.varType == varType) {
+ switch (other.varType) {
case SVT_NULL:
re = 1;
break;
case SVT_COSTUME:
- re = (var1.varData.costumeHandler == var2.varData.costumeHandler);
+ re = (other.varData.costumeHandler == varData.costumeHandler);
break;
case SVT_ANIM:
- re = (var1.varData.animHandler == var2.varData.animHandler);
+ re = (other.varData.animHandler == varData.animHandler);
break;
case SVT_STRING:
- re = (strcmp(var1.varData.theString, var2.varData.theString) == 0);
+ re = (strcmp(other.varData.theString, varData.theString) == 0);
break;
case SVT_STACK:
- re = (var1.varData.theStack == var2.varData.theStack);
+ re = (other.varData.theStack == varData.theStack);
break;
default:
- re = (var1.varData.intValue == var2.varData.intValue);
+ re = (other.varData.intValue == varData.intValue);
}
}
return re;
}
-void compareVariablesInSecond(const Variable &var1, Variable &var2) {
- var2.setVariable(SVT_INT, compareVars(var1, var2));
+void Variable::compareVariablesInSecond(const Variable &other) {
+ setVariable(SVT_INT, compareVars(other));
}
void Variable::makeTextVar(const Common::String &txt) {
@@ -250,7 +250,7 @@ bool Variable::loadStringToVar(int value) {
return (bool)(varData.theString != NULL);
}
-Common::String Variable::getTextFromAnyVar() {
+Common::String Variable::getTextFromAnyVar() const {
switch (varType) {
case SVT_STRING:
return varData.theString;
@@ -473,7 +473,7 @@ int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOf
int reply = 0;
while (*huntVar) {
- if (compareVars((*huntVar)->thisVar, va)) {
+ if (va.compareVars((*huntVar)->thisVar)) {
killMe = *huntVar;
*huntVar = killMe->next;
killMe->thisVar.unlinkVar();
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 2537c6e..c332232 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -88,7 +88,7 @@ struct Variable {
// Text variable
void makeTextVar(const Common::String &txt);
bool loadStringToVar(int value);
- Common::String getTextFromAnyVar();
+ Common::String getTextFromAnyVar() const;
// Animation variable
void makeAnimationVariable(PersonaAnimation *i);
@@ -98,6 +98,10 @@ struct Variable {
void makeCostumeVariable(Persona *i);
struct Persona *getCostumeFromVar();
+ // Add variables
+ void addVariablesInSecond(const Variable &other);
+ void compareVariablesInSecond(const Variable &other);
+ int compareVars(const Variable &other) const;
};
struct VariableStack {
@@ -105,10 +109,6 @@ struct VariableStack {
VariableStack *next;
};
-// Setting variables
-void addVariablesInSecond(Variable &var1, Variable &var2);
-void compareVariablesInSecond(const Variable &var1, Variable &var2);
-
// Misc.
bool getBoolean(const Variable &from);
Commit: 746fb3819faa7239b41c06492583bbe4296b5e02
https://github.com/scummvm/scummvm/commit/746fb3819faa7239b41c06492583bbe4296b5e02
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move value getters to struct Variable
Changed paths:
engines/sludge/bg_effects.cpp
engines/sludge/builtin.cpp
engines/sludge/function.cpp
engines/sludge/people.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/bg_effects.cpp b/engines/sludge/bg_effects.cpp
index d0c8068..d02aceb 100644
--- a/engines/sludge/bg_effects.cpp
+++ b/engines/sludge/bg_effects.cpp
@@ -196,7 +196,7 @@ bool blur_createSettings(int numParams, VariableStack *&stack) {
for (int x = 0; x < width; x++) {
int arraySlot = x + (y * width);
// s_matrixEffectData[arraySlot] = (rand() % 4);
- if (!getValueType(s_matrixEffectData[arraySlot], SVT_INT, eachNumber->thisVar)) {
+ if (!eachNumber->thisVar.getValueType(s_matrixEffectData[arraySlot], SVT_INT)) {
error = "";
break;
}
@@ -205,10 +205,10 @@ bool blur_createSettings(int numParams, VariableStack *&stack) {
trimStack(stack);
}
}
- if (error.empty() && !getValueType(s_matrixEffectDivide, SVT_INT, stack->thisVar))
+ if (error.empty() && !stack->thisVar.getValueType(s_matrixEffectDivide, SVT_INT))
error = "";
trimStack(stack);
- if (error.empty() && !getValueType(s_matrixEffectBase, SVT_INT, stack->thisVar))
+ if (error.empty() && !stack->thisVar.getValueType(s_matrixEffectBase, SVT_INT))
error = "";
trimStack(stack);
if (error.empty()) {
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 2aacead..6c98ca0 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -107,7 +107,7 @@ static BuiltReturn sayCore(int numParams, LoadedFunction *fun, bool sayIt) {
switch (numParams) {
case 3:
- if (!getValueType(fileNum, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNum, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
// fall through
@@ -115,7 +115,7 @@ static BuiltReturn sayCore(int numParams, LoadedFunction *fun, bool sayIt) {
case 2:
newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
- if (!getValueType(objT, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objT, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
p = g_sludge->_speechMan->wrapSpeech(newText, objT, fileNum, sayIt);
@@ -307,16 +307,16 @@ builtIn(blankScreen) {
builtIn(blankArea) {
UNUSEDALL
int x1, y1, x2, y2;
- if (!getValueType(y2, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y2, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x2, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x2, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(y1, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y1, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x1, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x1, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_gfxMan->blankScreen(x1, y1, x2, y2);
@@ -332,13 +332,13 @@ builtIn(darkBackground) {
builtIn(addOverlay) {
UNUSEDALL
int fileNumber, xPos, yPos;
- if (!getValueType(yPos, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(yPos, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(xPos, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(xPos, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_gfxMan->loadBackDrop(fileNumber, xPos, yPos);
@@ -348,13 +348,13 @@ builtIn(addOverlay) {
builtIn(mixOverlay) {
UNUSEDALL
int fileNumber, xPos, yPos;
- if (!getValueType(yPos, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(yPos, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(xPos, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(xPos, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_gfxMan->mixBackDrop(fileNumber, xPos, yPos);
@@ -364,10 +364,10 @@ builtIn(mixOverlay) {
builtIn(pasteImage) {
UNUSEDALL
int x, y;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
PersonaAnimation *pp = fun->stack->thisVar.getAnimationFromVar();
@@ -385,10 +385,10 @@ builtIn(pasteImage) {
builtIn(setSceneDimensions) {
UNUSEDALL
int x, y;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
if (g_sludge->_gfxMan->killResizeBackdrop(x, y)) {
@@ -402,10 +402,10 @@ builtIn(setSceneDimensions) {
builtIn(aimCamera) {
UNUSEDALL
int cameraX, cameraY;
- if (!getValueType(cameraY, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(cameraY, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(cameraX, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(cameraX, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
@@ -417,7 +417,7 @@ builtIn(aimCamera) {
builtIn(zoomCamera) {
UNUSEDALL
int z;
- if (!getValueType(z, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(z, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
@@ -456,10 +456,10 @@ builtIn(substring) {
//debugOut ("BUILTIN: substring\n");
- if (!getValueType(length, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(length, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(start, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(start, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
wholeString = fun->stack->thisVar.getTextFromAnyVar();
@@ -690,7 +690,7 @@ builtIn(random) {
UNUSEDALL
int num;
- if (!getValueType(num, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(num, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
@@ -701,13 +701,13 @@ builtIn(random) {
}
static bool getRGBParams(int &red, int &green, int &blue, LoadedFunction *fun) {
- if (!getValueType(blue, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(blue, SVT_INT))
return false;
trimStack(fun->stack);
- if (!getValueType(green, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(green, SVT_INT))
return false;
trimStack(fun->stack);
- if (!getValueType(red, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(red, SVT_INT))
return false;
trimStack(fun->stack);
return true;
@@ -773,14 +773,14 @@ builtIn(setBurnColour) {
builtIn(setFont) {
UNUSEDALL
int fileNumber, newHeight;
- if (!getValueType(newHeight, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(newHeight, SVT_INT))
return BR_ERROR;
// newDebug (" Height:", newHeight);
trimStack(fun->stack);
Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
// newDebug (" Character supported:", newText);
trimStack(fun->stack);
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
// newDebug (" File:", fileNumber);
trimStack(fun->stack);
@@ -805,10 +805,10 @@ builtIn(pasteString) {
Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
int y, x;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
if (x == IN_THE_CENTRE)
@@ -829,7 +829,7 @@ builtIn(anim) {
// Only remaining paramter is the file number
int fileNumber;
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
@@ -898,7 +898,7 @@ builtIn(launch) {
builtIn(pause) {
UNUSEDALL
int theTime;
- if (!getValueType(theTime, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(theTime, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
if (theTime > 0) {
@@ -918,10 +918,10 @@ builtIn(completeTimers) {
builtIn(callEvent) {
UNUSEDALL
int obj1, obj2;
- if (!getValueType(obj2, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj2, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj1, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj1, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -971,7 +971,7 @@ builtIn(playMovie) {
if (movieIsPlaying)
return BR_PAUSE;
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1010,13 +1010,13 @@ builtIn(pauseMovie) {
builtIn(startMusic) {
UNUSEDALL
int fromTrack, musChan, fileNumber;
- if (!getValueType(fromTrack, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fromTrack, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(musChan, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(musChan, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
if (!g_sludge->_soundMan->playMOD(fileNumber, musChan, fromTrack))
@@ -1027,7 +1027,7 @@ builtIn(startMusic) {
builtIn(stopMusic) {
UNUSEDALL
int v;
- if (!getValueType(v, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->stopMOD(v);
@@ -1037,10 +1037,10 @@ builtIn(stopMusic) {
builtIn(setMusicVolume) {
UNUSEDALL
int musChan, v;
- if (!getValueType(v, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(musChan, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(musChan, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->setMusicVolume(musChan, v);
@@ -1050,7 +1050,7 @@ builtIn(setMusicVolume) {
builtIn(setDefaultMusicVolume) {
UNUSEDALL
int v;
- if (!getValueType(v, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->setDefaultMusicVolume(v);
@@ -1060,7 +1060,7 @@ builtIn(setDefaultMusicVolume) {
builtIn(playSound) {
UNUSEDALL
int fileNumber;
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
if (!g_sludge->_soundMan->startSound(fileNumber, false))
@@ -1076,7 +1076,7 @@ builtIn(loopSound) {
return BR_ERROR;
} else if (numParams < 2) {
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
if (!g_sludge->_soundMan->startSound(fileNumber, true))
@@ -1091,12 +1091,12 @@ builtIn(loopSound) {
// Should we loop?
if (fun->stack->thisVar.varType != SVT_FILE) {
- getValueType(doLoop, SVT_INT, fun->stack->thisVar);
+ fun->stack->thisVar.getValueType(doLoop, SVT_INT);
trimStack(fun->stack);
numParams--;
}
while (numParams) {
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar)) {
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE)) {
fatal("Illegal parameter given built-in function loopSound().");
return BR_ERROR;
}
@@ -1129,7 +1129,7 @@ builtIn(loopSound) {
builtIn(stopSound) {
UNUSEDALL
int v;
- if (!getValueType(v, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->huntKillSound(v);
@@ -1139,7 +1139,7 @@ builtIn(stopSound) {
builtIn(setDefaultSoundVolume) {
UNUSEDALL
int v;
- if (!getValueType(v, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->setDefaultSoundVolume(v);
@@ -1149,10 +1149,10 @@ builtIn(setDefaultSoundVolume) {
builtIn(setSoundVolume) {
UNUSEDALL
int musChan, v;
- if (!getValueType(v, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(musChan, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(musChan, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->setSoundVolume(musChan, v);
@@ -1162,13 +1162,13 @@ builtIn(setSoundVolume) {
builtIn(setSoundLoopPoints) {
UNUSEDALL
int musChan, theEnd, theStart;
- if (!getValueType(theEnd, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(theEnd, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(theStart, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(theStart, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(musChan, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(musChan, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->setSoundLoop(musChan, theStart, theEnd);
@@ -1182,7 +1182,7 @@ builtIn(setFloor) {
UNUSEDALL
if (fun->stack->thisVar.varType == SVT_FILE) {
int v;
- getValueType(v, SVT_FILE, fun->stack->thisVar);
+ fun->stack->thisVar.getValueType(v, SVT_FILE);
trimStack(fun->stack);
if (!g_sludge->_floorMan->setFloor(v))
return BR_ERROR;
@@ -1203,7 +1203,7 @@ builtIn(setZBuffer) {
UNUSEDALL
if (fun->stack->thisVar.varType == SVT_FILE) {
int v;
- getValueType(v, SVT_FILE, fun->stack->thisVar);
+ fun->stack->thisVar.getValueType(v, SVT_FILE);
trimStack(fun->stack);
if (!g_sludge->_gfxMan->setZBuffer(v))
return BR_ERROR;
@@ -1218,7 +1218,7 @@ builtIn(setLightMap) {
UNUSEDALL
switch (numParams) {
case 2:
- if (!getValueType(g_sludge->_gfxMan->_lightMapMode, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(g_sludge->_gfxMan->_lightMapMode, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_gfxMan->_lightMapMode %= LIGHTMAPMODE_NUM;
@@ -1227,7 +1227,7 @@ builtIn(setLightMap) {
case 1:
if (fun->stack->thisVar.varType == SVT_FILE) {
int v;
- getValueType(v, SVT_FILE, fun->stack->thisVar);
+ fun->stack->thisVar.getValueType(v, SVT_FILE);
trimStack(fun->stack);
if (!g_sludge->_gfxMan->loadLightMap(v))
return BR_ERROR;
@@ -1252,7 +1252,7 @@ builtIn(setLightMap) {
builtIn(setSpeechMode) {
UNUSEDALL
int speechMode;
- if (!getValueType(speechMode, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(speechMode, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
if (speechMode < 0 || speechMode > 2) {
@@ -1296,7 +1296,7 @@ builtIn(rename) {
Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
int objT;
trimStack(fun->stack);
- if (!getValueType(objT, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objT, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
ObjectType *o = g_sludge->_objMan->findObjectType(objT);
@@ -1308,7 +1308,7 @@ builtIn(rename) {
builtIn(getObjectX) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1329,7 +1329,7 @@ builtIn(getObjectX) {
builtIn(getObjectY) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1350,28 +1350,28 @@ builtIn(getObjectY) {
builtIn(addScreenRegion) {
UNUSEDALL
int sX, sY, x1, y1, x2, y2, di, objectNumber;
- if (!getValueType(di, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(di, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(sY, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(sY, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(sX, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(sX, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(y2, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y2, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x2, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x2, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(y1, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y1, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x1, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x1, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
if (g_sludge->_regionMan->addScreenRegion(x1, y1, x2, y2, sX, sY, di, objectNumber))
@@ -1383,7 +1383,7 @@ builtIn(addScreenRegion) {
builtIn(removeScreenRegion) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_regionMan->removeScreenRegion(objectNumber);
@@ -1412,13 +1412,13 @@ builtIn(addCharacter) {
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
if (g_sludge->_peopleMan->addPerson(x, y, objectNumber, p))
@@ -1429,7 +1429,7 @@ builtIn(addCharacter) {
builtIn(hideCharacter) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->setShown(false, objectNumber);
@@ -1439,7 +1439,7 @@ builtIn(hideCharacter) {
builtIn(showCharacter) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->setShown(true, objectNumber);
@@ -1456,10 +1456,10 @@ builtIn(removeAllCharacters) {
builtIn(setCharacterDrawMode) {
UNUSEDALL
int obj, di;
- if (!getValueType(di, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(di, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->setDrawMode(di, obj);
@@ -1468,10 +1468,10 @@ builtIn(setCharacterDrawMode) {
builtIn(setCharacterTransparency) {
UNUSEDALL
int obj, x;
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->setPersonTransparency(obj, x);
@@ -1480,19 +1480,19 @@ builtIn(setCharacterTransparency) {
builtIn(setCharacterColourise) {
UNUSEDALL
int obj, r, g, b, mix;
- if (!getValueType(mix, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(mix, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(b, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(b, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(g, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(g, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(r, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(r, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->setPersonColourise(obj, r, g, b, mix);
@@ -1502,10 +1502,10 @@ builtIn(setCharacterColourise) {
builtIn(setScale) {
UNUSEDALL
int val1, val2;
- if (!getValueType(val2, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(val2, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(val1, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(val1, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->setScale((int16)val1, (int16)val2);
@@ -1515,7 +1515,7 @@ builtIn(setScale) {
builtIn(stopCharacter) {
UNUSEDALL
int obj;
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1527,7 +1527,7 @@ builtIn(stopCharacter) {
builtIn(pasteCharacter) {
UNUSEDALL
int obj;
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1557,7 +1557,7 @@ builtIn(animate) {
if (pp == NULL)
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->animatePerson(obj, pp);
@@ -1572,7 +1572,7 @@ builtIn(setCostume) {
if (pp == NULL)
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->animatePerson(obj, pp);
@@ -1582,10 +1582,10 @@ builtIn(setCostume) {
builtIn(floatCharacter) {
UNUSEDALL
int obj, di;
- if (!getValueType(di, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(di, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->floatCharacter(di, obj));
@@ -1595,10 +1595,10 @@ builtIn(floatCharacter) {
builtIn(setCharacterWalkSpeed) {
UNUSEDALL
int obj, di;
- if (!getValueType(di, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(di, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->setCharacterWalkSpeed(di, obj));
@@ -1608,10 +1608,10 @@ builtIn(setCharacterWalkSpeed) {
builtIn(turnCharacter) {
UNUSEDALL
int obj, di;
- if (!getValueType(di, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(di, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->turnPersonToFace(obj, di));
@@ -1621,10 +1621,10 @@ builtIn(turnCharacter) {
builtIn(setCharacterExtra) {
UNUSEDALL
int obj, di;
- if (!getValueType(di, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(di, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, g_sludge->_peopleMan->setPersonExtra(obj, di));
@@ -1634,7 +1634,7 @@ builtIn(setCharacterExtra) {
builtIn(removeCharacter) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_peopleMan->removeOneCharacter(objectNumber);
@@ -1646,13 +1646,13 @@ static BuiltReturn moveChr(int numParams, LoadedFunction *fun, bool force, bool
case 3: {
int x, y, objectNumber;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1672,10 +1672,10 @@ static BuiltReturn moveChr(int numParams, LoadedFunction *fun, bool force, bool
int toObj, objectNumber;
ScreenRegion*reggie;
- if (!getValueType(toObj, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(toObj, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
reggie = g_sludge->_regionMan->getRegionForObject(toObj);
@@ -1744,7 +1744,7 @@ builtIn(statusText) {
builtIn(lightStatus) {
UNUSEDALL
int val;
- if (!getValueType(val, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(val, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
setLitStatus(val);
@@ -1754,10 +1754,10 @@ builtIn(lightStatus) {
builtIn(positionStatus) {
UNUSEDALL
int x, y;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
positionStatus(x, y);
@@ -1767,7 +1767,7 @@ builtIn(positionStatus) {
builtIn(alignStatus) {
UNUSEDALL
int val;
- if (!getValueType(val, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(val, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
nowStatus->alignStatus = (int16)val;
@@ -1781,7 +1781,7 @@ static bool getFuncNumForCallback(int numParams, LoadedFunction *fun, int &funct
break;
case 1:
- if (!getValueType(functionNum, SVT_FUNC, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(functionNum, SVT_FUNC))
return false;
trimStack(fun->stack);
break;
@@ -1902,7 +1902,7 @@ builtIn(stringWidth) {
builtIn(hardScroll) {
UNUSEDALL
int v;
- if (!getValueType(v, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_gfxMan->hardScroll(v);
@@ -1912,7 +1912,7 @@ builtIn(hardScroll) {
builtIn(isScreenRegion) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, g_sludge->_regionMan->getRegionForObject(objectNumber) != NULL);
@@ -1922,7 +1922,7 @@ builtIn(isScreenRegion) {
builtIn(setSpeechSpeed) {
UNUSEDALL
int number;
- if (!getValueType(number, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(number, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_speechMan->setSpeechSpeed(number * 0.01);
@@ -1933,7 +1933,7 @@ builtIn(setSpeechSpeed) {
builtIn(setFontSpacing) {
UNUSEDALL
int fontSpaceI;
- if (!getValueType(fontSpaceI, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fontSpaceI, SVT_INT))
return BR_ERROR;
g_sludge->_txtMan->setFontSpace(fontSpaceI);
trimStack(fun->stack);
@@ -1944,7 +1944,7 @@ builtIn(setFontSpacing) {
builtIn(transitionLevel) {
UNUSEDALL
int brightnessLevel;
- if (!getValueType(brightnessLevel, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(brightnessLevel, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
@@ -1957,7 +1957,7 @@ builtIn(transitionLevel) {
builtIn(captureAllKeys) {
UNUSEDALL
// This built-in function doesn't have any effect any more, we capture all keys by default
- bool captureAllKeysDeprecated = getBoolean(fun->stack->thisVar);
+ bool captureAllKeysDeprecated = fun->stack->thisVar.getBoolean();
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, captureAllKeysDeprecated);
return BR_CONTINUE;
@@ -1966,10 +1966,10 @@ builtIn(captureAllKeys) {
builtIn(spinCharacter) {
UNUSEDALL
int number, objectNumber;
- if (!getValueType(number, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(number, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -1989,7 +1989,7 @@ builtIn(spinCharacter) {
builtIn(getCharacterDirection) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
@@ -2004,7 +2004,7 @@ builtIn(getCharacterDirection) {
builtIn(isCharacter) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
@@ -2015,7 +2015,7 @@ builtIn(isCharacter) {
builtIn(normalCharacter) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
@@ -2031,7 +2031,7 @@ builtIn(normalCharacter) {
builtIn(isMoving) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
OnScreenPerson *thisPerson = g_sludge->_peopleMan->findPerson(objectNumber);
@@ -2046,10 +2046,10 @@ builtIn(isMoving) {
builtIn(fetchEvent) {
UNUSEDALL
int obj1, obj2;
- if (!getValueType(obj2, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj2, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(obj1, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(obj1, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -2104,7 +2104,7 @@ builtIn(renameFile) {
builtIn(cacheSound) {
UNUSEDALL
int fileNumber;
- if (!getValueType(fileNumber, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(fileNumber, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
if (g_sludge->_soundMan->cacheSound(fileNumber) == -1)
@@ -2117,10 +2117,10 @@ builtIn(burnString) {
Common::String newText = fun->stack->thisVar.getTextFromAnyVar();
trimStack(fun->stack);
int y, x;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
if (x == IN_THE_CENTRE)
@@ -2132,10 +2132,10 @@ builtIn(burnString) {
builtIn(setCharacterSpinSpeed) {
UNUSEDALL
int speed, who;
- if (!getValueType(speed, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(speed, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(who, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(who, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -2153,10 +2153,10 @@ builtIn(setCharacterSpinSpeed) {
builtIn(setCharacterAngleOffset) {
UNUSEDALL
int angle, who;
- if (!getValueType(angle, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(angle, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(who, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(who, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -2174,7 +2174,7 @@ builtIn(setCharacterAngleOffset) {
builtIn(transitionMode) {
UNUSEDALL
int n;
- if (!getValueType(n, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(n, SVT_INT))
return BR_ERROR;
g_sludge->_gfxMan->setFadeMode(n);
trimStack(fun->stack);
@@ -2252,7 +2252,7 @@ builtIn(loadCustomData) {
builtIn(setCustomEncoding) {
UNUSEDALL
int n;
- if (!getValueType(n, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(n, SVT_INT))
return BR_ERROR;
CustomSaveHelper::_saveEncoding = n;
trimStack(fun->stack);
@@ -2263,7 +2263,7 @@ builtIn(setCustomEncoding) {
builtIn(freeSound) {
UNUSEDALL
int v;
- if (!getValueType(v, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
g_sludge->_soundMan->huntKillFreeSound(v);
@@ -2277,13 +2277,13 @@ builtIn(parallaxAdd) {
return BR_ERROR;
} else {
int wrapX, wrapY, v;
- if (!getValueType(wrapY, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(wrapY, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(wrapX, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(wrapX, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(v, SVT_FILE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(v, SVT_FILE))
return BR_ERROR;
trimStack(fun->stack);
@@ -2304,10 +2304,10 @@ builtIn(parallaxClear) {
builtIn(getPixelColour) {
UNUSEDALL
int x, y;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
@@ -2352,7 +2352,7 @@ builtIn(makeFastArray) {
builtIn(getCharacterScale) {
UNUSEDALL
int objectNumber;
- if (!getValueType(objectNumber, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objectNumber, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
@@ -2410,10 +2410,10 @@ builtIn(getFramesPerSecond) {
builtIn(showThumbnail) {
UNUSEDALL
int x, y;
- if (!getValueType(y, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(y, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(x, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(x, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
@@ -2428,10 +2428,10 @@ builtIn(showThumbnail) {
builtIn(setThumbnailSize) {
UNUSEDALL
int thumbHeight, thumbWidth;
- if (!getValueType(thumbHeight, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(thumbHeight, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(thumbWidth, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(thumbWidth, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
if (!g_sludge->_gfxMan->setThumbnailSize(thumbWidth, thumbHeight)) {
@@ -2445,10 +2445,10 @@ builtIn(setThumbnailSize) {
builtIn(hasFlag) {
UNUSEDALL
int objNum, flagIndex;
- if (!getValueType(flagIndex, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(flagIndex, SVT_INT))
return BR_ERROR;
trimStack(fun->stack);
- if (!getValueType(objNum, SVT_OBJTYPE, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(objNum, SVT_OBJTYPE))
return BR_ERROR;
trimStack(fun->stack);
ObjectType *objT = g_sludge->_objMan->findObjectType(objNum);
@@ -2472,7 +2472,7 @@ builtIn(snapshotClear) {
builtIn(bodgeFilenames) {
UNUSEDALL
bool lastValue = allowAnyFilename;
- allowAnyFilename = getBoolean(fun->stack->thisVar);
+ allowAnyFilename = fun->stack->thisVar.getBoolean();
trimStack(fun->stack);
fun->reg.setVariable(SVT_INT, lastValue);
return BR_CONTINUE;
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 179dc1f..88171a5 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -296,13 +296,13 @@ bool continueFunction(LoadedFunction *fun) {
case SLU_AND:
fun->reg.setVariable(SVT_INT,
- getBoolean(fun->reg) && getBoolean(fun->stack->thisVar));
+ fun->reg.getBoolean() && fun->stack->thisVar.getBoolean());
trimStack(fun->stack);
break;
case SLU_OR:
fun->reg.setVariable(SVT_INT,
- getBoolean(fun->reg) || getBoolean(fun->stack->thisVar));
+ fun->reg.getBoolean() || fun->stack->thisVar.getBoolean());
trimStack(fun->stack);
break;
@@ -346,7 +346,7 @@ bool continueFunction(LoadedFunction *fun) {
return fatal(ERROR_INDEX_EMPTY);
} else {
int ii;
- if (!getValueType(ii, SVT_INT, fun->reg))
+ if (!fun->reg.getValueType(ii, SVT_INT))
return false;
Variable *grab =
(fun->stack->thisVar.varType == SVT_FASTARRAY) ?
@@ -365,14 +365,14 @@ bool continueFunction(LoadedFunction *fun) {
int kk;
switch (com) {
case SLU_INCREMENT_INDEX:
- if (!getValueType(kk, SVT_INT, *grab))
+ if (!grab->getValueType(kk, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, kk);
grab->varData.intValue = kk + 1;
break;
case SLU_DECREMENT_INDEX:
- if (!getValueType(kk, SVT_INT, *grab))
+ if (!grab->getValueType(kk, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, kk);
grab->varData.intValue = kk - 1;
@@ -398,7 +398,7 @@ bool continueFunction(LoadedFunction *fun) {
return fatal(ERROR_INDEX_EMPTY);
} else {
int ii;
- if (!getValueType(ii, SVT_INT, fun->reg))
+ if (!fun->reg.getValueType(ii, SVT_INT))
return false;
if (!stackSetByIndex(
fun->stack->thisVar.varData.theStack->first, ii,
@@ -412,7 +412,7 @@ bool continueFunction(LoadedFunction *fun) {
case SVT_FASTARRAY: {
int ii;
- if (!getValueType(ii, SVT_INT, fun->reg))
+ if (!fun->reg.getValueType(ii, SVT_INT))
return false;
Variable *v = fastArrayGetByIndex(
fun->stack->thisVar.varData.fastArray, ii);
@@ -435,7 +435,7 @@ bool continueFunction(LoadedFunction *fun) {
case SLU_INCREMENT_LOCAL: {
int ii;
- if (!getValueType(ii, SVT_INT, fun->localVars[param]))
+ if (!fun->localVars[param].getValueType(ii, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, ii);
fun->localVars[param].setVariable(SVT_INT, ii + 1);
@@ -444,7 +444,7 @@ bool continueFunction(LoadedFunction *fun) {
case SLU_INCREMENT_GLOBAL: {
int ii;
- if (!getValueType(ii, SVT_INT, globalVars[param]))
+ if (!globalVars[param].getValueType(ii, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, ii);
globalVars[param].setVariable(SVT_INT, ii + 1);
@@ -453,7 +453,7 @@ bool continueFunction(LoadedFunction *fun) {
case SLU_DECREMENT_LOCAL: {
int ii;
- if (!getValueType(ii, SVT_INT, fun->localVars[param]))
+ if (!fun->localVars[param].getValueType(ii, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, ii);
fun->localVars[param].setVariable(SVT_INT, ii - 1);
@@ -462,7 +462,7 @@ bool continueFunction(LoadedFunction *fun) {
case SLU_DECREMENT_GLOBAL: {
int ii;
- if (!getValueType(ii, SVT_INT, globalVars[param]))
+ if (!globalVars[param].getValueType(ii, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, ii);
globalVars[param].setVariable(SVT_INT, ii - 1);
@@ -495,11 +495,11 @@ bool continueFunction(LoadedFunction *fun) {
break;
case SLU_NOT:
- fun->reg.setVariable(SVT_INT, !getBoolean(fun->reg));
+ fun->reg.setVariable(SVT_INT, !fun->reg.getBoolean());
break;
case SLU_BR_ZERO:
- if (!getBoolean(fun->reg)) {
+ if (!fun->reg.getBoolean()) {
advanceNow = false;
fun->runThisLine = param;
}
@@ -512,7 +512,7 @@ bool continueFunction(LoadedFunction *fun) {
case SLU_NEGATIVE: {
int i;
- if (!getValueType(i, SVT_INT, fun->reg))
+ if (!fun->reg.getValueType(i, SVT_INT))
return false;
fun->reg.setVariable(SVT_INT, -i);
}
@@ -552,9 +552,9 @@ bool continueFunction(LoadedFunction *fun) {
break;
default:
- if (!getValueType(firstValue, SVT_INT, fun->stack->thisVar))
+ if (!fun->stack->thisVar.getValueType(firstValue, SVT_INT))
return false;
- if (!getValueType(secondValue, SVT_INT, fun->reg))
+ if (!fun->reg.getValueType(secondValue, SVT_INT))
return false;
trimStack(fun->stack);
diff --git a/engines/sludge/people.cpp b/engines/sludge/people.cpp
index 658954a..433ab2d 100644
--- a/engines/sludge/people.cpp
+++ b/engines/sludge/people.cpp
@@ -76,10 +76,10 @@ PersonaAnimation::PersonaAnimation(int num, VariableStack *&stacky) {
} else if (stacky->thisVar.varType == SVT_FUNC) {
frames[a].noise = -stacky->thisVar.varData.intValue;
} else if (stacky->thisVar.varType == SVT_STACK) {
- getValueType(frameNum, SVT_INT, stacky->thisVar.varData.theStack->first->thisVar);
- getValueType(howMany, SVT_INT, stacky->thisVar.varData.theStack->first->next->thisVar);
+ stacky->thisVar.varData.theStack->first->thisVar.getValueType(frameNum, SVT_INT);
+ stacky->thisVar.varData.theStack->first->next->thisVar.getValueType(howMany, SVT_INT);
} else {
- getValueType(frameNum, SVT_INT, stacky->thisVar);
+ stacky->thisVar.getValueType(frameNum, SVT_INT);
howMany = 1;
}
trimStack(stacky);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 88b27d0..af6d388 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -309,22 +309,22 @@ Common::String Variable::getTextFromAnyVar() const {
return typeName[varType];
}
-bool getBoolean(const Variable &from) {
- switch (from.varType) {
+bool Variable::getBoolean() const {
+ switch (varType) {
case SVT_NULL:
return false;
case SVT_INT:
- return (bool)(from.varData.intValue != 0);
+ return (bool)(varData.intValue != 0);
case SVT_STACK:
- return (bool)(from.varData.theStack->first != NULL);
+ return (bool)(varData.theStack->first != NULL);
case SVT_STRING:
- return (bool)(from.varData.theString[0] != 0);
+ return (bool)(varData.theString[0] != 0);
case SVT_FASTARRAY:
- return (bool)(from.varData.fastArray->size != 0);
+ return (bool)(varData.fastArray->size != 0);
default:
break;
@@ -500,18 +500,17 @@ VariableStack *stackFindLast(VariableStack *hunt) {
return hunt;
}
-bool getValueType(int &toHere, VariableType vT, const Variable &v) {
- //if (! v) return false;
- if (v.varType != vT) {
+bool Variable::getValueType(int &toHere, VariableType vT) const {
+ if (varType != vT) {
Common::String e1 = "Can only perform specified operation on a value which is of type ";
e1 += typeName[vT];
Common::String e2 = "... value supplied was of type ";
- e2 += typeName[v.varType];
+ e2 += typeName[varType];
fatal(e1, e2);
return false;
}
- toHere = v.varData.intValue;
+ toHere = varData.intValue;
return true;
}
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index c332232..febd942 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -88,7 +88,6 @@ struct Variable {
// Text variable
void makeTextVar(const Common::String &txt);
bool loadStringToVar(int value);
- Common::String getTextFromAnyVar() const;
// Animation variable
void makeAnimationVariable(PersonaAnimation *i);
@@ -102,6 +101,11 @@ struct Variable {
void addVariablesInSecond(const Variable &other);
void compareVariablesInSecond(const Variable &other);
int compareVars(const Variable &other) const;
+
+ // General getters
+ Common::String getTextFromAnyVar() const;
+ bool getBoolean() const;
+ bool getValueType(int &toHere, VariableType vT) const;
};
struct VariableStack {
@@ -109,11 +113,6 @@ struct VariableStack {
VariableStack *next;
};
-// Misc.
-
-bool getBoolean(const Variable &from);
-bool getValueType(int &toHere, VariableType vT, const Variable &v);
-
// Stacky stuff
bool addVarToStack(const Variable &va, VariableStack *&thisStack);
Commit: 399ff4788cd5a03d37ac1945ed76bc47bc8d4218
https://github.com/scummvm/scummvm/commit/399ff4788cd5a03d37ac1945ed76bc47bc8d4218
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move fastarray functions to struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 6c98ca0..61f1726 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -2329,7 +2329,7 @@ builtIn(makeFastArray) {
UNUSEDALL
switch (fun->stack->thisVar.varType) {
case SVT_STACK: {
- bool success = makeFastArrayFromStack(fun->reg, fun->stack->thisVar.varData.theStack);
+ bool success = fun->reg.makeFastArrayFromStack(fun->stack->thisVar.varData.theStack);
trimStack(fun->stack);
return success ? BR_CONTINUE : BR_ERROR;
}
@@ -2338,7 +2338,7 @@ builtIn(makeFastArray) {
case SVT_INT: {
int i = fun->stack->thisVar.varData.intValue;
trimStack(fun->stack);
- return makeFastArraySize(fun->reg, i) ? BR_CONTINUE : BR_ERROR;
+ return fun->reg.makeFastArraySize(i) ? BR_CONTINUE : BR_ERROR;
}
break;
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index af6d388..50bd52e 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -386,25 +386,25 @@ Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex) {
return &vS->fastVariables[theIndex];
}
-bool makeFastArraySize(Variable &to, int size) {
+bool Variable::makeFastArraySize(int size) {
if (size < 0)
return fatal("Can't create a fast array with a negative number of elements!");
- to.unlinkVar();
- to.varType = SVT_FASTARRAY;
- to.varData.fastArray = new FastArrayHandler;
- if (!checkNew(to.varData.fastArray))
+ unlinkVar();
+ varType = SVT_FASTARRAY;
+ varData.fastArray = new FastArrayHandler;
+ if (!checkNew(varData.fastArray))
return false;
- to.varData.fastArray->fastVariables = new Variable[size];
- if (!checkNew(to.varData.fastArray->fastVariables))
+ varData.fastArray->fastVariables = new Variable[size];
+ if (!checkNew(varData.fastArray->fastVariables))
return false;
- to.varData.fastArray->size = size;
- to.varData.fastArray->timesUsed = 1;
+ varData.fastArray->size = size;
+ varData.fastArray->timesUsed = 1;
return true;
}
-bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky) {
+bool Variable::makeFastArrayFromStack(const StackHandler *stacky) {
int size = stackSize(stacky);
- if (!makeFastArraySize(to, size))
+ if (!makeFastArraySize(size))
return false;
// Now let's fill up the new array
@@ -412,7 +412,7 @@ bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky) {
VariableStack *allV = stacky->first;
size = 0;
while (allV) {
- to.varData.fastArray->fastVariables[size].copyMain(allV->thisVar);
+ varData.fastArray->fastVariables[size].copyMain(allV->thisVar);
size++;
allV = allV->next;
}
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index febd942..de7d2ef 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -97,6 +97,10 @@ struct Variable {
void makeCostumeVariable(Persona *i);
struct Persona *getCostumeFromVar();
+ // Fast array variable
+ bool makeFastArrayFromStack(const StackHandler *stacky);
+ bool makeFastArraySize(int size);
+
// Add variables
void addVariablesInSecond(const Variable &other);
void compareVariablesInSecond(const Variable &other);
@@ -127,8 +131,6 @@ bool stackSetByIndex(VariableStack *, uint, const Variable &);
Variable *stackGetByIndex(VariableStack *, uint);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
-bool makeFastArrayFromStack(Variable &to, const StackHandler *stacky);
-bool makeFastArraySize(Variable &to, int size);
Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex);
// load & save
Commit: dc18ec2fd08ad10e022dc442228b5914701a3d2f
https://github.com/scummvm/scummvm/commit/dc18ec2fd08ad10e022dc442228b5914701a3d2f
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move FastArray getter to struct FastArrayHandler
Changed paths:
engines/sludge/function.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 88171a5..400bf80 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -350,12 +350,8 @@ bool continueFunction(LoadedFunction *fun) {
return false;
Variable *grab =
(fun->stack->thisVar.varType == SVT_FASTARRAY) ?
- fastArrayGetByIndex(
- fun->stack->thisVar.varData.fastArray,
- ii) :
- stackGetByIndex(
- fun->stack->thisVar.varData.theStack->first,
- ii);
+ fun->stack->thisVar.varData.fastArray->fastArrayGetByIndex(ii) :
+ stackGetByIndex(fun->stack->thisVar.varData.theStack->first, ii);
trimStack(fun->stack);
@@ -414,8 +410,7 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!fun->reg.getValueType(ii, SVT_INT))
return false;
- Variable *v = fastArrayGetByIndex(
- fun->stack->thisVar.varData.fastArray, ii);
+ Variable *v = fun->stack->thisVar.varData.fastArray->fastArrayGetByIndex(ii);
if (v == NULL)
return fatal("Not within bounds of fast array.");
if (!v->copyFrom(fun->stack->next->thisVar))
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 50bd52e..f822015 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -380,10 +380,10 @@ bool Variable::copyFrom(const Variable &from) {
return copyMain(from);
}
-Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex) {
- if ((int)theIndex >= vS->size)
+Variable *FastArrayHandler::fastArrayGetByIndex(uint theIndex) {
+ if ((int)theIndex >= size)
return NULL;
- return &vS->fastVariables[theIndex];
+ return &fastVariables[theIndex];
}
bool Variable::makeFastArraySize(int size) {
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index de7d2ef..0519893 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -48,6 +48,8 @@ struct FastArrayHandler {
struct Variable *fastVariables;
int size;
int timesUsed;
+
+ Variable *fastArrayGetByIndex(uint theIndex);
};
struct StackHandler {
@@ -131,8 +133,6 @@ bool stackSetByIndex(VariableStack *, uint, const Variable &);
Variable *stackGetByIndex(VariableStack *, uint);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
-Variable *fastArrayGetByIndex(FastArrayHandler *vS, uint theIndex);
-
// load & save
void saveStack(VariableStack *vs, Common::WriteStream *stream);
VariableStack *loadStack(Common::SeekableReadStream *stream, VariableStack **last);
Commit: 9fb57f944d1105c084b4cf54e037a66b9eb34740
https://github.com/scummvm/scummvm/commit/9fb57f944d1105c084b4cf54e037a66b9eb34740
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move stack variable getter/setter to VariableStack
Changed paths:
engines/sludge/function.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/function.cpp b/engines/sludge/function.cpp
index 400bf80..553e59d 100644
--- a/engines/sludge/function.cpp
+++ b/engines/sludge/function.cpp
@@ -351,7 +351,7 @@ bool continueFunction(LoadedFunction *fun) {
Variable *grab =
(fun->stack->thisVar.varType == SVT_FASTARRAY) ?
fun->stack->thisVar.varData.fastArray->fastArrayGetByIndex(ii) :
- stackGetByIndex(fun->stack->thisVar.varData.theStack->first, ii);
+ fun->stack->thisVar.varData.theStack->first->stackGetByIndex(ii);
trimStack(fun->stack);
@@ -396,9 +396,7 @@ bool continueFunction(LoadedFunction *fun) {
int ii;
if (!fun->reg.getValueType(ii, SVT_INT))
return false;
- if (!stackSetByIndex(
- fun->stack->thisVar.varData.theStack->first, ii,
- fun->stack->next->thisVar)) {
+ if (!fun->stack->thisVar.varData.theStack->first->stackSetByIndex(ii, fun->stack->next->thisVar)) {
return false;
}
trimStack(fun->stack);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index f822015..9b72185 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -448,7 +448,8 @@ bool addVarToStackQuick(Variable &va, VariableStack *&thisStack) {
return true;
}
-bool stackSetByIndex(VariableStack *vS, uint theIndex, const Variable &va) {
+bool VariableStack::stackSetByIndex(uint theIndex, const Variable &va) {
+ VariableStack *vS = this;
while (theIndex--) {
vS = vS->next;
if (!vS)
@@ -457,7 +458,8 @@ bool stackSetByIndex(VariableStack *vS, uint theIndex, const Variable &va) {
return vS->thisVar.copyFrom(va);
}
-Variable *stackGetByIndex(VariableStack *vS, uint theIndex) {
+Variable *VariableStack::stackGetByIndex(uint theIndex) {
+ VariableStack *vS = this;
while (theIndex--) {
vS = vS->next;
if (!vS) {
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 0519893..dafc761 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -117,6 +117,10 @@ struct Variable {
struct VariableStack {
Variable thisVar;
VariableStack *next;
+
+ // Variable getter & setter
+ bool stackSetByIndex(uint, const Variable &);
+ Variable *stackGetByIndex(uint);
};
// Stacky stuff
@@ -129,8 +133,6 @@ int deleteVarFromStack(const Variable &va, VariableStack *&thisStack,
VariableStack *stackFindLast(VariableStack *hunt);
bool copyStack(const Variable &from, Variable &to);
int stackSize(const StackHandler *me);
-bool stackSetByIndex(VariableStack *, uint, const Variable &);
-Variable *stackGetByIndex(VariableStack *, uint);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
// load & save
Commit: ca583ebfcfc420d0b303256a9a088bb2327ea907
https://github.com/scummvm/scummvm/commit/ca583ebfcfc420d0b303256a9a088bb2327ea907
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move last stack finding function to struct VariableStack
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 61f1726..bf7c422 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -609,7 +609,8 @@ builtIn(deleteFromStack) {
fun->reg.setVariable(SVT_INT, deleteVarFromStack(fun->stack->thisVar, fun->stack->next->thisVar.varData.theStack->first, false));
// Horrible hacking because 'last' value might now be wrong!
- fun->stack->next->thisVar.varData.theStack->last = stackFindLast(fun->stack->next->thisVar.varData.theStack->first);
+ VariableStack *nextFirstStack = fun->stack->next->thisVar.varData.theStack->first;
+ fun->stack->next->thisVar.varData.theStack->last = (nextFirstStack == NULL) ? NULL : nextFirstStack->stackFindLast();
trimStack(fun->stack);
trimStack(fun->stack);
@@ -627,7 +628,8 @@ builtIn(deleteAllFromStack) {
fun->reg.setVariable(SVT_INT, deleteVarFromStack(fun->stack->thisVar, fun->stack->next->thisVar.varData.theStack->first, true));
// Horrible hacking because 'last' value might now be wrong!
- fun->stack->next->thisVar.varData.theStack->last = stackFindLast(fun->stack->next->thisVar.varData.theStack->first);
+ VariableStack *nextFirstStack = fun->stack->next->thisVar.varData.theStack->first;
+ fun->stack->next->thisVar.varData.theStack->last = (nextFirstStack == NULL) ? NULL : nextFirstStack->stackFindLast();
trimStack(fun->stack);
trimStack(fun->stack);
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 9b72185..5da5248 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -492,10 +492,8 @@ int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOf
}
// Would be a LOT better just to keep this up to date in the above function... ah well
-VariableStack *stackFindLast(VariableStack *hunt) {
- if (hunt == NULL)
- return NULL;
-
+VariableStack *VariableStack::stackFindLast() {
+ VariableStack *hunt = this;
while (hunt->next)
hunt = hunt->next;
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index dafc761..51fba77 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -121,6 +121,9 @@ struct VariableStack {
// Variable getter & setter
bool stackSetByIndex(uint, const Variable &);
Variable *stackGetByIndex(uint);
+
+ // Find last
+ VariableStack *stackFindLast();
};
// Stacky stuff
@@ -128,9 +131,7 @@ struct VariableStack {
bool addVarToStack(const Variable &va, VariableStack *&thisStack);
bool addVarToStackQuick(Variable &va, VariableStack *&thisStack);
void trimStack(VariableStack *&stack);
-int deleteVarFromStack(const Variable &va, VariableStack *&thisStack,
- bool allOfEm = false);
-VariableStack *stackFindLast(VariableStack *hunt);
+int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOfEm = false);
bool copyStack(const Variable &from, Variable &to);
int stackSize(const StackHandler *me);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
Commit: 80478ee4704ea09c16c5728c957ea0096b923d05
https://github.com/scummvm/scummvm/commit/80478ee4704ea09c16c5728c957ea0096b923d05
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move copyStack() to struct Variable
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index bf7c422..c7b66d6 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -551,7 +551,7 @@ builtIn(copyStack) {
return BR_ERROR;
}
// Return value
- if (!copyStack(fun->stack->thisVar, fun->reg))
+ if (!fun->reg.copyStack(fun->stack->thisVar))
return BR_ERROR;
trimStack(fun->stack);
return BR_CONTINUE;
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 5da5248..c1ff97e 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -170,20 +170,20 @@ bool getSavedGamesStack(StackHandler *sH, const Common::String &ext) {
return true;
}
-bool copyStack(const Variable &from, Variable &to) {
- to.varType = SVT_STACK;
- to.varData.theStack = new StackHandler;
- if (!checkNew(to.varData.theStack))
+bool Variable::copyStack(const Variable &from) {
+ varType = SVT_STACK;
+ varData.theStack = new StackHandler;
+ if (!checkNew(varData.theStack))
return false;
- to.varData.theStack->first = NULL;
- to.varData.theStack->last = NULL;
- to.varData.theStack->timesUsed = 1;
+ varData.theStack->first = NULL;
+ varData.theStack->last = NULL;
+ varData.theStack->timesUsed = 1;
VariableStack *a = from.varData.theStack->first;
while (a) {
- addVarToStack(a->thisVar, to.varData.theStack->first);
- if (to.varData.theStack->last == NULL) {
- to.varData.theStack->last = to.varData.theStack->first;
+ addVarToStack(a->thisVar, varData.theStack->first);
+ if (varData.theStack->last == NULL) {
+ varData.theStack->last = varData.theStack->first;
}
a = a->next;
}
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 51fba77..4d756f5 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -103,6 +103,9 @@ struct Variable {
bool makeFastArrayFromStack(const StackHandler *stacky);
bool makeFastArraySize(int size);
+ // Stack variable
+ bool copyStack(const Variable &from);
+
// Add variables
void addVariablesInSecond(const Variable &other);
void compareVariablesInSecond(const Variable &other);
@@ -132,7 +135,6 @@ bool addVarToStack(const Variable &va, VariableStack *&thisStack);
bool addVarToStackQuick(Variable &va, VariableStack *&thisStack);
void trimStack(VariableStack *&stack);
int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOfEm = false);
-bool copyStack(const Variable &from, Variable &to);
int stackSize(const StackHandler *me);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
Commit: fa72209845740352e6f575f5afc1dd0da9d6a502
https://github.com/scummvm/scummvm/commit/fa72209845740352e6f575f5afc1dd0da9d6a502
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move stack size getter to struct StackHandler
Changed paths:
engines/sludge/bg_effects.cpp
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/bg_effects.cpp b/engines/sludge/bg_effects.cpp
index d02aceb..3f40fc8 100644
--- a/engines/sludge/bg_effects.cpp
+++ b/engines/sludge/bg_effects.cpp
@@ -166,7 +166,7 @@ bool blur_createSettings(int numParams, VariableStack *&stack) {
error = "Third and subsequent parameters in setBackgroundEffect should be arrays";
break;
} else {
- int w = stackSize(justToCheckSizes->thisVar.varData.theStack);
+ int w = justToCheckSizes->thisVar.varData.theStack->getStackSize();
if (a) {
if (w != width) {
error = "Arrays in setBackgroundEffect must be the same size";
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index c7b66d6..6e4a953 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -527,7 +527,7 @@ builtIn(stackSize) {
switch (fun->stack->thisVar.varType) {
case SVT_STACK:
// Return value
- fun->reg.setVariable(SVT_INT, stackSize(fun->stack->thisVar.varData.theStack));
+ fun->reg.setVariable(SVT_INT, fun->stack->thisVar.varData.theStack->getStackSize());
trimStack(fun->stack);
return BR_CONTINUE;
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index c1ff97e..04e5201 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -134,9 +134,9 @@ Persona *Variable::getCostumeFromVar() {
return p;
}
-int stackSize(const StackHandler *me) {
+int StackHandler::getStackSize() const {
int r = 0;
- VariableStack *a = me->first;
+ VariableStack *a = first;
while (a) {
r++;
a = a->next;
@@ -403,7 +403,7 @@ bool Variable::makeFastArraySize(int size) {
}
bool Variable::makeFastArrayFromStack(const StackHandler *stacky) {
- int size = stackSize(stacky);
+ int size = stacky->getStackSize();
if (!makeFastArraySize(size))
return false;
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index 4d756f5..afbf9c3 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -56,6 +56,8 @@ struct StackHandler {
struct VariableStack *first;
struct VariableStack *last;
int timesUsed;
+
+ int getStackSize() const;
};
union VariableData {
@@ -135,7 +137,6 @@ bool addVarToStack(const Variable &va, VariableStack *&thisStack);
bool addVarToStackQuick(Variable &va, VariableStack *&thisStack);
void trimStack(VariableStack *&stack);
int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOfEm = false);
-int stackSize(const StackHandler *me);
bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
// load & save
Commit: 8ead8de2846539fd68811937abdd1cbb94382ce0
https://github.com/scummvm/scummvm/commit/8ead8de2846539fd68811937abdd1cbb94382ce0
Author: Simei Yin (roseline.yin at gmail.com)
Date: 2018-05-31T23:15:09+02:00
Commit Message:
SLUDGE: Move save game getter to StackHandler
Changed paths:
engines/sludge/builtin.cpp
engines/sludge/variable.cpp
engines/sludge/variable.h
diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 6e4a953..1030643 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -215,7 +215,7 @@ builtIn(getMatchingFiles) {
fun->reg.varData.theStack->first = NULL;
fun->reg.varData.theStack->last = NULL;
fun->reg.varData.theStack->timesUsed = 1;
- if (!getSavedGamesStack(fun->reg.varData.theStack, newText))
+ if (!fun->reg.varData.theStack->getSavedGamesStack(newText))
return BR_ERROR;
return BR_CONTINUE;
}
diff --git a/engines/sludge/variable.cpp b/engines/sludge/variable.cpp
index 04e5201..44381aa 100644
--- a/engines/sludge/variable.cpp
+++ b/engines/sludge/variable.cpp
@@ -144,8 +144,7 @@ int StackHandler::getStackSize() const {
return r;
}
-bool getSavedGamesStack(StackHandler *sH, const Common::String &ext) {
-
+bool StackHandler::getSavedGamesStack(const Common::String &ext) {
// Make pattern
uint len = ext.size();
Common::String pattern = "*";
@@ -161,10 +160,10 @@ bool getSavedGamesStack(StackHandler *sH, const Common::String &ext) {
for (it = sa.begin(); it != sa.end(); ++it) {
(*it).erase((*it).size() - len, len);
newName.makeTextVar((*it));
- if (!addVarToStack(newName, sH->first))
+ if (!addVarToStack(newName, first))
return false;
- if (sH->last == NULL)
- sH->last = sH->first;
+ if (last == NULL)
+ last = first;
}
return true;
diff --git a/engines/sludge/variable.h b/engines/sludge/variable.h
index afbf9c3..1ae2aca 100644
--- a/engines/sludge/variable.h
+++ b/engines/sludge/variable.h
@@ -58,6 +58,7 @@ struct StackHandler {
int timesUsed;
int getStackSize() const;
+ bool getSavedGamesStack(const Common::String &ext);
};
union VariableData {
@@ -137,7 +138,6 @@ bool addVarToStack(const Variable &va, VariableStack *&thisStack);
bool addVarToStackQuick(Variable &va, VariableStack *&thisStack);
void trimStack(VariableStack *&stack);
int deleteVarFromStack(const Variable &va, VariableStack *&thisStack, bool allOfEm = false);
-bool getSavedGamesStack(StackHandler *sH, const Common::String &ext);
// load & save
void saveStack(VariableStack *vs, Common::WriteStream *stream);
More information about the Scummvm-git-logs
mailing list