aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat/ChatCommands
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-10-31 23:07:56 +0100
committerShauren <shauren.trinity@gmail.com>2021-10-31 23:07:56 +0100
commit8423382fb034d3f1734590f7f246b73f3aa646aa (patch)
tree7ac27a5e8fc53dae8a44a3efcfaca4395f73fe9d /src/server/game/Chat/ChatCommands
parent70a62c39785e65711c5068289e2eaba7fc0880c3 (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.cpp14
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommandArgs.h7
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*>