From 3b1f8da4beedf60b41f5226f314bffc221965c20 Mon Sep 17 00:00:00 2001 From: Andrew Kurushin Date: Thu, 28 Apr 2005 17:19:43 +0000 Subject: save load preparetion svn-id: r17852 --- saga/actor.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'saga/actor.cpp') 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) { -- cgit v1.2.3