From 7c282973976895fc703dbdfa978761c30273b76f Mon Sep 17 00:00:00 2001 From: Henrique Santiago Date: Mon, 2 Jan 2012 21:08:04 -0200 Subject: [PATCH] menu open or use for backpacks --- modules/game_inventory/inventory.lua | 17 ++++++++++++++++- src/otclient/core/thing.cpp | 7 ++++++- src/otclient/core/thing.h | 2 ++ src/otclient/luafunctions.cpp | 6 ++++-- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/modules/game_inventory/inventory.lua b/modules/game_inventory/inventory.lua index f4bc070e..be2b6ee5 100644 --- a/modules/game_inventory/inventory.lua +++ b/modules/game_inventory/inventory.lua @@ -64,9 +64,24 @@ function Inventory.onSoulChange(soul) end function Inventory.onInventoryItemMousePress(itemWidget, mousePos, mouseButton) + if mouseButton ~= MouseRightButton then + return + end + + local item = itemWidget:getItem() + if not item then + return + end + local menu = UIPopupMenu.create() menu:addOption('Look', function() print('look') end) - menu:addOption('Use', function() print('use') end) + + if item:isContainer() then + menu:addOption('Open', function() print('open') end) + else + menu:addOption('Use', function() print('use') end) + end + menu:display(mousePos) end diff --git a/src/otclient/core/thing.cpp b/src/otclient/core/thing.cpp index 945f6cde..e630d2e8 100644 --- a/src/otclient/core/thing.cpp +++ b/src/otclient/core/thing.cpp @@ -31,7 +31,7 @@ Thing::Thing() : m_id(0) m_yPattern = 0; m_zPattern = 0; m_animation = 0; - m_type = g_thingsType.getEmptyThingType(); + m_type = getType(); } void Thing::internalDraw(const Point& p, int layer) @@ -77,3 +77,8 @@ ThingType *Thing::getType() { return g_thingsType.getEmptyThingType(); } + +bool Thing::isContainer() +{ + return m_type->properties[ThingType::IsContainer]; +} diff --git a/src/otclient/core/thing.h b/src/otclient/core/thing.h index 3dc32511..d32bad55 100644 --- a/src/otclient/core/thing.h +++ b/src/otclient/core/thing.h @@ -66,6 +66,8 @@ public: virtual AnimatedTextPtr asAnimatedText() { return nullptr; } virtual StaticTextPtr asStaticText() { return nullptr; } + bool isContainer(); + protected: void internalDraw(const Point& p, int layer); diff --git a/src/otclient/luafunctions.cpp b/src/otclient/luafunctions.cpp index c09c8265..3deca1ae 100644 --- a/src/otclient/luafunctions.cpp +++ b/src/otclient/luafunctions.cpp @@ -35,14 +35,16 @@ void OTClient::registerLuaFunctions() g_lua.registerClass(); g_lua.registerClass(); + g_lua.bindClassMemberFunction("getType", &Thing::getType); + g_lua.bindClassMemberFunction("isContainer", &Thing::isContainer); - g_lua.registerClass(); + g_lua.registerClass(); g_lua.bindClassMemberFunction("setOutfit", &Creature::setOutfit); g_lua.bindClassMemberFunction("getOutfit", &Creature::getOutfit); g_lua.registerClass(); g_lua.registerClass(); - g_lua.registerClass(); + g_lua.registerClass(); g_lua.registerClass(); g_lua.registerClass();