From a8961fc1457504c55c3c00c0f3fb86846db14508 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 22 Feb 2018 18:39:10 -0500 Subject: XEEN: Fix saving maps with no objects and/or monsters --- engines/xeen/map.cpp | 32 +++++++++++++++++++++----------- 1 file 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); -- cgit v1.2.3