aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/map.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-01-18 08:57:23 -0500
committerPaul Gilbert2015-01-18 08:57:23 -0500
commit258ab0209679a84e0e8ef96718fe442dd47e2d7d (patch)
treec4f5769d9a2929f34b980dad5c3c3879c2ed50e4 /engines/xeen/map.cpp
parentb860745a8e1a89bfd34e1c3f263597bef59126ca (diff)
downloadscummvm-rg350-258ab0209679a84e0e8ef96718fe442dd47e2d7d.tar.gz
scummvm-rg350-258ab0209679a84e0e8ef96718fe442dd47e2d7d.tar.bz2
scummvm-rg350-258ab0209679a84e0e8ef96718fe442dd47e2d7d.zip
XEEN: Load sprites from the correct archive
Diffstat (limited to 'engines/xeen/map.cpp')
-rw-r--r--engines/xeen/map.cpp37
1 files changed, 26 insertions, 11 deletions
diff --git a/engines/xeen/map.cpp b/engines/xeen/map.cpp
index 86f60852f6..10143edec3 100644
--- a/engines/xeen/map.cpp
+++ b/engines/xeen/map.cpp
@@ -850,8 +850,9 @@ void AnimationInfo::load(const Common::String &name) {
Map::Map(XeenEngine *vm) : _vm(vm), _mobData(vm) {
_townPortalSide = 0;
- _sideObj = 0;
- _sideMon = 0;
+ _sideObjects = 0;
+ _sideMonsters = 0;
+ _sidePictures = 0;
_isOutdoors = false;
_stepped = false;
_mazeDataIndex = 0;
@@ -871,6 +872,7 @@ void Map::load(int mapId) {
Screen &screen = *_vm->_screen;
IndoorDrawList &indoorList = _vm->_interface->_indoorList;
OutdoorDrawList &outdoorList = _vm->_interface->_outdoorList;
+ int sideNumber = 0;
if (_vm->_falling) {
Window &w = screen._windows[9];
@@ -884,7 +886,9 @@ void Map::load(int mapId) {
_vm->_party._mazeId = mapId;
_vm->_events->clearEvents();
-
+ _sideObjects = 1;
+ _sideMonsters = 1;
+ _sidePictures = 1;
if (mapId >= 113 && mapId <= 127) {
_townPortalSide = 0;
} else {
@@ -896,6 +900,9 @@ void Map::load(int mapId) {
_animationInfo.load("clouds.dat");
_monsterData.load("xeen.mon");
_wallPicSprites.load("xeenpic.dat");
+ _sidePictures = 0;
+ _sideMonsters = 0;
+ _sideObjects = 0;
} else {
switch (mapId) {
case 113:
@@ -906,7 +913,7 @@ void Map::load(int mapId) {
_animationInfo.load("clouds.dat");
_monsterData.load("dark.mon");
_wallPicSprites.load("darkpic.dat");
- _sideObj = 0;
+ _sideObjects = 0;
break;
case 117:
case 118:
@@ -916,8 +923,8 @@ void Map::load(int mapId) {
_animationInfo.load("clouds.dat");
_monsterData.load("xeen.mon");
_wallPicSprites.load("darkpic.dat");
- _sideObj = 0;
- _sideMon = 0;
+ _sideObjects = 0;
+ _sideMonsters = 0;
break;
case 125:
case 126:
@@ -925,6 +932,8 @@ void Map::load(int mapId) {
_animationInfo.load("clouds.dat");
_monsterData.load("dark.mon");
_wallPicSprites.load("xeenpic.dat");
+ _sideObjects = 0;
+ _sidePictures = 0;
break;
default:
_animationInfo.load("dark.dat");
@@ -1034,28 +1043,34 @@ void Map::load(int mapId) {
filename = "085.obj";
_mobData._objectSprites[0]._spriteId = 85;
} else {
- filename = Common::String::format("%03d.%cbj",
+ filename = Common::String::format("xeen|%03d.%cbj",
_mobData._objectSprites[i]._spriteId,
_mobData._objectSprites[i]._spriteId >= 100 ? '0' : 'o');
}
// Read in the object sprites
- _mobData._objectSprites[i]._sprites.load(filename);
+ _mobData._objectSprites[i]._sprites.load(filename,
+ *_vm->_files->_sideArchives[_sideObjects]);
}
// Load sprites for the monsters
for (uint i = 0; i < _mobData._monsterSprites.size(); ++i) {
+ CCArchive *archive = _vm->_files->_sideArchives[
+ _mobData._monsterSprites[i]._spriteId == 91 && _vm->getGameID() == GType_WorldOfXeen ?
+ 0 : _sideMonsters];
+
filename = Common::String::format("%03d.mon", _mobData._monsterSprites[i]._spriteId);
- _mobData._monsterSprites[i]._sprites.load(filename);
+ _mobData._monsterSprites[i]._sprites.load(filename, *archive);
filename = Common::String::format("%03d.att", _mobData._monsterSprites[i]._spriteId);
- _mobData._monsterSprites[i]._attackSprites.load(filename);
+ _mobData._monsterSprites[i]._attackSprites.load(filename, *archive);
}
// Load wall picture sprite resources
for (uint i = 0; i < _mobData._wallItemSprites.size(); ++i) {
filename = Common::String::format("%03d.pic", _mobData._wallItems[i]._spriteId);
- _mobData._wallItemSprites[i]._sprites.load(filename);
+ _mobData._wallItemSprites[i]._sprites.load(filename,
+ *_vm->_files->_sideArchives[_sidePictures]);
}
// Handle loading miscellaneous sprites for the map