129 lines
4.5 KiB
C#
129 lines
4.5 KiB
C#
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<Result> onInit()
|
|
{
|
|
await Task.CompletedTask;
|
|
|
|
var result = new Result();
|
|
|
|
return result;
|
|
}
|
|
|
|
public override void onClear()
|
|
{
|
|
return;
|
|
}
|
|
|
|
public async Task<Result> loadInvitePartyRecv()
|
|
{
|
|
var player = getOwner() as Player;
|
|
ArgumentNullException.ThrowIfNull(player);
|
|
|
|
var attribute = getOwner().getEntityAttribute<PartyInvitePartyRecvsAttribute>();
|
|
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<CacheBase> { m_party_invite_party_recv_cache_request.getPartyInvitePartyRecvCache()! });
|
|
if (result.isFail())
|
|
{
|
|
Log.getLogger().error(result.toBasicString());
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
public async Task<Dictionary<string, DateTime>> getPartyInvitePartyRecvs()
|
|
{
|
|
await organizeSendAttribute();
|
|
|
|
var attribute = getOwner().getEntityAttribute<PartyInvitePartyRecvsAttribute>();
|
|
ArgumentNullException.ThrowIfNull(attribute);
|
|
|
|
var invites = attribute.getPartyInvitePartyRecvs().ToDictionary(invite => invite.Key, invite => invite.Value);
|
|
return invites;
|
|
}
|
|
|
|
public async Task<DateTime?> getPartyInvitePartyRecvTime(PARTY_GUID party_guid)
|
|
{
|
|
await organizeSendAttribute();
|
|
|
|
var attribute = getOwner().getEntityAttribute<PartyInvitePartyRecvsAttribute>();
|
|
ArgumentNullException.ThrowIfNull(attribute);
|
|
var invite_recv_time = attribute.getPartyInvitePartyRecvTime(party_guid);
|
|
ArgumentNullException.ThrowIfNull(invite_recv_time);
|
|
|
|
return invite_recv_time;
|
|
}
|
|
|
|
public async Task<Result> 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<PartyInvitePartyRecvsAttribute>();
|
|
ArgumentNullException.ThrowIfNull(attribute);
|
|
attribute.addInvitePartyRecv(party_guid, recv_time);
|
|
|
|
return result;
|
|
}
|
|
|
|
public async Task<Result> 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> { party_guid });
|
|
if (result.isFail()) return result;
|
|
|
|
var attribute = getOwner().getEntityAttribute<PartyInvitePartyRecvsAttribute>();
|
|
ArgumentNullException.ThrowIfNull(attribute);
|
|
|
|
attribute.deleteInvitePartyRecvs(new List<PARTY_GUID> { 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<PartyInvitePartyRecvsAttribute>();
|
|
ArgumentNullException.ThrowIfNull(attribute);
|
|
|
|
attribute.deleteInvitePartyRecvs(delete_recvs);
|
|
}
|
|
} |