diff options
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*> |
