From 8423382fb034d3f1734590f7f246b73f3aa646aa Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 31 Oct 2021 23:07:56 +0100 Subject: Core/Chat: Implement hyperlink validation for new link types --- src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp | 14 ++++++++++++++ src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 7 +++++++ 2 files changed, 21 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 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::TryConsume( return args; } +struct CurrencyTypesVisitor +{ + using value_type = CurrencyTypesEntry const*; + value_type operator()(Hyperlink currency) const { return currency->Currency; } + value_type operator()(uint32 currencyId) const { return sCurrencyTypesStore.LookupEntry(currencyId); } +}; +char const* Trinity::ChatCommands::ArgInfo::TryConsume(CurrencyTypesEntry const*& data, char const* args) +{ + Variant , uint32> val; + if ((args = CommandArgsConsumerSingle::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 static char const* TryConsume(AchievementEntry const*&, char const*); }; +// CurrencyTypesEntry* from numeric id or link +template <> +struct TC_GAME_API ArgInfo +{ + static char const* TryConsume(CurrencyTypesEntry const*&, char const*); +}; + // GameTele* from string name or link template <> struct TC_GAME_API ArgInfo -- cgit v1.2.3