초기커밋
This commit is contained in:
129
GameServer/Contents/Party/Action/PartyInvitePartyRecvAction.cs
Normal file
129
GameServer/Contents/Party/Action/PartyInvitePartyRecvAction.cs
Normal file
@@ -0,0 +1,129 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user