diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-09-02 19:17:56 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-09-02 19:27:27 +0200 |
| commit | 6d2b8511547004b997cc1de76cdbaf5498b8b12c (patch) | |
| tree | efff0e743318d63b011f6aed08bc7a51f4589d41 /src/server/game/Chat/ChatCommands | |
| parent | 10302dca55ffc7db8c8cfc5b42f68bb082b1e8d7 (diff) | |
Core/Commands: Convert quest commands to new system
Diffstat (limited to 'src/server/game/Chat/ChatCommands')
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp | 17 | ||||
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommandArgs.h | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index 727f84fa633..8989a5a2cba 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -93,6 +93,23 @@ ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo<ItemTemplate const*>::Try return std::nullopt; } +struct QuestVisitor +{ + using value_type = Quest const*; + value_type operator()(Hyperlink<quest> quest) const { return quest->Quest; } + value_type operator()(uint32 questId) const { return sObjectMgr->GetQuestTemplate(questId); } +}; +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo<Quest const*, void>::TryConsume(Quest const*& data, ChatHandler const* handler, std::string_view args) +{ + Variant<Hyperlink<quest>, uint32> val; + ChatCommandResult result = ArgInfo<decltype(val)>::TryConsume(val, handler, args); + if (!result || (data = val.visit(QuestVisitor()))) + return result; + if (uint32* id = std::get_if<uint32>(&val)) + return FormatTrinityString(handler, LANG_CMDPARSER_QUEST_NO_EXIST, *id); + return std::nullopt; +} + struct SpellInfoVisitor { using value_type = SpellInfo const*; diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h index 7262b8f180c..7788e9f50ee 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h @@ -319,6 +319,13 @@ namespace Trinity::Impl::ChatCommands static ChatCommandResult TryConsume(ItemTemplate const*&, ChatHandler const*, std::string_view); }; + // Quest* from numeric id or link + template <> + struct TC_GAME_API ArgInfo<Quest const*> + { + static ChatCommandResult TryConsume(Quest const*&, ChatHandler const*, std::string_view); + }; + // SpellInfo const* from spell id or link template <> struct TC_GAME_API ArgInfo<SpellInfo const*> |
