aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/interface_scene.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2018-01-20 20:54:36 -0500
committerPaul Gilbert2018-01-20 20:54:36 -0500
commitccfbc8f30530482a5afa603555f66b447ca3957b (patch)
treebc5db9116a136828563444d44837fea06600092b /engines/xeen/interface_scene.cpp
parentdfa76112b75dc62481cd7bfab43af3c0b317eee3 (diff)
downloadscummvm-rg350-ccfbc8f30530482a5afa603555f66b447ca3957b.tar.gz
scummvm-rg350-ccfbc8f30530482a5afa603555f66b447ca3957b.tar.bz2
scummvm-rg350-ccfbc8f30530482a5afa603555f66b447ca3957b.zip
XEEN: Cleanup of animate3d method's ranged attack code
Diffstat (limited to 'engines/xeen/interface_scene.cpp')
-rw-r--r--engines/xeen/interface_scene.cpp58
1 files changed, 31 insertions, 27 deletions
diff --git a/engines/xeen/interface_scene.cpp b/engines/xeen/interface_scene.cpp
index ed8ab766c2..a1075faf21 100644
--- a/engines/xeen/interface_scene.cpp
+++ b/engines/xeen/interface_scene.cpp
@@ -760,40 +760,44 @@ void InterfaceScene::animate3d() {
}
}
- DrawStruct *combatImgs1 = map._isOutdoors ? _outdoorList._attackImgs1 : _indoorList._attackImgs1;
- DrawStruct *combatImgs2 = map._isOutdoors ? _outdoorList._attackImgs2 : _indoorList._attackImgs2;
- DrawStruct *combatImgs3 = map._isOutdoors ? _outdoorList._attackImgs3 : _indoorList._attackImgs3;
- DrawStruct *combatImgs4 = map._isOutdoors ? _outdoorList._attackImgs4 : _indoorList._attackImgs4;
+ DrawStruct *rangedImgs1 = map._isOutdoors ? _outdoorList._attackImgs1 : _indoorList._attackImgs1;
+ DrawStruct *rangedImgs2 = map._isOutdoors ? _outdoorList._attackImgs2 : _indoorList._attackImgs2;
+ DrawStruct *rangedImgs3 = map._isOutdoors ? _outdoorList._attackImgs3 : _indoorList._attackImgs3;
+ DrawStruct *rangedImgs4 = map._isOutdoors ? _outdoorList._attackImgs4 : _indoorList._attackImgs4;
if (combat._monstersAttacking) {
+ // Monsters doing ranged attacks. Sequentially move the attack from
+ // whichever row it started in to the front (where the party is)
for (int idx = 0; idx < MAX_PARTY_COUNT; ++idx) {
- if (combatImgs1[idx]._sprites) {
- combatImgs1[idx]._sprites = nullptr;
- combat._shootingRow[idx] = false;
- } else if (combatImgs2[idx]._sprites) {
- combatImgs1[idx]._sprites = combatImgs2[idx]._sprites;
- combatImgs2[idx]._sprites = nullptr;
- } else if (combatImgs3[idx]._sprites) {
- combatImgs2[idx]._sprites = combatImgs3[idx]._sprites;
- combatImgs3[idx]._sprites = nullptr;
- } else if (combatImgs4[idx]._sprites) {
- combatImgs3[idx]._sprites = combatImgs4[idx]._sprites;
- combatImgs4[idx]._sprites = nullptr;
+ if (rangedImgs1[idx]._sprites) {
+ rangedImgs1[idx]._sprites = nullptr;
+ combat._shootingRow[idx] = 0;
+ } else if (rangedImgs2[idx]._sprites) {
+ rangedImgs1[idx]._sprites = rangedImgs2[idx]._sprites;
+ rangedImgs2[idx]._sprites = nullptr;
+ } else if (rangedImgs3[idx]._sprites) {
+ rangedImgs2[idx]._sprites = rangedImgs3[idx]._sprites;
+ rangedImgs3[idx]._sprites = nullptr;
+ } else if (rangedImgs4[idx]._sprites) {
+ rangedImgs3[idx]._sprites = rangedImgs4[idx]._sprites;
+ rangedImgs4[idx]._sprites = nullptr;
}
}
} else if (_charsShooting) {
+ // Characters shooting at monsters. Sequentially move the attack
+ // away from the party
for (int idx = 0; idx < MAX_PARTY_COUNT; ++idx) {
- if (combatImgs4[idx]._sprites) {
- combatImgs4[idx]._sprites = nullptr;
- } else if (combatImgs3[idx]._sprites) {
- combatImgs4[idx]._sprites = combatImgs3[idx]._sprites;
- combatImgs3[idx]._sprites = nullptr;
- } else if (combatImgs2[idx]._sprites) {
- combatImgs3[idx]._sprites = combatImgs2[idx]._sprites;
- combatImgs2[idx]._sprites = nullptr;
- } else if (combatImgs1[idx]._sprites) {
- combatImgs2[idx]._sprites = combatImgs1[idx]._sprites;
- combatImgs1[idx]._sprites = nullptr;
+ if (rangedImgs4[idx]._sprites) {
+ rangedImgs4[idx]._sprites = nullptr;
+ } else if (rangedImgs3[idx]._sprites) {
+ rangedImgs4[idx]._sprites = rangedImgs3[idx]._sprites;
+ rangedImgs3[idx]._sprites = nullptr;
+ } else if (rangedImgs2[idx]._sprites) {
+ rangedImgs3[idx]._sprites = rangedImgs2[idx]._sprites;
+ rangedImgs2[idx]._sprites = nullptr;
+ } else if (rangedImgs1[idx]._sprites) {
+ rangedImgs2[idx]._sprites = rangedImgs1[idx]._sprites;
+ rangedImgs1[idx]._sprites = nullptr;
}
}
}