From 4a6ffbd08067b64143e0535518a3822953943d80 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 9 Dec 2014 13:10:54 +0300 Subject: Add buy action. New chat command: /buy [name] --- src/actions/commands.cpp | 31 +++++++++++++++++++++++++++++++ src/actions/commands.h | 1 + src/input/inputaction.h | 1 + src/input/inputactionmap.h | 9 +++++++++ src/input/pages/basic.cpp | 6 ++++++ 5 files changed, 48 insertions(+) (limited to 'src') diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index c8d4f2b21..cd35ba9aa 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -37,9 +37,11 @@ #include "gui/widgets/tabs/chat/whispertab.h" #include "net/adminhandler.h" +#include "net/buysellhandler.h" #include "net/chathandler.h" #include "net/guildhandler.h" #include "net/homunculushandler.h" +#include "net/npchandler.h" #include "net/pethandler.h" #include "net/serverfeatures.h" @@ -711,4 +713,33 @@ impHandler0(fireHomunculus) return true; } +impHandler(buy) +{ + const std::string args = event.args; + Being *being = nullptr; + if (args.empty()) + { + being = localPlayer->getTarget(); + } + else + { + being = actorManager->findBeingByName( + args, ActorType::Unknown); + } + if (!being) + return false; + + if (being->getType() == ActorType::Npc) + { + npcHandler->buy(being->getId()); + return true; + } + else if (being->getType() == ActorType::Player) + { + buySellHandler->requestSellList(being->getName()); + return true; + } + return false; +} + } // namespace Actions diff --git a/src/actions/commands.h b/src/actions/commands.h index 085b89663..29fa6ef27 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -76,6 +76,7 @@ namespace Actions decHandler(setPetName); decHandler(setHomunculusName); decHandler(fireHomunculus); + decHandler(buy); } // namespace Actions #undef decHandler diff --git a/src/input/inputaction.h b/src/input/inputaction.h index 91c49ebc6..7187e2914 100644 --- a/src/input/inputaction.h +++ b/src/input/inputaction.h @@ -490,6 +490,7 @@ namespace InputAction PREV_INV_TAB, NEXT_INV_TAB, CONTEXT_MENU, + BUY, TOTAL }; } // namespace InputAction diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 585334713..2a8904503 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -4153,6 +4153,15 @@ static const InputActionData inputActionData[InputAction::TOTAL] = { | InputCondition::NOMODAL | InputCondition::INGAME, "contextmenu", false}, + {"keyBuy", + InputType::UNKNOWN, InputAction::NO_VALUE, + InputType::UNKNOWN, InputAction::NO_VALUE, + Input::GRP_DEFAULT, + &Actions::buy, + InputAction::NO_VALUE, 50, + InputCondition::GAME, + "buy", + false}, }; #endif // INPUT_INPUTACTIONMAP_H diff --git a/src/input/pages/basic.cpp b/src/input/pages/basic.cpp index c4b0db2d3..f514d388b 100644 --- a/src/input/pages/basic.cpp +++ b/src/input/pages/basic.cpp @@ -235,6 +235,12 @@ SetupActionData setupActionDataBasic[] = InputAction::HOMUNCULUS_FIRE, "", }, + { + // TRANSLATORS: input action name + N_("Buy"), + InputAction::BUY, + "", + }, { // TRANSLATORS: input action name N_("Open context menu"), -- cgit v1.2.3-70-g09d2