60 lines
2.2 KiB
C#
60 lines
2.2 KiB
C#
using Google.Protobuf;
|
|
using Google.Protobuf.WellKnownTypes;
|
|
|
|
|
|
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
using ServerCommon.BusinessLogDomain;
|
|
using MetaAssets;
|
|
|
|
|
|
|
|
namespace GameServer;
|
|
|
|
public class NotifyCancelSummonHandler
|
|
{
|
|
public async Task recvCancelSummonHandler(ServerMessage.Types.CancelSummonPartyMemberNoti notify)
|
|
{
|
|
var global_party = GameServerApp.getServerLogic().findGlobalEntity<GlobalParty>();
|
|
NullReferenceCheckHelper.throwIfNull(global_party, () => $"global_party is null !!!");
|
|
var global_party_action = global_party.getEntityAction<GlobalPartyAction>();
|
|
NullReferenceCheckHelper.throwIfNull(global_party_action, () => $"global_party_action is null !!!");
|
|
|
|
// 1. 파티 정보 조회
|
|
var party = global_party_action.getGlobalPartyDetail(notify.PartyGuid);
|
|
if (null == party) return;
|
|
|
|
// 2. Member 정보 수정
|
|
var party_member_attribute = party.getEntityAttribute<PartyMemberAttribute>();
|
|
NullReferenceCheckHelper.throwIfNull(party_member_attribute, () => $"party_member_attribute is null !!!");
|
|
foreach (var cancel_member in notify.CancelSummonUserGuids)
|
|
{
|
|
if (!party_member_attribute.getPartyMembers().TryGetValue(cancel_member, out var member)) continue;
|
|
member.Summon.clear();
|
|
|
|
// 2-2.cache 수정
|
|
var member_action = party.getEntityAction<GlobalPartyDetailMemberAction>();
|
|
NullReferenceCheckHelper.throwIfNull(member_action, () => $"member_action is null !!!");
|
|
_ = await member_action.changeMember(member);
|
|
}
|
|
|
|
// 3. 해당 멤버 전송
|
|
var client_message = new ClientToGame
|
|
{
|
|
Message = new ClientToGameMessage
|
|
{
|
|
NtfCancelSummonPartyMember = new()
|
|
}
|
|
};
|
|
|
|
var player_manger = GameServerApp.getServerLogic().getPlayerManager();
|
|
ArgumentNullException.ThrowIfNull(player_manger);
|
|
foreach (var notify_user in notify.CancelSummonUserGuids)
|
|
{
|
|
if (!player_manger.tryGetUserByPrimaryKey(notify_user, out var player)) continue;
|
|
|
|
PartyHelper.sendToClient(client_message, player.getHostId());
|
|
}
|
|
}
|
|
} |