aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat/Chat.h
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-09-20 02:50:38 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-27 20:08:41 +0100
commit3fd2eb126cbed36292fa5defc024c2b93e8d8671 (patch)
tree6068f6e874d7552fcf00a92ca75a85381323a038 /src/server/game/Chat/Chat.h
parent7a2c3af98831364988db25dd1bdd8ca10464c641 (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.h27
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; }