From 5f541491074765a346c7d0a83edb5f1fbf9240b1 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Sun, 14 Jan 2018 18:48:01 +0100 Subject: Core/Battleground: Dropped battleground texts from trinity_string and replaced them with proper BroadcastText (cherry picked from commit ed318fdc461ce9ad462c69a0b9f6c572c8c962a5) Fixed nopch build (cherry picked from commit 6eff69818b17d68862aac609cf211ccd802e3afa) Fixed nopch build again (cherry picked from commit 3039f4bf86bda5d9fd2c50d6ae71fcb9d10eb185) --- src/server/game/Texts/ChatTextBuilder.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'src/server/game/Texts/ChatTextBuilder.cpp') diff --git a/src/server/game/Texts/ChatTextBuilder.cpp b/src/server/game/Texts/ChatTextBuilder.cpp index 537d3944b84..8d989c9c281 100644 --- a/src/server/game/Texts/ChatTextBuilder.cpp +++ b/src/server/game/Texts/ChatTextBuilder.cpp @@ -18,21 +18,42 @@ #include "ChatTextBuilder.h" #include "Chat.h" #include "ObjectMgr.h" -#include "Unit.h" +#include void Trinity::BroadcastTextBuilder::operator()(WorldPacket& data, LocaleConstant locale) const { BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); - ChatHandler::BuildChatPacket(data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _source->getGender()) : "", _achievementId, "", locale); + ChatHandler::BuildChatPacket(data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _gender) : "", _achievementId, "", locale); } size_t Trinity::BroadcastTextBuilder::operator()(WorldPacket* data, LocaleConstant locale) const { BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); - return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _source->getGender()) : "", _achievementId, "", locale); + return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, bct ? bct->GetText(locale, _gender) : "", _achievementId, "", locale); } void Trinity::CustomChatTextBuilder::operator()(WorldPacket& data, LocaleConstant locale) const { ChatHandler::BuildChatPacket(data, _msgType, _language, _source, _target, _text, 0, "", locale); } + +void Trinity::TrinityStringChatBuilder::operator()(WorldPacket& data, LocaleConstant locale) const +{ + 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); + + ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _source, _target, strBuffer, 0, "", locale); + } + else + ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _source, _target, text, 0, "", locale); +} -- cgit v1.2.3