aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Texts/ChatTextBuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Texts/ChatTextBuilder.cpp')
-rw-r--r--src/server/game/Texts/ChatTextBuilder.cpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/server/game/Texts/ChatTextBuilder.cpp b/src/server/game/Texts/ChatTextBuilder.cpp
index 7291f2e1dbf..45827e3271b 100644
--- a/src/server/game/Texts/ChatTextBuilder.cpp
+++ b/src/server/game/Texts/ChatTextBuilder.cpp
@@ -18,13 +18,13 @@
#include "ChatTextBuilder.h"
#include "ChatPackets.h"
#include "DB2Stores.h"
-#include "Unit.h"
+#include <cstdarg>
WorldPackets::Packet* Trinity::BroadcastTextBuilder::operator()(LocaleConstant locale) const
{
BroadcastTextEntry const* bct = sBroadcastTextStore.LookupEntry(_textId);
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);
+ chat->Initialize(_msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? DB2Manager::GetBroadcastTextValue(bct, locale, _gender) : "", _achievementId, "", locale);
return chat;
}
@@ -34,3 +34,28 @@ WorldPackets::Packet* Trinity::CustomChatTextBuilder::operator()(LocaleConstant
chat->Initialize(_msgType, _language, _source, _target, _text, 0, "", locale);
return chat;
}
+
+WorldPackets::Packet* Trinity::TrinityStringChatBuilder::operator()(LocaleConstant locale) const
+{
+ WorldPackets::Chat::Chat* packet = new WorldPackets::Chat::Chat();
+
+ char const* text = sObjectMgr->GetTrinityString(_textId, locale);
+
+ if (_args)
+ {
+ // we need copy va_list before use or original va_list will corrupted
+ va_list ap;
+ va_copy(ap, *_args);
+
+ static size_t const BufferSize = 2048;
+ char strBuffer[BufferSize];
+ vsnprintf(strBuffer, BufferSize, text, ap);
+ va_end(ap);
+
+ packet->Initialize(_msgType, LANG_UNIVERSAL, _source, _target, strBuffer, 0, "", locale);
+ }
+ else
+ packet->Initialize(_msgType, LANG_UNIVERSAL, _source, _target, text, 0, "", locale);
+
+ return packet;
+}