diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-04-28 00:11:24 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-04-28 00:11:24 +0200 |
commit | d78f08aa9e1966b25d248bdb38f6ecceed425e41 (patch) | |
tree | d0d4b0863876a099c0f17f52763f2bcc95b48659 /src/server/game/Chat/Hyperlinks.cpp | |
parent | 6d4a0ad8eb96ba405352735ef69c148c232f6f1e (diff) |
Core/Chat: Implemented more chat link types
Closes #28946
Diffstat (limited to 'src/server/game/Chat/Hyperlinks.cpp')
-rw-r--r-- | src/server/game/Chat/Hyperlinks.cpp | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/src/server/game/Chat/Hyperlinks.cpp b/src/server/game/Chat/Hyperlinks.cpp index 1e35f68b485..2d991fd05bf 100644 --- a/src/server/game/Chat/Hyperlinks.cpp +++ b/src/server/game/Chat/Hyperlinks.cpp @@ -217,6 +217,23 @@ struct LinkValidator<LinkTags::battlepet> }; template <> +struct LinkValidator<LinkTags::battlePetAbil> +{ + static bool IsTextValid(BattlePetAbilLinkData const& data, std::string_view text) + { + for (LocaleConstant i = LOCALE_enUS; i < TOTAL_LOCALES; i = LocaleConstant(i + 1)) + if (data.Ability->Name[i] == text) + return true; + return false; + } + + static bool IsColorValid(BattlePetAbilLinkData const&, HyperlinkColor c) + { + return c == CHAT_LINK_COLOR_BATTLE_PET_ABIL; + } +}; + +template <> struct LinkValidator<LinkTags::conduit> { static bool IsTextValid(SoulbindConduitRankEntry const* rank, std::string_view text) @@ -497,14 +514,28 @@ struct LinkValidator<LinkTags::mawpower> }; template <> +struct LinkValidator<LinkTags::mount> +{ + static bool IsTextValid(MountLinkData const& data, std::string_view text) + { + return LinkValidator<LinkTags::spell>::IsTextValid(data.Spell, text); + } + + static bool IsColorValid(MountLinkData const&, HyperlinkColor c) + { + return c == CHAT_LINK_COLOR_SPELL; + } +}; + +template <> struct LinkValidator<LinkTags::outfit> { - static bool IsTextValid(std::string const&, std::string_view) + static bool IsTextValid(std::string_view, std::string_view) { return true; } - static bool IsColorValid(std::string const&, HyperlinkColor c) + static bool IsColorValid(std::string_view, HyperlinkColor c) { return c == CHAT_LINK_COLOR_TRANSMOG; } @@ -658,15 +689,20 @@ static bool ValidateLinkInfo(HyperlinkInfo const& info) { using namespace LinkTags; TryValidateAs(achievement); + TryValidateAs(api); TryValidateAs(apower); TryValidateAs(azessence); TryValidateAs(area); TryValidateAs(areatrigger); TryValidateAs(battlepet); + TryValidateAs(battlePetAbil); + TryValidateAs(clubFinder); + TryValidateAs(clubTicket); TryValidateAs(conduit); TryValidateAs(creature); TryValidateAs(creature_entry); TryValidateAs(currency); + TryValidateAs(dungeonScore); TryValidateAs(enchant); TryValidateAs(gameevent); TryValidateAs(gameobject); @@ -680,6 +716,7 @@ static bool ValidateLinkInfo(HyperlinkInfo const& info) TryValidateAs(journal); TryValidateAs(keystone); TryValidateAs(mawpower); + TryValidateAs(mount); TryValidateAs(outfit); TryValidateAs(player); TryValidateAs(pvptal); @@ -687,6 +724,7 @@ static bool ValidateLinkInfo(HyperlinkInfo const& info) TryValidateAs(skill); TryValidateAs(spell); TryValidateAs(talent); + TryValidateAs(talentbuild); TryValidateAs(taxinode); TryValidateAs(tele); TryValidateAs(title); |