aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2018-02-22 18:39:10 -0500
committerPaul Gilbert2018-02-23 15:23:20 -0500
commita8961fc1457504c55c3c00c0f3fb86846db14508 (patch)
tree287e539c392cee36ee74112eb8b96b6db7e371b3
parent81b9f9b0fcfcb9f9a782d3ba6d276a4aca1e6ecc (diff)
downloadscummvm-rg350-a8961fc1457504c55c3c00c0f3fb86846db14508.tar.gz
scummvm-rg350-a8961fc1457504c55c3c00c0f3fb86846db14508.tar.bz2
scummvm-rg350-a8961fc1457504c55c3c00c0f3fb86846db14508.zip
XEEN: Fix saving maps with no objects and/or monsters
-rw-r--r--engines/xeen/map.cpp32
1 files changed, 21 insertions, 11 deletions
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index c62fc710a5..d3e3d7769d 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -738,27 +738,37 @@ void MonsterObjectData::synchronize(XeenSerializer &s, MonsterData &monsterData)
if (s.isSaving()) {
// Save objects
- for (uint i = 0; i < _objects.size(); ++i) {
- mobStruct._pos = _objects[i]._position;
- mobStruct._id = _objects[i]._id;
- mobStruct._direction = _objects[i]._direction;
- mobStruct.synchronize(s);
+ if (_objects.empty()) {
+ MobStruct nullStruct;
+ nullStruct.synchronize(s);
+ } else {
+ for (uint i = 0; i < _objects.size(); ++i) {
+ mobStruct._pos = _objects[i]._position;
+ mobStruct._id = _objects[i]._id;
+ mobStruct._direction = _objects[i]._direction;
+ mobStruct.synchronize(s);
+ }
}
mobStruct.endOfList();
mobStruct.synchronize(s);
// Save monsters
- for (uint i = 0; i < _monsters.size(); ++i) {
- mobStruct._pos = _monsters[i]._position;
- mobStruct._id = _monsters[i]._id;
- mobStruct._direction = DIR_NORTH;
- mobStruct.synchronize(s);
+ if (_monsters.empty()) {
+ MobStruct nullStruct;
+ nullStruct.synchronize(s);
+ } else {
+ for (uint i = 0; i < _monsters.size(); ++i) {
+ mobStruct._pos = _monsters[i]._position;
+ mobStruct._id = _monsters[i]._id;
+ mobStruct._direction = DIR_NORTH;
+ mobStruct.synchronize(s);
+ }
}
mobStruct.endOfList();
mobStruct.synchronize(s);
// Save wall items
- if (_wallItems.size() == 0) {
+ if (_wallItems.empty()) {
MobStruct nullStruct;
nullStruct._pos.x = nullStruct._pos.y = 0x80;
nullStruct.synchronize(s);