using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; using PARTY_GUID = System.String; namespace GameServer; public class PartyInvitePartyRecvAction : EntityActionBase { private PartyInvitePartyRecvCacheRequest? m_party_invite_party_recv_cache_request { get; set; } = null; public PartyInvitePartyRecvAction(Player owner) : base(owner) { } public override async Task onInit() { await Task.CompletedTask; var result = new Result(); return result; } public override void onClear() { return; } public async Task loadInvitePartyRecv() { var player = getOwner() as Player; ArgumentNullException.ThrowIfNull(player); var attribute = getOwner().getEntityAttribute(); ArgumentNullException.ThrowIfNull(attribute); m_party_invite_party_recv_cache_request ??= new(player, GameServerApp.getServerLogic().getRedisConnector()); ArgumentNullException.ThrowIfNull(m_party_invite_party_recv_cache_request); var result = await m_party_invite_party_recv_cache_request.fetchInvitePartyRecvCache(); if (result.isFail()) return result; result = await ServerBase.DataCopyHelper.copyEntityAttributeFromCaches(attribute, new List { m_party_invite_party_recv_cache_request.getPartyInvitePartyRecvCache()! }); if (result.isFail()) { Log.getLogger().error(result.toBasicString()); } return result; } public async Task> getPartyInvitePartyRecvs() { await organizeSendAttribute(); var attribute = getOwner().getEntityAttribute(); ArgumentNullException.ThrowIfNull(attribute); var invites = attribute.getPartyInvitePartyRecvs().ToDictionary(invite => invite.Key, invite => invite.Value); return invites; } public async Task getPartyInvitePartyRecvTime(PARTY_GUID party_guid) { await organizeSendAttribute(); var attribute = getOwner().getEntityAttribute(); ArgumentNullException.ThrowIfNull(attribute); var invite_recv_time = attribute.getPartyInvitePartyRecvTime(party_guid); ArgumentNullException.ThrowIfNull(invite_recv_time); return invite_recv_time; } public async Task addInvitePartyRecv(PARTY_GUID party_guid) { var recv_time = DateTime.UtcNow; // redis 저장 NullReferenceCheckHelper.throwIfNull(m_party_invite_party_recv_cache_request, () => $"m_party_invite_party_recv_cache_request is null !!! - {party_guid}"); var result = await m_party_invite_party_recv_cache_request.addInvitePartyRecvCache(party_guid, recv_time); if (result.isFail()) return result; // attribute 저장 var attribute = getOwner().getEntityAttribute(); ArgumentNullException.ThrowIfNull(attribute); attribute.addInvitePartyRecv(party_guid, recv_time); return result; } public async Task deleteInvitePartyRecv(PARTY_GUID party_guid) { NullReferenceCheckHelper.throwIfNull(m_party_invite_party_recv_cache_request, () => $"m_party_invite_party_recv_cache_request is null !!! - {party_guid}"); var result = await m_party_invite_party_recv_cache_request.deleteInvitePartyRecvCache(new List { party_guid }); if (result.isFail()) return result; var attribute = getOwner().getEntityAttribute(); ArgumentNullException.ThrowIfNull(attribute); attribute.deleteInvitePartyRecvs(new List { party_guid }); return result; } private async Task organizeSendAttribute() { NullReferenceCheckHelper.throwIfNull(m_party_invite_party_recv_cache_request, () => $"m_party_invite_party_recv_cache_request is null !!!"); var delete_recvs = await m_party_invite_party_recv_cache_request.organizeInvitePartyRecvCache(); if (null == delete_recvs) return; var attribute = getOwner().getEntityAttribute(); ArgumentNullException.ThrowIfNull(attribute); attribute.deleteInvitePartyRecvs(delete_recvs); } }