diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-10-31 23:07:56 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-10-31 23:07:56 +0100 |
| commit | 8423382fb034d3f1734590f7f246b73f3aa646aa (patch) | |
| tree | 7ac27a5e8fc53dae8a44a3efcfaca4395f73fe9d /src/server/game/Chat/ChatCommands | |
| parent | 70a62c39785e65711c5068289e2eaba7fc0880c3 (diff) | |
Core/Chat: Implement hyperlink validation for new link types
Diffstat (limited to 'src/server/game/Chat/ChatCommands')
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 7 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index 20893d9df90..340a13bd15d 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -36,6 +36,20 @@ char const* Trinity::ChatCommands::ArgInfo<AchievementEntry const*>::TryConsume( return args; } +struct CurrencyTypesVisitor +{ + using value_type = CurrencyTypesEntry const*; + value_type operator()(Hyperlink<currency> currency) const { return currency->Currency; } + value_type operator()(uint32 currencyId) const { return sCurrencyTypesStore.LookupEntry(currencyId); } +}; +char const* Trinity::ChatCommands::ArgInfo<CurrencyTypesEntry const*>::TryConsume(CurrencyTypesEntry const*& data, char const* args) +{ + Variant <Hyperlink<currency>, uint32> val; + if ((args = CommandArgsConsumerSingle<decltype(val)>::TryConsumeTo(val, args))) + data = boost::apply_visitor(CurrencyTypesVisitor(), val); + return args; +} + struct GameTeleVisitor { using value_type = GameTele const*; diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h index 110103ebb83..db5deddb1dc 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h @@ -116,6 +116,13 @@ struct TC_GAME_API ArgInfo<AchievementEntry const*> static char const* TryConsume(AchievementEntry const*&, char const*); }; +// CurrencyTypesEntry* from numeric id or link +template <> +struct TC_GAME_API ArgInfo<CurrencyTypesEntry const*> +{ + static char const* TryConsume(CurrencyTypesEntry const*&, char const*); +}; + // GameTele* from string name or link template <> struct TC_GAME_API ArgInfo<GameTele const*> |
