Skip to content

Commit

Permalink
SLUDGE: Move save/loadVariable() to struct Variable
Browse files Browse the repository at this point in the history
  • Loading branch information
yinsimei committed May 31, 2018
1 parent 2ab7665 commit 56f0821
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 32 deletions.
8 changes: 4 additions & 4 deletions engines/sludge/function.cpp
Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions engines/sludge/loadsave.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
46 changes: 23 additions & 23 deletions engines/sludge/variable.cpp
Expand Up @@ -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;
}
}
Expand All @@ -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;
}
Expand Down Expand Up @@ -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:
Expand Down
7 changes: 4 additions & 3 deletions engines/sludge/variable.h
Expand Up @@ -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 {
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 56f0821

Please sign in to comment.