AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
Acore::WorldWorldTextBuilder Class Reference

Public Types

typedef std::vector< WorldPacket * > WorldPacketList
 

Public Member Functions

 WorldWorldTextBuilder (uint32 textId, va_list *args=nullptr)
 
void operator() (WorldPacketList &data_list, LocaleConstant loc_idx)
 

Private Member Functions

char * lineFromMessage (char *&pos)
 
void do_helper (WorldPacketList &data_list, char *text)
 

Private Attributes

uint32 i_textId
 
va_list * i_args
 

Detailed Description

Member Typedef Documentation

◆ WorldPacketList

Constructor & Destructor Documentation

◆ WorldWorldTextBuilder()

Acore::WorldWorldTextBuilder::WorldWorldTextBuilder ( uint32  textId,
va_list *  args = nullptr 
)
inlineexplicit
2538: i_textId(textId), i_args(args) {}
uint32 i_textId
Definition: World.cpp:2571
va_list * i_args
Definition: World.cpp:2572

Member Function Documentation

◆ do_helper()

void Acore::WorldWorldTextBuilder::do_helper ( WorldPacketList data_list,
char *  text 
)
inlineprivate
2561 {
2562 char* pos = text;
2563 while (char* line = lineFromMessage(pos))
2564 {
2565 WorldPacket* data = new WorldPacket();
2566 ChatHandler::BuildChatPacket(*data, CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
2567 data_list.push_back(data);
2568 }
2569 }
@ CHAT_MSG_SYSTEM
Definition: SharedDefines.h:3152
@ LANG_UNIVERSAL
Definition: SharedDefines.h:735
static size_t BuildChatPacket(WorldPacket &data, ChatMsg chatType, Language language, ObjectGuid senderGUID, ObjectGuid receiverGUID, std::string_view message, uint8 chatTag, std::string const &senderName="", std::string const &receiverName="", uint32 achievementId=0, bool gmMessage=false, std::string const &channelName="")
Definition: Chat.cpp:201
Definition: WorldPacket.h:27
char * lineFromMessage(char *&pos)
Definition: World.cpp:2559

References ChatHandler::BuildChatPacket(), CHAT_MSG_SYSTEM, LANG_UNIVERSAL, and lineFromMessage().

Referenced by operator()().

◆ lineFromMessage()

char * Acore::WorldWorldTextBuilder::lineFromMessage ( char *&  pos)
inlineprivate
2559{ char* start = strtok(pos, "\n"); pos = nullptr; return start; }

Referenced by do_helper().

◆ operator()()

void Acore::WorldWorldTextBuilder::operator() ( WorldPacketList data_list,
LocaleConstant  loc_idx 
)
inline
2540 {
2541 char const* text = sObjectMgr->GetAcoreString(i_textId, loc_idx);
2542
2543 if (i_args)
2544 {
2545 // we need copy va_list before use or original va_list will corrupted
2546 va_list ap;
2547 va_copy(ap, *i_args);
2548
2549 char str[2048];
2550 vsnprintf(str, 2048, text, ap);
2551 va_end(ap);
2552
2553 do_helper(data_list, &str[0]);
2554 }
2555 else
2556 do_helper(data_list, (char*)text);
2557 }
#define sObjectMgr
Definition: ObjectMgr.h:1640
void do_helper(WorldPacketList &data_list, char *text)
Definition: World.cpp:2560

References do_helper(), i_args, i_textId, and sObjectMgr.

Member Data Documentation

◆ i_args

va_list* Acore::WorldWorldTextBuilder::i_args
private

Referenced by operator()().

◆ i_textId

uint32 Acore::WorldWorldTextBuilder::i_textId
private

Referenced by operator()().