diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-03-19 16:13:01 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-12-24 00:34:08 +0100 |
| commit | fdcef115e00c3fc4242d8e6372a5bf349bc06c43 (patch) | |
| tree | eb559d13c09e134474d1c569217078535b7740d9 /src/server/game | |
| parent | e7295fd3de2ac45825ce0876b7199c8cec635d99 (diff) | |
Core/Chat: Add SpellInfo const* handler for command args. Use it to update .cast <spellId/link> <triggered>.
(cherry picked from commit 7ac6ccb36ba6ffba542f3e9a60bca4d9e6a6b84d)
Diffstat (limited to 'src/server/game')
| -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> |
