[Scummvm-git-logs] scummvm master -> 509a71a2845e2142df1ebc5394528ca7a4c163a3
yuv422
yuv422 at users.noreply.github.com
Sat May 16 11:53:17 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
509a71a284 DRAGONS: Fixed handling of inventory logic when combining items
Commit: 509a71a2845e2142df1ebc5394528ca7a4c163a3
https://github.com/scummvm/scummvm/commit/509a71a2845e2142df1ebc5394528ca7a4c163a3
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-05-16T21:48:54+10:00
Commit Message:
DRAGONS: Fixed handling of inventory logic when combining items
Changed paths:
engines/dragons/inventory.cpp
engines/dragons/inventory.h
engines/dragons/scriptopcodes.cpp
diff --git a/engines/dragons/inventory.cpp b/engines/dragons/inventory.cpp
index 726b163158..1867121aa8 100644
--- a/engines/dragons/inventory.cpp
+++ b/engines/dragons/inventory.cpp
@@ -395,6 +395,7 @@ bool Inventory::clearItem(uint16 iniId) {
for (int i = 0; i < DRAGONS_MAX_INVENTORY_ITEMS; i++) {
if (_inventoryItemTbl[i] == iniId) {
_inventoryItemTbl[i] = 0;
+ return true;
}
}
return false;
@@ -432,4 +433,13 @@ void Inventory::setPreviousState() {
_previousState = tmpState;
}
+bool Inventory::hasItem(uint16 iniId) {
+ for (int i = 0; i < DRAGONS_MAX_INVENTORY_ITEMS; i++) {
+ if (_inventoryItemTbl[i] == iniId) {
+ return true;
+ }
+ }
+ return false;
+}
+
} // End of namespace Dragons
diff --git a/engines/dragons/inventory.h b/engines/dragons/inventory.h
index 714b8f98ee..98933502ce 100644
--- a/engines/dragons/inventory.h
+++ b/engines/dragons/inventory.h
@@ -108,6 +108,7 @@ public:
bool addItemIfPositionIsEmpty(uint16 iniId, uint16 x, uint16 y);
void replaceItem(uint16 existingIniId, uint16 newIniId);
bool clearItem(uint16 iniId);
+ bool hasItem(uint16 iniId);
Actor *getInventoryItemActor(uint16 iniId);
void inventoryMissing();
diff --git a/engines/dragons/scriptopcodes.cpp b/engines/dragons/scriptopcodes.cpp
index 6f32e3f50f..9f1a794cd7 100644
--- a/engines/dragons/scriptopcodes.cpp
+++ b/engines/dragons/scriptopcodes.cpp
@@ -407,9 +407,11 @@ void ScriptOpcodes::opMoveObjectToScene(ScriptOpCall &scriptOpCall) {
_vm->_cursor->_sequenceID = 0;
_vm->_cursor->_iniItemInHand = 0;
} else {
- if (_vm->_inventory->clearItem(ini->id + 1)) {
+ if (_vm->_inventory->hasItem(ini->id + 1)) {
+ Actor *actor = _vm->_inventory->getInventoryItemActor(ini->id + 1);
+ _vm->_inventory->clearItem(ini->id + 1);
if (_vm->_inventory->getState() == InventoryOpen) {
- ini->actor->clearFlag(ACTOR_FLAG_40);
+ actor->clearFlag(ACTOR_FLAG_40);
}
}
}
More information about the Scummvm-git-logs
mailing list