aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/actor_walk.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2018-03-24 17:20:27 +0100
committerPeter Kohaut2018-03-24 17:28:34 +0100
commit5e9985bd6e4d136ec20e5e3be7589d34051227f1 (patch)
treee8b8f70ad0f509ec7b919c68c2f09bd2bbf0e8a1 /engines/bladerunner/actor_walk.cpp
parent2a646f8cc287a98f90e561ce8072c2af4322fd22 (diff)
downloadscummvm-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.cpp50
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 {