Files
caliverse_server/GameServer/Contents/Party/RabbitMessageHandler/NotifyJoinPartyMemberHandler.cs
2025-05-01 07:20:41 +09:00

47 lines
1.9 KiB
C#

using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using Newtonsoft.Json;
using ServerCore;
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using MetaAssets;
namespace GameServer;
public class NotifyJoinPartyMemberHandler
{
public async Task recvJoinPartyMember(ServerMessage.Types.JoinPartyMemberNoti notify)
{
var join_info = JsonConvert.DeserializeObject<PartyMemberInfo>(notify.JoinPartyMemberInfo);
if (null == join_info) return;
var global_party = GameServerApp.getServerLogic().findGlobalEntity<GlobalParty>();
ArgumentNullException.ThrowIfNull(global_party);
var party = global_party.getParty(notify.PartyGuid);
ArgumentNullException.ThrowIfNull(party);
// 1. join member 등록
var member_action = party.getEntityAction<GlobalPartyDetailMemberAction>();
NullReferenceCheckHelper.throwIfNull(member_action, () => $"member_action is null !!!");
var change = await member_action.changeMember(join_info);
if (change.result.isFail()) return;
// 2. 메시지 전송
var client_message = new ClientToGame();
client_message.Message = new();
client_message.Message.JoinPartyMemberNoti = new();
client_message.Message.JoinPartyMemberNoti.JoinPartyMemberGuid = join_info.UserGuid;
client_message.Message.JoinPartyMemberNoti.JoinMemberInfo = new PartyMemberState();
client_message.Message.JoinPartyMemberNoti.JoinMemberInfo.MarkId = join_info.MarkId;
client_message.Message.JoinPartyMemberNoti.JoinMemberInfo.MemberGuid = join_info.UserGuid;
client_message.Message.JoinPartyMemberNoti.JoinMemberInfo.MemberNickname = join_info.Nickname;
client_message.Message.JoinPartyMemberNoti.JoinMemberInfo.LocationInfo = join_info.LocationInfo;
PartyHelper.BroadcastToClients(party, client_message, new List<string>());
}
}