aboutsummaryrefslogtreecommitdiff
path: root/saga/actor.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-04-28 17:19:43 +0000
committerAndrew Kurushin2005-04-28 17:19:43 +0000
commit3b1f8da4beedf60b41f5226f314bffc221965c20 (patch)
tree895f83d6223f88a186c7ae69eaa833c9844f7d62 /saga/actor.cpp
parent589b65945ac2b257a88c15808f5c35fe4a74aff6 (diff)
downloadscummvm-rg350-3b1f8da4beedf60b41f5226f314bffc221965c20.tar.gz
scummvm-rg350-3b1f8da4beedf60b41f5226f314bffc221965c20.tar.bz2
scummvm-rg350-3b1f8da4beedf60b41f5226f314bffc221965c20.zip
save load preparetion
svn-id: r17852
Diffstat (limited to 'saga/actor.cpp')
-rw-r--r--saga/actor.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/saga/actor.cpp b/saga/actor.cpp
index d879c70ed4..1990e1ef5f 100644
--- a/saga/actor.cpp
+++ b/saga/actor.cpp
@@ -2292,6 +2292,51 @@ void Actor::drawPathTest() {
#endif
}
+void Actor::saveState(File& out) {
+ uint16 i;
+
+ out.writeSint32LE(_centerActor == NULL ? -1 : _centerActor->index);
+ out.writeSint32LE(_protagonist == NULL ? -1 : _protagonist->index);
+ out.writeSint16LE(getProtagState());
+
+ for (i = 0; i < _actorsCount; i++) {
+ ActorData *a = _actors[i];
+ a->saveState(out);
+ }
+
+ //TODO: save _activeSpeech
+
+ for (i = 0; i < _objsCount; i++) {
+ ObjectData *o = _objs[i];
+ o->saveState(out);
+ }
+}
+
+void Actor::loadState(File& in) {
+ int32 i;
+
+ i = in.readSint32LE();
+ _centerActor = (i < 0) ? NULL : _actors[i];
+
+ i = in.readSint32LE();
+ _protagonist = (i < 0) ? NULL : _actors[i];
+
+ setProtagState(in.readSint16LE());
+
+ //TODO: load _activeSpeech
+
+ for (i = 0; i < _actorsCount; i++) {
+ ActorData *a = _actors[i];
+ a->loadState(in);
+ }
+
+
+ for (i = 0; i < _objsCount; i++) {
+ ObjectData *o = _objs[i];
+ o->loadState(in);
+ }
+}
+
// Console wrappers - must be safe to run
void Actor::cmdActorWalkTo(int argc, const char **argv) {