diff options
author | Paul Gilbert | 2018-02-22 18:39:10 -0500 |
---|---|---|
committer | Paul Gilbert | 2018-02-23 15:23:20 -0500 |
commit | a8961fc1457504c55c3c00c0f3fb86846db14508 (patch) | |
tree | 287e539c392cee36ee74112eb8b96b6db7e371b3 | |
parent | 81b9f9b0fcfcb9f9a782d3ba6d276a4aca1e6ecc (diff) | |
download | scummvm-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.cpp | 32 |
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); |