From 91160e197b1a1f85f21cfad874e80fa286d9294f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 12 Dec 2014 13:40:11 +0300 Subject: Add chat command for use item by id. New chat command: /use ITEMID Alias: /useitem ITEMID --- src/actions/actions.cpp | 28 ++++++++++++++++++++++++++++ src/actions/actions.h | 1 + src/input/inputaction.h | 1 + src/input/inputactionmap.h | 9 +++++++++ 4 files changed, 39 insertions(+) (limited to 'src') diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp index 93e160750..4cd863dc9 100644 --- a/src/actions/actions.cpp +++ b/src/actions/actions.cpp @@ -26,7 +26,9 @@ #include "emoteshortcut.h" #include "game.h" #include "graphicsmanager.h" +#include "inventory.h" #include "itemshortcut.h" +#include "spellmanager.h" #include "actions/actiondef.h" @@ -53,6 +55,7 @@ #include "gui/windows/setupwindow.h" #include "gui/windows/shopwindow.h" #include "gui/windows/shortcutwindow.h" +#include "gui/windows/skilldialog.h" #include "gui/widgets/tabs/chat/chattab.h" @@ -76,6 +79,7 @@ #include "resources/iteminfo.h" #include "resources/resourcemanager.h" +#include "resources/skillconsts.h" #include "resources/db/itemdb.h" @@ -1287,4 +1291,28 @@ impHandler0(mercenaryFire) return true; } +impHandler(useItem) +{ + const int itemId = atoi(event.args.c_str()); + + if (itemId < SPELL_MIN_ID) + { + const Inventory *const inv = PlayerInfo::getInventory(); + if (inv) + { + // +++ ignoring item color for now + const Item *const item = inv->findItem(itemId, 1); + PlayerInfo::useEquipItem(item, true); + } + } + else if (itemId < SKILL_MIN_ID && spellManager) + { + spellManager->useItem(itemId); + } + else if (skillDialog) + { + skillDialog->useItem(itemId); + } +} + } // namespace Actions diff --git a/src/actions/actions.h b/src/actions/actions.h index c614f61c7..642026d76 100644 --- a/src/actions/actions.h +++ b/src/actions/actions.h @@ -92,6 +92,7 @@ namespace Actions decHandler(uploadLog); decHandler(catchPet); decHandler(mercenaryFire); + decHandler(useItem); } // namespace Actions #undef decHandler diff --git a/src/input/inputaction.h b/src/input/inputaction.h index e2fcae031..c020b3b5b 100644 --- a/src/input/inputaction.h +++ b/src/input/inputaction.h @@ -495,6 +495,7 @@ namespace InputAction WHISPER2, GUILD, NUKE, + USE, TOTAL }; } // namespace InputAction diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 1ae660fb0..f51f5f6f5 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -4198,6 +4198,15 @@ static const InputActionData inputActionData[InputAction::TOTAL] = { InputCondition::INGAME, "nuke", true}, + {"keyUse", + InputType::UNKNOWN, InputAction::NO_VALUE, + InputType::UNKNOWN, InputAction::NO_VALUE, + Input::GRP_DEFAULT, + &Actions::useItem, + InputAction::NO_VALUE, 50, + InputCondition::INGAME, + "use|useitem", + true}, }; #endif // INPUT_INPUTACTIONMAP_H -- cgit v1.2.3-60-g2f50