18#ifndef TRINITYCORE_CHAT_H
19#define TRINITYCORE_CHAT_H
26#include <fmt/printf.h>
45 bool IsConsole()
const {
return (m_session ==
nullptr); }
52 static char*
LineFromMessage(
char*& pos) {
char* start = strtok(pos,
"\n"); pos =
nullptr;
return start; }
55 virtual char const* GetTrinityString(
uint32 entry)
const;
56 virtual void SendSysMessage(std::string_view str,
bool escapeCharacters =
false);
58 void SendSysMessage(
uint32 entry);
60 template<
typename... Args>
63 SendSysMessage(StringVPrintf(
fmt, fmt::make_printf_args(args...)));
66 template<
typename... Args>
69 SendSysMessage(PGetParseString(entry, std::forward<Args>(args)...));
72 template<
typename... Args>
75 return StringVPrintf(
fmt, fmt::make_printf_args(args...));
78 template<
typename... Args>
81 return PGetParseString(GetTrinityString(entry), std::forward<Args>(args)...);
84 static std::string StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs);
86 bool _ParseCommands(std::string_view text);
87 virtual bool ParseCommands(std::string_view text);
89 void SendGlobalSysMessage(
const char *str);
93 virtual bool HasPermission(
uint32 permission)
const;
94 virtual std::string GetNameLink()
const;
95 virtual bool needReportToTarget(
Player* chr)
const;
100 bool HasLowerSecurityAccount(
WorldSession* target,
uint32 account,
bool strong =
false);
102 void SendGlobalGMSysMessage(
const char *str);
103 Player* getSelectedPlayer();
105 Unit* getSelectedUnit();
108 Player* getSelectedPlayerOrSelf();
110 char* extractKeyFromLink(
char* text,
char const* linkType,
char** something1 =
nullptr);
111 char* extractKeyFromLink(
char* text,
char const*
const* linkTypes,
int* found_idx,
char** something1 =
nullptr);
112 char* extractQuotedArg(
char* args);
114 bool GetPlayerGroupAndGUIDByName(
char const* cname,
Player*& player,
Group*& group,
ObjectGuid& guid,
bool offline =
false);
115 std::string extractPlayerNameFromLink(
char* text);
117 bool extractPlayerTarget(
char* args,
Player** player,
ObjectGuid* player_guid =
nullptr, std::string* player_name =
nullptr);
119 std::string
playerLink(std::string
const& name)
const {
return m_session ?
"|cffffffff|Hplayer:"+name+
"|h["+name+
"]|h|r" : name; }
120 std::string GetNameLink(
Player const* chr)
const;
128 explicit ChatHandler() : m_session(nullptr), sentErrorMessage(false) { }
140 using Print = void(
void*, std::string_view);
141 explicit CliHandler(
void* callbackArg,
Print* zprint) : m_callbackArg(callbackArg), m_print(zprint) { }
144 char const* GetTrinityString(
uint32 entry)
const override;
146 void SendSysMessage(std::string_view,
bool escapeCharacters)
override;
147 bool ParseCommands(std::string_view str)
override;
148 std::string GetNameLink()
const override;
149 bool needReportToTarget(
Player* chr)
const override;
164 bool ParseCommands(std::string_view str)
override;
165 void SendSysMessage(std::string_view,
bool escapeCharacters)
override;
170 void Send(std::string_view msg);
175 char const* echo =
nullptr;
177 bool humanReadable =
false;
bool IsHumanReadable() const override
static std::string_view const PREFIX
virtual bool IsHumanReadable() const
std::string playerLink(std::string const &name) const
static std::string PGetParseString(std::string_view fmt, Args &&... args)
WorldSession * GetSession()
bool HasSentErrorMessage() const
ChatHandler(WorldSession *session)
std::string PGetParseString(uint32 entry, Args &&... args) const
void SetSentErrorMessage(bool val)
void PSendSysMessage(char const *fmt, Args &&... args)
WorldSession const * GetSession() const
static char * LineFromMessage(char *&pos)
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
void PSendSysMessage(uint32 entry, Args &&... args)
CliHandler(void *callbackArg, Print *zprint)
void(void *, std::string_view) Print
bool HasPermission(uint32) const override
Player session in the World.