diff options
author | Peter Kohaut | 2018-03-24 17:20:27 +0100 |
---|---|---|
committer | Peter Kohaut | 2018-03-24 17:28:34 +0100 |
commit | 5e9985bd6e4d136ec20e5e3be7589d34051227f1 (patch) | |
tree | e8b8f70ad0f509ec7b919c68c2f09bd2bbf0e8a1 /engines/bladerunner/actor_walk.cpp | |
parent | 2a646f8cc287a98f90e561ce8072c2af4322fd22 (diff) | |
download | scummvm-rg350-5e9985bd6e4d136ec20e5e3be7589d34051227f1.tar.gz scummvm-rg350-5e9985bd6e4d136ec20e5e3be7589d34051227f1.tar.bz2 scummvm-rg350-5e9985bd6e4d136ec20e5e3be7589d34051227f1.zip |
BLADERUNNER: Load game methods
save methods update
replaced few char* with Common::String
changed few pointers to references
Diffstat (limited to 'engines/bladerunner/actor_walk.cpp')
-rw-r--r-- | engines/bladerunner/actor_walk.cpp | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/engines/bladerunner/actor_walk.cpp b/engines/bladerunner/actor_walk.cpp index d376e36785..b4587333a1 100644 --- a/engines/bladerunner/actor_walk.cpp +++ b/engines/bladerunner/actor_walk.cpp @@ -239,25 +239,51 @@ void ActorWalk::run(int actorId) { _vm->_actors[actorId]->changeAnimationMode(animationMode, false); } -void ActorWalk::save(SaveFile &f) { - f.write(_walking); - f.write(_running); - f.write(_destination); +void ActorWalk::save(SaveFileWriteStream &f) { + f.writeInt(_walking); + f.writeInt(_running); + f.writeVector3(_destination); // _originalDestination is not saved - f.write(_current); - f.write(_next); - f.write(_facing); + f.writeVector3(_current); + f.writeVector3(_next); + f.writeInt(_facing); assert(_nearActors.size() <= 20); for (Common::HashMap<int, bool>::const_iterator it = _nearActors.begin(); it != _nearActors.end(); ++it) { - f.write(it->_key); - f.write(it->_value); + f.writeInt(it->_key); + f.writeBool(it->_value); } f.padBytes(8 * (20 - _nearActors.size())); - f.write((int)_nearActors.size()); + f.writeInt(_nearActors.size()); - f.write(0); // _notUsed - f.write(_status); + f.writeInt(0); // _notUsed + f.writeInt(_status); +} + +void ActorWalk::load(SaveFileReadStream &f) { + _walking = f.readInt(); + _running = f.readInt(); + _destination = f.readVector3(); + // _originalDestination is not saved + _current = f.readVector3(); + _next = f.readVector3(); + _facing = f.readInt(); + + int actorId[20]; + bool isNear[20]; + + for (int i = 0; i < 20; ++i) { + actorId[i] = f.readInt(); + isNear[i] = f.readBool(); + } + + int count = f.readInt(); + for (int i = 0; i < count; ++i) { + _nearActors.setVal(actorId[i], isNear[i]); + } + + f.skip(4); // _notUsed + _status = f.readInt(); } bool ActorWalk::isXYZEmpty(float x, float y, float z, int actorId) const { |