QoL: Server-Side mark broadcast
This commit is contained in:
@@ -924,10 +924,35 @@ void CInputLogin::GuildMarkUpload(LPDESC d, const char* c_pData)
|
||||
if (*((DWORD *) p->image + iPixel) != 0x00000000)
|
||||
isEmpty = false;
|
||||
|
||||
DWORD markID = CGuildMarkManager::INVALID_MARK_ID;
|
||||
|
||||
if (isEmpty)
|
||||
rkMarkMgr.DeleteMark(p->gid);
|
||||
else
|
||||
rkMarkMgr.SaveMark(p->gid, p->image);
|
||||
markID = rkMarkMgr.SaveMark(p->gid, p->image);
|
||||
|
||||
// Broadcast mark update to all connected game clients
|
||||
if (markID != CGuildMarkManager::INVALID_MARK_ID)
|
||||
{
|
||||
WORD imgIdx = static_cast<WORD>(markID / CGuildMarkImage::MARK_TOTAL_COUNT);
|
||||
|
||||
TPacketGCMarkUpdate packet;
|
||||
packet.header = HEADER_GC_MARK_UPDATE;
|
||||
packet.guildID = p->gid;
|
||||
packet.imgIdx = imgIdx;
|
||||
|
||||
const DESC_MANAGER::DESC_SET & c_set_desc = DESC_MANAGER::instance().GetClientSet();
|
||||
for (DESC_MANAGER::DESC_SET::const_iterator it = c_set_desc.begin(); it != c_set_desc.end(); ++it)
|
||||
{
|
||||
LPDESC pkDesc = *it;
|
||||
if (pkDesc && pkDesc->GetCharacter())
|
||||
{
|
||||
pkDesc->Packet(&packet, sizeof(packet));
|
||||
}
|
||||
}
|
||||
|
||||
sys_log(0, "MARK_SERVER: GuildMarkUpload: Broadcast mark update for guild %u, imgIdx %u", p->gid, imgIdx);
|
||||
}
|
||||
}
|
||||
|
||||
void CInputLogin::GuildMarkIDXList(LPDESC d, const char* c_pData)
|
||||
|
||||
@@ -212,6 +212,7 @@ enum
|
||||
|
||||
HEADER_GC_MARK_BLOCK = 100,
|
||||
HEADER_GC_MARK_IDXLIST = 102,
|
||||
HEADER_GC_MARK_UPDATE = 103,
|
||||
|
||||
HEADER_GC_TIME = 106,
|
||||
HEADER_GC_CHANGE_NAME = 107,
|
||||
@@ -1814,6 +1815,13 @@ typedef struct packet_mark_block
|
||||
// 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
|
||||
} TPacketGCMarkBlock;
|
||||
|
||||
typedef struct packet_mark_update
|
||||
{
|
||||
uint8_t header;
|
||||
uint32_t guildID;
|
||||
uint16_t imgIdx;
|
||||
} TPacketGCMarkUpdate;
|
||||
|
||||
typedef struct command_symbol_upload
|
||||
{
|
||||
uint8_t header;
|
||||
|
||||
Reference in New Issue
Block a user