aboutsummaryrefslogtreecommitdiff
path: root/engines/dm/projexpl.cpp
diff options
context:
space:
mode:
authorStrangerke2016-09-06 22:36:59 +0200
committerStrangerke2016-09-06 22:36:59 +0200
commit92ca2ae87bd1702160853c8187ef8ef4adead950 (patch)
tree7a69e852c9db674ba1214e3d1eb0af4266ad9b50 /engines/dm/projexpl.cpp
parent46b41f9b2bc9eb5d592e11aaad61d208c26ae903 (diff)
downloadscummvm-rg350-92ca2ae87bd1702160853c8187ef8ef4adead950.tar.gz
scummvm-rg350-92ca2ae87bd1702160853c8187ef8ef4adead950.tar.bz2
scummvm-rg350-92ca2ae87bd1702160853c8187ef8ef4adead950.zip
DM: Rework a if statement in hasProjectileImpactOccurred to make it readable
Diffstat (limited to 'engines/dm/projexpl.cpp')
-rw-r--r--engines/dm/projexpl.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/engines/dm/projexpl.cpp b/engines/dm/projexpl.cpp
index 2a71e7b0e7..25e0b585d3 100644
--- a/engines/dm/projexpl.cpp
+++ b/engines/dm/projexpl.cpp
@@ -122,19 +122,24 @@ bool ProjExpl::hasProjectileImpactOccurred(int16 impactType, int16 mapXCombo, in
break;
}
- int16 AL0487_i_IconIndex;
- if ((curDoorState == k5_doorState_DESTROYED) ||
- (curDoorState <= k1_doorState_FOURTH) ||
- (getFlag(_vm->_dungeonMan->_currMapDoorInfo[curDoor->getType()]._attributes, k0x0002_MaskDoorInfo_ProjectilesCanPassThrough) &&
- ((projectileAssociatedThingType == k15_ExplosionThingType) ?
- (projectileAssociatedThing.toUint16() >= Thing::_explHarmNonMaterial.toUint16()) :
- ((projectileThingData->_attack > _vm->getRandomNumber(128)) &&
- getFlag(_vm->_dungeonMan->_objectInfos[_vm->_dungeonMan->getObjectInfoIndex(projectileAssociatedThing)].getAllowedSlots(), k0x0100_ObjectAllowedSlotPouchPassAndThroughDoors)
- && ((projectileAssociatedThingType != k10_JunkThingType) ||
- ((AL0487_i_IconIndex = _vm->_objectMan->getIconIndex(projectileAssociatedThing)) < 0) ||
- (!((AL0487_i_IconIndex >= k176_IconIndiceJunkIronKey) && (AL0487_i_IconIndex <= k191_IconIndiceJunkMasterKey))))
- )))) { /* ASSEMBLY_COMPILATION_DIFFERENCE jmp */
+ if ((curDoorState == k5_doorState_DESTROYED) || (curDoorState <= k1_doorState_FOURTH))
return false;
+
+ DoorInfo curDoorInfo = _vm->_dungeonMan->_currMapDoorInfo[curDoor->getType()];
+ if (getFlag(curDoorInfo._attributes, k0x0002_MaskDoorInfo_ProjectilesCanPassThrough)) {
+ if (projectileAssociatedThingType == k15_ExplosionThingType) {
+ if (projectileAssociatedThing.toUint16() >= Thing::_explHarmNonMaterial.toUint16())
+ return false;
+ } else {
+ int16 associatedThingIndex = _vm->_dungeonMan->getObjectInfoIndex(projectileAssociatedThing);
+ if ((projectileThingData->_attack > _vm->getRandomNumber(128))
+ && getFlag(_vm->_dungeonMan->_objectInfos[associatedThingIndex].getAllowedSlots(), k0x0100_ObjectAllowedSlotPouchPassAndThroughDoors)) {
+
+ int16 iconIndex = _vm->_objectMan->getIconIndex(projectileAssociatedThing);
+ if ((projectileAssociatedThingType != k10_JunkThingType) || (iconIndex < k176_IconIndiceJunkIronKey) || (iconIndex > k191_IconIndiceJunkMasterKey))
+ return false;
+ }
+ }
}
attack = getProjectileImpactAttack(projectileThingData, projectileAssociatedThing) + 1;
_vm->_groupMan->groupIsDoorDestoryedByAttack(projectileTargetMapX, projectileTargetMapY, attack + _vm->getRandomNumber(attack), false, 0);