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)
|
if (*((DWORD *) p->image + iPixel) != 0x00000000)
|
||||||
isEmpty = false;
|
isEmpty = false;
|
||||||
|
|
||||||
|
DWORD markID = CGuildMarkManager::INVALID_MARK_ID;
|
||||||
|
|
||||||
if (isEmpty)
|
if (isEmpty)
|
||||||
rkMarkMgr.DeleteMark(p->gid);
|
rkMarkMgr.DeleteMark(p->gid);
|
||||||
else
|
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)
|
void CInputLogin::GuildMarkIDXList(LPDESC d, const char* c_pData)
|
||||||
|
|||||||
@@ -212,6 +212,7 @@ enum
|
|||||||
|
|
||||||
HEADER_GC_MARK_BLOCK = 100,
|
HEADER_GC_MARK_BLOCK = 100,
|
||||||
HEADER_GC_MARK_IDXLIST = 102,
|
HEADER_GC_MARK_IDXLIST = 102,
|
||||||
|
HEADER_GC_MARK_UPDATE = 103,
|
||||||
|
|
||||||
HEADER_GC_TIME = 106,
|
HEADER_GC_TIME = 106,
|
||||||
HEADER_GC_CHANGE_NAME = 107,
|
HEADER_GC_CHANGE_NAME = 107,
|
||||||
@@ -1814,6 +1815,13 @@ typedef struct packet_mark_block
|
|||||||
// 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
|
// 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음
|
||||||
} TPacketGCMarkBlock;
|
} TPacketGCMarkBlock;
|
||||||
|
|
||||||
|
typedef struct packet_mark_update
|
||||||
|
{
|
||||||
|
uint8_t header;
|
||||||
|
uint32_t guildID;
|
||||||
|
uint16_t imgIdx;
|
||||||
|
} TPacketGCMarkUpdate;
|
||||||
|
|
||||||
typedef struct command_symbol_upload
|
typedef struct command_symbol_upload
|
||||||
{
|
{
|
||||||
uint8_t header;
|
uint8_t header;
|
||||||
|
|||||||
Reference in New Issue
Block a user