using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using USER_GUID = System.String; namespace GameServer; public class NotifyLeavePartyMemberHandler { public async Task recvLeavePartyMember(ServerMessage.Types.LeavePartyMemberNoti notify) { // 1. 파티 조회 var global_party = GameServerApp.getServerLogic().findGlobalEntity(); ArgumentNullException.ThrowIfNull(global_party); var party = global_party.getParty(notify.PartyGuid); ArgumentNullException.ThrowIfNull(party); // 2. 파티원 제거 var party_member_action = party.getEntityAction(); ArgumentNullException.ThrowIfNull(party_member_action); var delete_member = await party_member_action.deleteJoinMember(notify.LeavePartyUserGuid, false); if (delete_member.result.isFail()) return; // 2. Client 알림 var message = new ClientToGame { Message = new() { LeavePartyMemberNoti = new() { LeavePartyUserGuid = notify.LeavePartyUserGuid, IsBan = notify.IsBan } } }; PartyHelper.BroadcastToClients(party, message, new List()); } }