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); | 
