aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/items_v3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/items_v3.cpp')
-rw-r--r--engines/kyra/items_v3.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/engines/kyra/items_v3.cpp b/engines/kyra/items_v3.cpp
index 931367657b..809d276b74 100644
--- a/engines/kyra/items_v3.cpp
+++ b/engines/kyra/items_v3.cpp
@@ -422,6 +422,38 @@ void KyraEngine_v3::exchangeMouseItem(int itemPos, int runScript) {
runSceneScript6();
}
+bool KyraEngine_v3::pickUpItem(int x, int y, int runScript) {
+ debugC(9, kDebugLevelMain, "KyraEngine_v3::pickUpItem(%d, %d, %d)", x, y, runScript);
+ int itemPos = checkItemCollision(x, y);
+
+ if (itemPos <= -1)
+ return false;
+
+ if (_itemInHand >= 0) {
+ exchangeMouseItem(itemPos, runScript);
+ } else {
+ _screen->hideMouse();
+ deleteItemAnimEntry(itemPos);
+ int itemId = _itemList[itemPos].id;
+ _itemList[itemPos].id = 0xFFFF;
+ playSoundEffect(0x0B, 0xC8);
+ setMouseCursor(itemId);
+ int str2 = 7;
+
+ //if (_lang == 1)
+ // str2 = getItemCommandStringPickUp(itemId);
+
+ updateItemCommand(itemId, str2, 0xFF);
+ _itemInHand = itemId;
+ _screen->showMouse();
+
+ if (runScript)
+ runSceneScript6();
+ }
+
+ return true;
+}
+
bool KyraEngine_v3::isDropable(int x, int y) {
debugC(9, kDebugLevelMain, "KyraEngine_v3::isDropable(%d, %d)", x, y);
if (y < 14 || y > 187)