aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/actor_combat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/actor_combat.cpp')
-rw-r--r--engines/bladerunner/actor_combat.cpp75
1 files changed, 49 insertions, 26 deletions
diff --git a/engines/bladerunner/actor_combat.cpp b/engines/bladerunner/actor_combat.cpp
index 7a60d6d85a..4bcce5d3bf 100644
--- a/engines/bladerunner/actor_combat.cpp
+++ b/engines/bladerunner/actor_combat.cpp
@@ -50,31 +50,6 @@ void ActorCombat::setup() {
reset();
}
-void ActorCombat::save(SaveFile &f) {
- // TODO
- f.write(0); // _actorId
- f.write(0); // _combatOn
- f.write(0); // _field2
- f.write(0); // _field3
- f.write(0); // _otherActorId
- f.write(0); // _field5
- f.write(0); // _field6
- f.write(0); // _field7
- f.write(0); // _field8
- f.write(0); // _field9
- f.write(0); // _field10
- f.write(0); // _field11
- f.write(0); // _field12
- f.write(0); // _actorHp
- f.write(0); // _field14
- f.write(0); // _field15
- f.write(0); // _actorPosition
- f.write(0); // _otherActorPosition
- f.write(0); // _availableCoversCount
- f.write(0); // _availableFleeWaypointsCount
- f.write(0); // _field24
-}
-
void ActorCombat::combatOn(int actorId, int initialState, bool rangedAttackFlag, int enemyId, int waypointType, int fleeRatio, int coverRatio, int actionRatio, int damage, int range, bool unstoppable) {
_actorId = actorId;
_state = initialState;
@@ -316,11 +291,59 @@ void ActorCombat::hitAttempt() {
}
}
+void ActorCombat::save(SaveFileWriteStream &f) {
+ f.writeInt(_actorId);
+ f.writeBool(_active);
+ f.writeInt(_state);
+ f.writeBool(_rangedAttack);
+ f.writeInt(_enemyId);
+ f.writeInt(_waypointType);
+ f.writeInt(_damage);
+ f.writeInt(_fleeRatio);
+ f.writeInt(_coverRatio);
+ f.writeInt(_actionRatio);
+ f.writeInt(_fleeRatioConst);
+ f.writeInt(_coverRatioConst);
+ f.writeInt(_actionRatioConst);
+ f.writeInt(_range);
+ f.writeInt(_unstoppable);
+ f.writeInt(_actorHp);
+ f.writeInt(_fleeingTowards);
+ f.writeVector3(_actorPosition);
+ f.writeVector3(_enemyPosition);
+ f.writeInt(_coversWaypointCount);
+ f.writeInt(_fleeWaypointsCount);
+}
+
+void ActorCombat::load(SaveFileReadStream &f) {
+ _actorId = f.readInt();
+ _active = f.readBool();
+ _state = f.readInt();
+ _rangedAttack = f.readBool();
+ _enemyId = f.readInt();
+ _waypointType = f.readInt();
+ _damage = f.readInt();
+ _fleeRatio = f.readInt();
+ _coverRatio = f.readInt();
+ _actionRatio = f.readInt();
+ _fleeRatioConst = f.readInt();
+ _coverRatioConst = f.readInt();
+ _actionRatioConst = f.readInt();
+ _range = f.readInt();
+ _unstoppable = f.readInt();
+ _actorHp = f.readInt();
+ _fleeingTowards = f.readInt();
+ _actorPosition = f.readVector3();
+ _enemyPosition = f.readVector3();
+ _coversWaypointCount = f.readInt();
+ _fleeWaypointsCount = f.readInt();
+}
+
void ActorCombat::reset() {
_active = false;
_actorId = -1;
_state = -1;
- _rangedAttack = -1;
+ _rangedAttack = false;
_enemyId = -1;
_waypointType = -1;
_damage = 0;