aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Texts
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-06-15 00:25:18 +0200
committerShauren <shauren.trinity@gmail.com>2015-06-15 00:25:18 +0200
commit66d8ccde7f81675be418dfe49025260d9be24dae (patch)
tree06958193a851a3d653d448daa0ce409fff98db14 /src/server/game/Texts
parentee01fad0d2af0be7b66cb49d9e23867996792b00 (diff)
Core/PacketIO: Fixed chat packet building in CreatureTextMgr
Closes #14871
Diffstat (limited to 'src/server/game/Texts')
-rw-r--r--src/server/game/Texts/ChatTextBuilder.h18
-rw-r--r--src/server/game/Texts/CreatureTextMgr.cpp18
-rw-r--r--src/server/game/Texts/CreatureTextMgr.h8
3 files changed, 21 insertions, 23 deletions
diff --git a/src/server/game/Texts/ChatTextBuilder.h b/src/server/game/Texts/ChatTextBuilder.h
index 167680f1cd2..68cd375edb6 100644
--- a/src/server/game/Texts/ChatTextBuilder.h
+++ b/src/server/game/Texts/ChatTextBuilder.h
@@ -30,13 +30,12 @@ namespace Trinity
BroadcastTextBuilder(Unit const* obj, ChatMsg msgType, uint32 textId, WorldObject const* target = nullptr, uint32 achievementId = 0)
: _source(obj), _msgType(msgType), _textId(textId), _target(target), _achievementId(achievementId) { }
- void operator()(WorldPacket& data, LocaleConstant locale)
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
BroadcastTextEntry const* bct = sBroadcastTextStore.LookupEntry(_textId);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _source->getGender()) : "", _achievementId, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _source->getGender()) : "", _achievementId, "", locale);
+ return chat;
}
private:
@@ -53,12 +52,11 @@ namespace Trinity
CustomChatTextBuilder(WorldObject const* obj, ChatMsg msgType, std::string const& text, Language language = LANG_UNIVERSAL, WorldObject const* target = nullptr)
: _source(obj), _msgType(msgType), _text(text), _language(language), _target(target) { }
- void operator()(WorldPacket& data, LocaleConstant locale)
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, _language, _source, _target, _text, 0, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, _language, _source, _target, _text, 0, "", locale);
+ return chat;
}
private:
diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp
index c1ea235a3e2..4d61e2ec5d2 100644
--- a/src/server/game/Texts/CreatureTextMgr.cpp
+++ b/src/server/game/Texts/CreatureTextMgr.cpp
@@ -33,13 +33,12 @@ class CreatureTextBuilder
CreatureTextBuilder(WorldObject const* obj, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
: _source(obj), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
- void operator()(WorldPacket& data, LocaleConstant locale) const
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(_source->GetEntry(), _gender, _textGroup, _textId, locale);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, Language(_language), _source, _target, text, 0, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, Language(_language), _source, _target, text, 0, "", locale);
+ return chat;
}
private:
@@ -58,13 +57,12 @@ class PlayerTextBuilder
PlayerTextBuilder(WorldObject const* obj, WorldObject const* speaker, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
: _source(obj), _talker(speaker), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
- void operator()(WorldPacket& data, LocaleConstant locale) const
+ WorldPackets::Chat::Chat* operator()(LocaleConstant locale) const
{
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(_source->GetEntry(), _gender, _textGroup, _textId, locale);
- WorldPackets::Chat::Chat packet;
- packet.Initialize(_msgType, Language(_language), _talker, _target, text, 0, "", locale);
- packet.Write();
- data = packet.Move();
+ WorldPackets::Chat::Chat* chat = new WorldPackets::Chat::Chat();
+ chat->Initialize(_msgType, Language(_language), _talker, _target, text, 0, "", locale);
+ return chat;
}
private:
diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h
index 307f6ece4f8..f2963006599 100644
--- a/src/server/game/Texts/CreatureTextMgr.h
+++ b/src/server/game/Texts/CreatureTextMgr.h
@@ -145,23 +145,25 @@ class CreatureTextLocalizer
// create if not cached yet
if (!_packetCache[loc_idx])
{
- messageTemplate = new WorldPackets::Chat::Chat();
+ messageTemplate = _builder(loc_idx);
_packetCache[loc_idx] = messageTemplate;
}
else
messageTemplate = _packetCache[loc_idx];
+ WorldPackets::Chat::Chat message(*messageTemplate);
+
switch (_msgType)
{
case CHAT_MSG_MONSTER_WHISPER:
case CHAT_MSG_RAID_BOSS_WHISPER:
- messageTemplate->TargetGUID = player->GetGUID();
+ message.SetReceiver(player, loc_idx);
break;
default:
break;
}
- player->SendDirectMessage(messageTemplate->Write());
+ player->SendDirectMessage(message.Write());
}
private: