mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-27 23:56:25 +00:00
refactor(Core/ChatHandler): Cleanup retriving session and checking fo… (#19585)
* refactor(Core/ChatHandler): Cleanup retriving session and checking for valid session * redundant * make it clear what a "valid" session is * HasValidSession -> HasSession * Differentiate from "valid" which in this case would mean the player is in world which isnt checked here
This commit is contained in:
@@ -55,12 +55,14 @@ public:
|
||||
template<typename... Args>
|
||||
void SendNotification(uint32 strId, Args&&... args)
|
||||
{
|
||||
SendNotification(Acore::StringFormatFmt(GetAcoreString(strId), std::forward<Args>(args)...));
|
||||
if (HasSession())
|
||||
SendNotification(Acore::StringFormatFmt(GetAcoreString(strId), std::forward<Args>(args)...));
|
||||
}
|
||||
template<typename... Args>
|
||||
void SendNotification(char const* fmt, Args&&... args)
|
||||
{
|
||||
SendNotification(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
if (HasSession())
|
||||
SendNotification(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
void SendGMText(std::string_view str);
|
||||
@@ -68,21 +70,21 @@ public:
|
||||
void SendGMText(uint32 strId, Args&&... args)
|
||||
{
|
||||
// GMText should be sent to all sessions
|
||||
SessionMap::const_iterator itr;
|
||||
for (itr = sWorld->GetAllSessions().begin(); itr != sWorld->GetAllSessions().end(); ++itr)
|
||||
{
|
||||
Player* player = itr->second->GetPlayer();
|
||||
if (player && player->IsInWorld())
|
||||
DoForAllValidSessions([&](Player* player)
|
||||
{
|
||||
m_session = player->GetSession();
|
||||
SendGMText(Acore::StringFormatFmt(GetAcoreString(strId), std::forward<Args>(args)...));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
template<typename... Args>
|
||||
void SendGMText(char const* fmt, Args&&... args)
|
||||
{
|
||||
SendGMText(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
// GMText should be sent to all sessions
|
||||
DoForAllValidSessions([&](Player* player)
|
||||
{
|
||||
m_session = player->GetSession();
|
||||
SendGMText(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
});
|
||||
}
|
||||
|
||||
void SendWorldText(std::string_view str);
|
||||
@@ -90,31 +92,21 @@ public:
|
||||
void SendWorldText(uint32 strId, Args&&... args)
|
||||
{
|
||||
// WorldText should be sent to all sessions
|
||||
SessionMap::const_iterator itr;
|
||||
for (itr = sWorld->GetAllSessions().begin(); itr != sWorld->GetAllSessions().end(); ++itr)
|
||||
{
|
||||
Player* player = itr->second->GetPlayer();
|
||||
if (player && player->IsInWorld())
|
||||
DoForAllValidSessions([&](Player* player)
|
||||
{
|
||||
m_session = player->GetSession();
|
||||
SendWorldText(Acore::StringFormatFmt(GetAcoreString(strId), std::forward<Args>(args)...));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
template<typename... Args>
|
||||
void SendWorldText(char const* fmt, Args&&... args)
|
||||
{
|
||||
// WorldTextOptional should be sent to all sessions
|
||||
SessionMap::const_iterator itr;
|
||||
for (itr = sWorld->GetAllSessions().begin(); itr != sWorld->GetAllSessions().end(); ++itr)
|
||||
{
|
||||
Player* player = itr->second->GetPlayer();
|
||||
if (player && player->IsInWorld())
|
||||
// WorldText should be sent to all sessions
|
||||
DoForAllValidSessions([&](Player* player)
|
||||
{
|
||||
m_session = player->GetSession();
|
||||
SendWorldText(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void SendWorldTextOptional(std::string_view str, uint32 flag);
|
||||
@@ -122,31 +114,21 @@ public:
|
||||
void SendWorldTextOptional(uint32 strId, uint32 flag, Args&&... args)
|
||||
{
|
||||
// WorldTextOptional should be sent to all sessions
|
||||
SessionMap::const_iterator itr;
|
||||
for (itr = sWorld->GetAllSessions().begin(); itr != sWorld->GetAllSessions().end(); ++itr)
|
||||
{
|
||||
Player* player = itr->second->GetPlayer();
|
||||
if (player && player->IsInWorld())
|
||||
DoForAllValidSessions([&](Player* player)
|
||||
{
|
||||
m_session = player->GetSession();
|
||||
SendWorldTextOptional(Acore::StringFormatFmt(GetAcoreString(strId), std::forward<Args>(args)...), flag);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
template<typename... Args>
|
||||
void SendWorldTextOptional(char const* fmt, uint32 flag, Args&&... args)
|
||||
{
|
||||
// WorldTextOptional should be sent to all sessions
|
||||
SessionMap::const_iterator itr;
|
||||
for (itr = sWorld->GetAllSessions().begin(); itr != sWorld->GetAllSessions().end(); ++itr)
|
||||
{
|
||||
Player* player = itr->second->GetPlayer();
|
||||
if (player && player->IsInWorld())
|
||||
DoForAllValidSessions([&](Player* player)
|
||||
{
|
||||
m_session = player->GetSession();
|
||||
SendWorldTextOptional(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...), flag);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// function with different implementation for chat/console
|
||||
@@ -159,13 +141,15 @@ public:
|
||||
template<typename... Args>
|
||||
void PSendSysMessage(char const* fmt, Args&&... args)
|
||||
{
|
||||
SendSysMessage(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
if (HasSession())
|
||||
SendSysMessage(Acore::StringFormatFmt(fmt, std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
void PSendSysMessage(uint32 entry, Args&&... args)
|
||||
{
|
||||
SendSysMessage(PGetParseString(entry, std::forward<Args>(args)...));
|
||||
if (HasSession())
|
||||
SendSysMessage(PGetParseString(entry, std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
template<typename... Args>
|
||||
@@ -214,6 +198,11 @@ public:
|
||||
// Returns either the selected player or self if there is no selected player
|
||||
Player* getSelectedPlayerOrSelf() const;
|
||||
|
||||
bool HasSession();
|
||||
// Do whatever you want to all the players with a valid session [including GameMasters], i.e.: param exec = [&](Player* p) { p->Whatever(); }
|
||||
// A "valid" session requires player->IsInWorld() to be true
|
||||
void DoForAllValidSessions(std::function<void(Player*)> exec);
|
||||
|
||||
char* extractKeyFromLink(char* text, char const* linkType, char** something1 = nullptr);
|
||||
char* extractKeyFromLink(char* text, char const* const* linkTypes, int* found_idx, char** something1 = nullptr);
|
||||
char* extractQuotedArg(char* args);
|
||||
|
||||
Reference in New Issue
Block a user