Skip to content

Commit

Permalink
Hexen|ACScript: ACScriptInterpreter::DeferredTasks are now ISerializable
Browse files Browse the repository at this point in the history
  • Loading branch information
danij-deng committed Mar 25, 2014
1 parent 87528c8 commit 0696bfe
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
8 changes: 5 additions & 3 deletions doomsday/plugins/hexen/include/acscript.h
Expand Up @@ -31,7 +31,9 @@
#ifdef __cplusplus
# include "mapstatereader.h"
# include "mapstatewriter.h"
# include <de/ISerializable>
# include <de/Reader>
# include <de/Writer>
#endif

#define MAX_ACS_SCRIPT_VARS 10
Expand Down Expand Up @@ -227,14 +229,14 @@ class ACScriptInterpreter
/**
* A deferred task is enqueued when a script is started on a map not currently loaded.
*/
struct DeferredTask
struct DeferredTask : public de::ISerializable
{
Uri *mapUri; ///< Target map.
int scriptNumber; ///< On the target map.
byte args[4];

void write(de::Writer &to) const;
void read(de::Reader &from);
void operator >> (de::Writer &to) const;
void operator << (de::Reader &from);
};

bool newDeferredTask(Uri const *mapUri, int scriptNumber, byte const args[4]);
Expand Down
9 changes: 5 additions & 4 deletions doomsday/plugins/hexen/src/acscript.cpp
Expand Up @@ -64,7 +64,7 @@ struct BytecodeScriptInfo
int waitValue;
};

void ACScriptInterpreter::DeferredTask::write(de::Writer &to) const
void ACScriptInterpreter::DeferredTask::operator >> (de::Writer &to) const
{
to << de::String(Str_Text(Uri_Compose(mapUri)))
<< scriptNumber;
Expand All @@ -74,7 +74,7 @@ void ACScriptInterpreter::DeferredTask::write(de::Writer &to) const
}
}

void ACScriptInterpreter::DeferredTask::read(de::Reader &from)
void ACScriptInterpreter::DeferredTask::operator << (de::Reader &from)
{
de::String mapUriStr;
from >> mapUriStr;
Expand Down Expand Up @@ -479,9 +479,10 @@ void ACScriptInterpreter::writeWorldScriptData(de::Writer &to) const

// Write the deferred task queue.
to << _deferredTasksSize;

for(int i = 0; i < _deferredTasksSize; ++i)
{
_deferredTasks[i].write(to);
to << _deferredTasks[i];
}
}

Expand All @@ -503,7 +504,7 @@ void ACScriptInterpreter::readWorldScriptData(de::Reader &from)
_deferredTasks = (DeferredTask *) Z_Realloc(_deferredTasks, sizeof(*_deferredTasks) * _deferredTasksSize, PU_GAMESTATIC);
for(int i = 0; i < _deferredTasksSize; ++i)
{
_deferredTasks[i].read(from);
from >> _deferredTasks[i];
}
}
}
Expand Down

0 comments on commit 0696bfe

Please sign in to comment.