초기커밋
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user