47 lines
1.9 KiB
C#
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>());
|
|
}
|
|
} |