aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-05-01 20:16:10 +0200
committerShauren <shauren.trinity@gmail.com>2021-05-01 20:16:10 +0200
commitfb66575d38d2ba7ffc24c29824fa75d7019de549 (patch)
tree9b263e8914862f92d5e6f2fc23450a2f973df461 /src/server/game/Chat
parentd6dfb6c54c3296461ec73ea5d969f7a5a704541b (diff)
Core/Grids: Move packet sending functionality out of MessageDistDeliverer and into separate, customizable class and unify LocalizedPacketDo, LocalizedPacketListDo as generic localizable action
Diffstat (limited to 'src/server/game/Chat')
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp93
-rw-r--r--src/server/game/Chat/Channels/ChannelAppenders.h14
2 files changed, 59 insertions, 48 deletions
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 11fe3deb710..318c7b76108 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -247,13 +247,14 @@ void Channel::JoinChannel(Player* player, std::string const& pass)
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Channel::ChannelNotifyJoined* notify = new WorldPackets::Channel::ChannelNotifyJoined();
- //notify->ChannelWelcomeMsg = "";
- notify->ChatChannelID = _channelId;
- //notify->InstanceID = 0;
- notify->_ChannelFlags = _channelFlags;
- notify->_Channel = GetName(localeIdx);
- notify->ChannelGUID = _channelGuid;
+ Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotifyJoined>* notify = new Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotifyJoined>();
+ //notify->Data.ChannelWelcomeMsg = "";
+ notify->Data.ChatChannelID = _channelId;
+ //notify->Data.InstanceID = 0;
+ notify->Data._ChannelFlags = _channelFlags;
+ notify->Data._Channel = GetName(localeIdx);
+ notify->Data.ChannelGUID = _channelGuid;
+ notify->Data.Write();
return notify;
};
@@ -309,10 +310,11 @@ void Channel::LeaveChannel(Player* player, bool send, bool suspend)
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Channel::ChannelNotifyLeft* notify = new WorldPackets::Channel::ChannelNotifyLeft();
- notify->Channel = GetName(localeIdx);
- notify->ChatChannelID = _channelId;
- notify->Suspended = suspend;
+ Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotifyLeft>* notify = new Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotifyLeft>();
+ notify->Data.Channel = GetName(localeIdx);
+ notify->Data.ChatChannelID = _channelId;
+ notify->Data.Suspended = suspend;
+ notify->Data.Write();
return notify;
};
@@ -736,16 +738,18 @@ void Channel::Say(ObjectGuid const& guid, std::string const& what, uint32 lang)
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
+ Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>* packet = new Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>();
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
- packet->Initialize(CHAT_MSG_CHANNEL, Language(lang), player, player, what, 0, GetName(localeIdx));
+ packet->Data.Initialize(CHAT_MSG_CHANNEL, Language(lang), player, player, what, 0, GetName(localeIdx));
else
{
- packet->Initialize(CHAT_MSG_CHANNEL, Language(lang), nullptr, nullptr, what, 0, GetName(localeIdx));
- packet->SenderGUID = guid;
- packet->TargetGUID = guid;
+ packet->Data.Initialize(CHAT_MSG_CHANNEL, Language(lang), nullptr, nullptr, what, 0, GetName(localeIdx));
+ packet->Data.SenderGUID = guid;
+ packet->Data.TargetGUID = guid;
}
+ packet->Data.Write();
+
return packet;
};
@@ -778,16 +782,18 @@ void Channel::AddonSay(ObjectGuid const& guid, std::string const& prefix, std::s
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
+ Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>* packet = new Trinity::PacketSenderOwning<WorldPackets::Chat::Chat>();
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
- packet->Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, player, player, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
+ packet->Data.Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, player, player, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
else
{
- packet->Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, nullptr, nullptr, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
- packet->SenderGUID = guid;
- packet->TargetGUID = guid;
+ packet->Data.Initialize(CHAT_MSG_CHANNEL, isLogged ? LANG_ADDON_LOGGED : LANG_ADDON, nullptr, nullptr, what, 0, GetName(localeIdx), DEFAULT_LOCALE, prefix);
+ packet->Data.SenderGUID = guid;
+ packet->Data.TargetGUID = guid;
}
+ packet->Data.Write();
+
return packet;
};
@@ -911,12 +917,13 @@ void Channel::JoinNotify(Player const* player)
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Channel::UserlistAdd* userlistAdd = new WorldPackets::Channel::UserlistAdd();
- userlistAdd->AddedUserGUID = guid;
- userlistAdd->_ChannelFlags = GetFlags();
- userlistAdd->UserFlags = GetPlayerFlags(guid);
- userlistAdd->ChannelID = GetChannelId();
- userlistAdd->ChannelName = GetName(localeIdx);
+ Trinity::PacketSenderOwning<WorldPackets::Channel::UserlistAdd>* userlistAdd = new Trinity::PacketSenderOwning<WorldPackets::Channel::UserlistAdd>();
+ userlistAdd->Data.AddedUserGUID = guid;
+ userlistAdd->Data._ChannelFlags = GetFlags();
+ userlistAdd->Data.UserFlags = GetPlayerFlags(guid);
+ userlistAdd->Data.ChannelID = GetChannelId();
+ userlistAdd->Data.ChannelName = GetName(localeIdx);
+ userlistAdd->Data.Write();
return userlistAdd;
};
@@ -928,12 +935,13 @@ void Channel::JoinNotify(Player const* player)
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Channel::UserlistUpdate* userlistUpdate = new WorldPackets::Channel::UserlistUpdate();
- userlistUpdate->UpdatedUserGUID = guid;
- userlistUpdate->_ChannelFlags = GetFlags();
- userlistUpdate->UserFlags = GetPlayerFlags(guid);
- userlistUpdate->ChannelID = GetChannelId();
- userlistUpdate->ChannelName = GetName(localeIdx);
+ Trinity::PacketSenderOwning<WorldPackets::Channel::UserlistUpdate>* userlistUpdate = new Trinity::PacketSenderOwning<WorldPackets::Channel::UserlistUpdate>();
+ userlistUpdate->Data.UpdatedUserGUID = guid;
+ userlistUpdate->Data._ChannelFlags = GetFlags();
+ userlistUpdate->Data.UserFlags = GetPlayerFlags(guid);
+ userlistUpdate->Data.ChannelID = GetChannelId();
+ userlistUpdate->Data.ChannelName = GetName(localeIdx);
+ userlistUpdate->Data.Write();
return userlistUpdate;
};
@@ -949,11 +957,12 @@ void Channel::LeaveNotify(Player const* player)
{
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Channel::UserlistRemove* userlistRemove = new WorldPackets::Channel::UserlistRemove();
- userlistRemove->RemovedUserGUID = guid;
- userlistRemove->_ChannelFlags = GetFlags();
- userlistRemove->ChannelID = GetChannelId();
- userlistRemove->ChannelName = GetName(localeIdx);
+ Trinity::PacketSenderOwning<WorldPackets::Channel::UserlistRemove>* userlistRemove = new Trinity::PacketSenderOwning<WorldPackets::Channel::UserlistRemove>();
+ userlistRemove->Data.RemovedUserGUID = guid;
+ userlistRemove->Data._ChannelFlags = GetFlags();
+ userlistRemove->Data.ChannelID = GetChannelId();
+ userlistRemove->Data.ChannelName = GetName(localeIdx);
+ userlistRemove->Data.Write();
return userlistRemove;
};
@@ -1000,7 +1009,7 @@ void Channel::SetMute(ObjectGuid const& guid, bool set)
template <class Builder>
void Channel::SendToAll(Builder& builder, ObjectGuid const& guid) const
{
- Trinity::LocalizedPacketDo<Builder> localizer(builder);
+ Trinity::LocalizedDo<Builder> localizer(builder);
for (PlayerContainer::value_type const& i : _playersStore)
if (Player* player = ObjectAccessor::FindConnectedPlayer(i.first))
@@ -1011,7 +1020,7 @@ void Channel::SendToAll(Builder& builder, ObjectGuid const& guid) const
template <class Builder>
void Channel::SendToAllButOne(Builder& builder, ObjectGuid const& who) const
{
- Trinity::LocalizedPacketDo<Builder> localizer(builder);
+ Trinity::LocalizedDo<Builder> localizer(builder);
for (PlayerContainer::value_type const& i : _playersStore)
if (i.first != who)
@@ -1022,7 +1031,7 @@ void Channel::SendToAllButOne(Builder& builder, ObjectGuid const& who) const
template <class Builder>
void Channel::SendToOne(Builder& builder, ObjectGuid const& who) const
{
- Trinity::LocalizedPacketDo<Builder> localizer(builder);
+ Trinity::LocalizedDo<Builder> localizer(builder);
if (Player* player = ObjectAccessor::FindConnectedPlayer(who))
localizer(player);
@@ -1031,7 +1040,7 @@ void Channel::SendToOne(Builder& builder, ObjectGuid const& who) const
template <class Builder>
void Channel::SendToAllWithAddon(Builder& builder, std::string const& addonPrefix, ObjectGuid const& guid /*= ObjectGuid::Empty*/) const
{
- Trinity::LocalizedPacketDo<Builder> localizer(builder);
+ Trinity::LocalizedDo<Builder> localizer(builder);
for (PlayerContainer::value_type const& i : _playersStore)
if (Player* player = ObjectAccessor::FindConnectedPlayer(i.first))
diff --git a/src/server/game/Chat/Channels/ChannelAppenders.h b/src/server/game/Chat/Channels/ChannelAppenders.h
index eb7b9d70c4c..b520f3e8b2a 100644
--- a/src/server/game/Chat/Channels/ChannelAppenders.h
+++ b/src/server/game/Chat/Channels/ChannelAppenders.h
@@ -21,6 +21,7 @@
#include "Channel.h"
#include "ChannelPackets.h"
#include "CharacterCache.h"
+#include "GridNotifiers.h"
#include "World.h"
// initial packet data (notify type and channel name)
@@ -31,16 +32,17 @@ class ChannelNameBuilder
ChannelNameBuilder(Channel const* source, PacketModifier const& modifier)
: _source(source), _modifier(modifier){ }
- WorldPackets::Packet* operator()(LocaleConstant locale) const
+ Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotify>* operator()(LocaleConstant locale) const
{
// LocalizedPacketDo sends client DBC locale, we need to get available to server locale
LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale);
- WorldPackets::Channel::ChannelNotify* data = new WorldPackets::Channel::ChannelNotify();
- data->Type = _modifier.NotificationType;
- data->_Channel = _source->GetName(localeIdx);
- _modifier.Append(*data);
- return data;
+ Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotify>* sender = new Trinity::PacketSenderOwning<WorldPackets::Channel::ChannelNotify>();
+ sender->Data.Type = _modifier.NotificationType;
+ sender->Data._Channel = _source->GetName(localeIdx);
+ _modifier.Append(sender->Data);
+ sender->Data.Write();
+ return sender;
}
private: