aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/scripts.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2018-04-01 22:54:38 -0400
committerPaul Gilbert2018-04-01 22:54:38 -0400
commitd621bf68164d7fbe8cdd57632db1080f4f74527a (patch)
treed83468e488cb720ca8d19bdc4e3e4161904bd739 /engines/xeen/scripts.cpp
parent0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02 (diff)
downloadscummvm-rg350-d621bf68164d7fbe8cdd57632db1080f4f74527a.tar.gz
scummvm-rg350-d621bf68164d7fbe8cdd57632db1080f4f74527a.tar.bz2
scummvm-rg350-d621bf68164d7fbe8cdd57632db1080f4f74527a.zip
XEEN: Fix object 0 not being removable, _objNumber cleanup
The original used 0 as "unset", and object index + 1 to indicate the object at the current location. Given all the +1/-1 usages, I've simplified the use of _objNumber to use -1 as unset, allowing the direct object index to be used otherwise
Diffstat (limited to 'engines/xeen/scripts.cpp')
-rw-r--r--engines/xeen/scripts.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp
index 3a3c9d6d65..896387f4d3 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -210,8 +210,8 @@ int Scripts::checkEvents() {
if (party._treasure._hasItems || party._treasure._gold || party._treasure._gems)
party.giveTreasure();
- if (_animCounter > 0 && intf._objNumber) {
- MazeObject &selectedObj = map._mobData._objects[intf._objNumber - 1];
+ if (_animCounter > 0 && intf._objNumber != -1) {
+ MazeObject &selectedObj = map._mobData._objects[intf._objNumber];
if (selectedObj._spriteId == (ccNum ? 15 : 16)) {
for (uint idx = 0; idx < 16; ++idx) {
@@ -240,8 +240,8 @@ int Scripts::checkEvents() {
if (_scriptExecuted)
intf.clearEvents();
- if (_scriptExecuted || !intf._objNumber || _dirFlag) {
- if (_dirFlag && !_scriptExecuted && intf._objNumber && !map._currentIsEvent) {
+ if (_scriptExecuted || intf._objNumber == -1 || _dirFlag) {
+ if (_dirFlag && !_scriptExecuted && intf._objNumber != -1 && !map._currentIsEvent) {
sound.playFX(21);
}
} else {
@@ -496,8 +496,7 @@ bool Scripts::cmdTeleport(ParamsIterator &params) {
party._stepped = true;
if (mapId != party._mazeId) {
- int spriteId = (intf._objNumber == 0) ? -1 :
- map._mobData._objects[intf._objNumber - 1]._spriteId;
+ int spriteId = (intf._objNumber == -1) ? -1 : map._mobData._objects[intf._objNumber - 1]._spriteId;
switch (spriteId) {
case 47:
@@ -798,7 +797,7 @@ bool Scripts::cmdRemove(ParamsIterator &params) {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
- if (intf._objNumber) {
+ if (intf._objNumber != -1) {
// Give the active object a completely way out of bounds position
MazeObject &obj = map._mobData._objects[intf._objNumber];
obj._position = Common::Point(128, 128);