diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-03-19 16:13:01 +0100 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2020-03-19 16:13:01 +0100 |
| commit | 7ac6ccb36ba6ffba542f3e9a60bca4d9e6a6b84d (patch) | |
| tree | 5cfaf3fc33a38972dd0041f6680f7d67570d44ca /src/server/game/Chat/ChatCommands | |
| parent | f0fe5f8b669fb9f15b18be1cd3cab407e30ffa52 (diff) | |
Core/Chat: Add SpellInfo const* handler for command args. Use it to update .cast <spellId/link> <triggered>.
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 a8b8b6cbf64..62ed5afc6c2 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -19,6 +19,7 @@ #include "AchievementMgr.h" #include "ChatCommand.h" #include "ObjectMgr.h" +#include "SpellMgr.h" using namespace Trinity::ChatCommands; @@ -50,6 +51,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; } + value_type operator()(uint32 spellId) const { return sSpellMgr->GetSpellInfo(spellId); } +}; +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 a72945ca4b6..db7d852a63d 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h @@ -123,6 +123,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> |
