From 57fbb242575a647b3323ede64670d0a7094189e9 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 22 Mar 2015 17:41:58 +0300 Subject: Add adction for show equipped hat in chat. New chat command: /hat Now irc with hats can show actual hat in chat. In some servers even in irc. --- src/actions/chat.cpp | 23 +++++++++++++++++++++-- src/actions/chat.h | 1 + src/input/inputaction.h | 1 + src/input/inputactionmap.h | 5 +++++ src/input/pages/outfits.cpp | 6 ++++++ 5 files changed, 34 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/actions/chat.cpp b/src/actions/chat.cpp index 3f54d0dc4..77991d038 100644 --- a/src/actions/chat.cpp +++ b/src/actions/chat.cpp @@ -33,11 +33,16 @@ #include "gui/windows/chatwindow.h" +#include "net/charserverhandler.h" #include "net/chathandler.h" #include "net/guildhandler.h" #include "net/partyhandler.h" #include "net/serverfeatures.h" +#include "resources/iteminfo.h" + +#include "resources/db/itemdb.h" + #include "utils/booleanoptions.h" #include "utils/chatutils.h" @@ -52,7 +57,7 @@ static void outString(ChatTab *const tab, { if (!tab) { - chatHandler->me(def, GENERAL_CHANNEL); + chatHandler->talk(def, GENERAL_CHANNEL); return; } @@ -97,7 +102,7 @@ static void outString(ChatTab *const tab, case ChatTabType::DEBUG: case ChatTabType::BATTLE: case ChatTabType::LANG: - chatHandler->me(def, GENERAL_CHANNEL); + chatHandler->talk(def, GENERAL_CHANNEL); break; } } @@ -554,4 +559,18 @@ impHandler0(chatGuildTab) return true; } +impHandler0(hat) +{ + if (!localPlayer) + return false; + + const int sprite = localPlayer->getSpriteID( + charServerHandler->hatSprite()); + const ItemInfo &info = ItemDB::get(sprite); + const std::string str = strprintf(_("equipped hat %s."), + info.getName().c_str()); + outString(event.tab, str, str); + return true; +} + } // namespace Actions diff --git a/src/actions/chat.h b/src/actions/chat.h index 9be293bb8..13906a57e 100644 --- a/src/actions/chat.h +++ b/src/actions/chat.h @@ -58,6 +58,7 @@ namespace Actions decHandler(chatGmTab); decHandler(chatPartyTab); decHandler(chatGuildTab); + decHandler(hat); } // namespace Actions #undef decHandler diff --git a/src/input/inputaction.h b/src/input/inputaction.h index 2eb89fc22..1fc45b6d1 100644 --- a/src/input/inputaction.h +++ b/src/input/inputaction.h @@ -590,6 +590,7 @@ namespace InputAction HOMUN_EMOTE_47, HOMUN_EMOTE_48, KICK_GUILD, + HAT, TOTAL }; } // namespace InputAction diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index a8d3853ac..d20201c79 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -4431,6 +4431,11 @@ static const InputActionData inputActionData[InputAction::TOTAL] = { InputCondition::INGAME, "kickguild|guildkick", true}, + {"keyHat", + defaultAction(&Actions::hat), + InputCondition::INGAME, + "hat|hats|showhat", + false}, }; #undef defaultAction diff --git a/src/input/pages/outfits.cpp b/src/input/pages/outfits.cpp index c554b5e28..20715a287 100644 --- a/src/input/pages/outfits.cpp +++ b/src/input/pages/outfits.cpp @@ -56,6 +56,12 @@ SetupActionData setupActionDataOutfits[] = InputAction::COPY_EQUIPED_OUTFIT, "", }, + { + // TRANSLATORS: input action name + N_("Show hat in chat"), + InputAction::HAT, + "", + }, { // TRANSLATORS: input action name N_("Outfits shortcuts"), -- cgit v1.2.3-60-g2f50