From fdcef115e00c3fc4242d8e6372a5bf349bc06c43 Mon Sep 17 00:00:00 2001 From: Treeston Date: Thu, 19 Mar 2020 16:13:01 +0100 Subject: Core/Chat: Add SpellInfo const* handler for command args. Use it to update .cast . (cherry picked from commit 7ac6ccb36ba6ffba542f3e9a60bca4d9e6a6b84d) --- src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp | 15 +++++++++++++++ src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 7 +++++++ 2 files changed, 22 insertions(+) (limited to 'src/server/game/Chat/ChatCommands') diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index 340a13bd15d..6029089972b 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -19,6 +19,7 @@ #include "ChatCommand.h" #include "DB2Stores.h" #include "ObjectMgr.h" +#include "SpellMgr.h" using namespace Trinity::ChatCommands; @@ -64,6 +65,20 @@ char const* Trinity::ChatCommands::ArgInfo::TryConsume(GameTele return args; } +struct SpellInfoVisitor +{ + using value_type = SpellInfo const*; + value_type operator()(Hyperlink spell) const { return spell->Spell; } + value_type operator()(uint32 spellId) const { return sSpellMgr->GetSpellInfo(spellId, DIFFICULTY_NONE); } +}; +char const* Trinity::ChatCommands::ArgInfo::TryConsume(SpellInfo const*& data, char const* args) +{ + Variant, uint32> val; + if ((args = CommandArgsConsumerSingle::TryConsumeTo(val, args))) + data = boost::apply_visitor(SpellInfoVisitor(), val); + return args; +} + struct BoolVisitor { using value_type = bool; diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h index db5deddb1dc..1ef74c2430f 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h @@ -130,6 +130,13 @@ struct TC_GAME_API ArgInfo static char const* TryConsume(GameTele const*&, char const*); }; +// SpellInfo const* from spell id or link +template <> +struct TC_GAME_API ArgInfo +{ + static char const* TryConsume(SpellInfo const*&, char const*); +}; + // bool from 1/0 or on/off template <> struct TC_GAME_API ArgInfo -- cgit v1.2.3