QoL: Server-Side mark broadcast P2P
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
#include "log.h"
|
||||
#include "horsename_manager.h"
|
||||
#include "MarkManager.h"
|
||||
#include "p2p.h"
|
||||
|
||||
static void _send_bonus_info(LPCHARACTER ch)
|
||||
{
|
||||
@@ -931,27 +932,22 @@ void CInputLogin::GuildMarkUpload(LPDESC d, const char* c_pData)
|
||||
else
|
||||
markID = rkMarkMgr.SaveMark(p->gid, p->image);
|
||||
|
||||
// Broadcast mark update to all connected game clients
|
||||
// Broadcast mark update to all game cores via P2P, which will then broadcast to their 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;
|
||||
// Send P2P packet to all other game cores
|
||||
TPacketGGMarkUpdate p2pPacket;
|
||||
p2pPacket.bHeader = HEADER_GG_MARK_UPDATE;
|
||||
p2pPacket.dwGuildID = p->gid;
|
||||
p2pPacket.wImgIdx = imgIdx;
|
||||
P2P_MANAGER::instance().Send(&p2pPacket, sizeof(p2pPacket));
|
||||
|
||||
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));
|
||||
}
|
||||
}
|
||||
// Also broadcast to clients connected to this core (mark server) using the same logic
|
||||
BroadcastGuildMarkUpdate(p->gid, imgIdx);
|
||||
|
||||
sys_log(0, "MARK_SERVER: GuildMarkUpload: Broadcast mark update for guild %u, imgIdx %u", p->gid, imgIdx);
|
||||
sys_log(0, "MARK_SERVER: GuildMarkUpload: Broadcast mark update for guild %u, imgIdx %u via P2P", p->gid, imgIdx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user