diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-09-20 02:50:38 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-27 20:08:41 +0100 |
| commit | 3fd2eb126cbed36292fa5defc024c2b93e8d8671 (patch) | |
| tree | 6068f6e874d7552fcf00a92ca75a85381323a038 /src/server/game/Chat/Chat.h | |
| parent | 7a2c3af98831364988db25dd1bdd8ca10464c641 (diff) | |
[3.3.5] ChatCommands, the other half: chat command resolution refactor (PR #25463)
(cherry picked from commit 1eca51b417678b9a48b28552925d5694105f82bb)
Diffstat (limited to 'src/server/game/Chat/Chat.h')
| -rw-r--r-- | src/server/game/Chat/Chat.h | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index edb5858ac7c..5af87f472e9 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -20,9 +20,7 @@ #include "ObjectGuid.h" #include "StringFormat.h" -#include <vector> -class ChatCommand; class ChatHandler; class Creature; class GameObject; @@ -39,8 +37,10 @@ enum LocaleConstant : uint8; class TC_GAME_API ChatHandler { public: + bool IsConsole() const { return (m_session == nullptr); } WorldSession* GetSession() { return m_session; } - Player* GetPlayer(); + WorldSession const* GetSession() const { return m_session; } + Player* GetPlayer() const; explicit ChatHandler(WorldSession* session) : m_session(session), sentErrorMessage(false) { } virtual ~ChatHandler() { } @@ -70,19 +70,12 @@ class TC_GAME_API ChatHandler return Trinity::StringFormat(GetTrinityString(entry), std::forward<Args>(args)...); } - bool _ParseCommands(char const* text); - virtual bool ParseCommands(char const* text); - - static std::vector<ChatCommand> const& getCommandTable(); - static void InitializeCommandTable(); - static void invalidateCommandTable(); + bool _ParseCommands(std::string_view text); + virtual bool ParseCommands(std::string_view text); void SendGlobalSysMessage(const char *str); - bool hasStringAbbr(const char* name, const char* part); - // function with different implementation for chat/console - virtual bool isAvailable(ChatCommand const& cmd) const; virtual bool IsHumanReadable() const { return true; } virtual bool HasPermission(uint32 permission) const; virtual std::string GetNameLink() const; @@ -119,13 +112,8 @@ class TC_GAME_API ChatHandler Creature* GetCreatureFromPlayerMapByDbGuid(ObjectGuid::LowType lowguid); bool HasSentErrorMessage() const { return sentErrorMessage; } void SetSentErrorMessage(bool val){ sentErrorMessage = val; } - - bool ShowHelpForCommand(std::vector<ChatCommand> const& table, const char* cmd); protected: explicit ChatHandler() : m_session(nullptr), sentErrorMessage(false) { } // for CLI subclass - static bool SetDataForCommandInTable(std::vector<ChatCommand>& table, const char* text, uint32 permission, std::string const& help, std::string const& fullcommand); - bool ExecuteCommandInTable(std::vector<ChatCommand> const& table, const char* text, std::string const& fullcmd); - bool ShowHelpForSubCommands(std::vector<ChatCommand> const& table, char const* cmd, char const* subcmd); private: WorldSession* m_session; // != nullptr for chat command call and nullptr for CLI command @@ -142,10 +130,9 @@ class TC_GAME_API CliHandler : public ChatHandler // overwrite functions char const* GetTrinityString(uint32 entry) const override; - bool isAvailable(ChatCommand const& cmd) const override; bool HasPermission(uint32 /*permission*/) const override { return true; } void SendSysMessage(std::string_view, bool escapeCharacters) override; - bool ParseCommands(char const* str) override; + bool ParseCommands(std::string_view str) override; std::string GetNameLink() const override; bool needReportToTarget(Player* chr) const override; LocaleConstant GetSessionDbcLocale() const override; @@ -162,7 +149,7 @@ class TC_GAME_API AddonChannelCommandHandler : public ChatHandler static std::string const PREFIX; using ChatHandler::ChatHandler; - bool ParseCommands(char const* str) override; + bool ParseCommands(std::string_view str) override; void SendSysMessage(std::string_view, bool escapeCharacters) override; using ChatHandler::SendSysMessage; bool IsHumanReadable() const override { return humanReadable; } |
