diff options
Diffstat (limited to 'src/server/game/Chat/ChatCommands')
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp | 15 | ||||
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 7 |
2 files changed, 22 insertions, 0 deletions
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<GameTele const*>::TryConsume(GameTele return args; } +struct SpellInfoVisitor +{ + using value_type = SpellInfo const*; + value_type operator()(Hyperlink<spell> spell) const { return spell->Spell; } + value_type operator()(uint32 spellId) const { return sSpellMgr->GetSpellInfo(spellId, DIFFICULTY_NONE); } +}; +char const* Trinity::ChatCommands::ArgInfo<SpellInfo const*>::TryConsume(SpellInfo const*& data, char const* args) +{ + Variant<Hyperlink<spell>, uint32> val; + if ((args = CommandArgsConsumerSingle<decltype(val)>::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<GameTele const*> static char const* TryConsume(GameTele const*&, char const*); }; +// SpellInfo const* from spell id or link +template <> +struct TC_GAME_API ArgInfo<SpellInfo const*> +{ + static char const* TryConsume(SpellInfo const*&, char const*); +}; + // bool from 1/0 or on/off template <> struct TC_GAME_API ArgInfo<bool> |
