초기커밋
This commit is contained in:
143
ServerCommon/Entity/Attribute/PartyMemberAttribute.cs
Normal file
143
ServerCommon/Entity/Attribute/PartyMemberAttribute.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
|
||||
using ServerCore; using ServerBase;
|
||||
using ServerCommon.Cache;
|
||||
|
||||
|
||||
using USER_GUID = System.String;
|
||||
|
||||
|
||||
namespace ServerCommon;
|
||||
|
||||
public class PartyMemberAttribute : EntityAttributeBase, ICopyEntityAttributeFromCache
|
||||
{
|
||||
private ConcurrentDictionary<USER_GUID, PartyMemberInfo> m_party_members = new();
|
||||
|
||||
public PartyMemberAttribute(EntityBase owner) : base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public override async Task<Result> onInit() => await Task.FromResult(new Result());
|
||||
|
||||
public override void onClear()
|
||||
{
|
||||
m_party_members.Clear();
|
||||
}
|
||||
|
||||
public override EntityAttributeBase onCloned()
|
||||
{
|
||||
var cloned = new PartyMemberAttribute(getOwner());
|
||||
|
||||
foreach (var member in m_party_members)
|
||||
{
|
||||
var insert = member.Value.clone();
|
||||
|
||||
cloned.m_party_members.TryAdd(member.Key, insert);
|
||||
}
|
||||
|
||||
return cloned;
|
||||
}
|
||||
|
||||
public ConcurrentDictionary<USER_GUID, PartyMemberInfo> getPartyMembers() => m_party_members;
|
||||
public PartyMemberInfo? getPartyMember(USER_GUID user_guid) => m_party_members.GetValueOrDefault(user_guid);
|
||||
public int getPartyMemberCount() => m_party_members.Count;
|
||||
|
||||
public void setPartyMember(PartyMemberInfo user) => m_party_members[user.UserGuid] = user;
|
||||
public bool deletePartyMember(USER_GUID delete_user_guid) => m_party_members.Remove(delete_user_guid, out _);
|
||||
|
||||
public bool copyEntityAttributeFromCache(CacheBase? cacheBase)
|
||||
{
|
||||
var party_member_cache = cacheBase as PartyMemberCache;
|
||||
if(null == party_member_cache)
|
||||
{
|
||||
var err_msg = $"Failed to copyEntityAttributeFromCache() !!!, party_member_cache is null :{nameof(PartyMemberCache)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
// Cache => Attribute
|
||||
//=====================================================================================
|
||||
foreach (var member in party_member_cache.PartyMembers)
|
||||
{
|
||||
if (m_party_members.ContainsKey(member.Key))
|
||||
{
|
||||
m_party_members[member.Key] = member.Value;
|
||||
continue;
|
||||
}
|
||||
|
||||
m_party_members.TryAdd(member.Key, member.Value);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool copyEntityAttributeFromAttribute(PartyMemberAttribute from_attribute)
|
||||
{
|
||||
//=====================================================================================
|
||||
// Attribute => Attribute
|
||||
//=====================================================================================
|
||||
foreach (var member in from_attribute.getPartyMembers())
|
||||
{
|
||||
if (m_party_members.ContainsKey(member.Key))
|
||||
{
|
||||
m_party_members[member.Key] = member.Value;
|
||||
continue;
|
||||
}
|
||||
|
||||
m_party_members.TryAdd(member.Key, member.Value);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override IEntityAttributeTransactor onNewEntityAttributeTransactor()
|
||||
{
|
||||
return new PartyMemberAttributeTransactor(getOwner());
|
||||
}
|
||||
|
||||
public override async Task<(Result, DynamoDbDocBase?)> toDocBase(bool isForQuery = true)
|
||||
{
|
||||
await Task.CompletedTask;
|
||||
|
||||
return (new Result(), null);
|
||||
}
|
||||
}
|
||||
|
||||
public class PartyMemberAttributeTransactor : EntityAttributeTransactorBase<PartyMemberAttribute>, ICopyEntityAttributeTransactorFromEntityAttribute
|
||||
{
|
||||
public PartyMemberAttributeTransactor(EntityBase owner) : base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public bool copyEntityAttributeTransactorFromEntityAttribute(EntityAttributeBase entityAttributeBase)
|
||||
{
|
||||
string err_msg;
|
||||
|
||||
var copy_from_party_member_attribute = entityAttributeBase as PartyMemberAttribute;
|
||||
if (null == copy_from_party_member_attribute)
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_from_party_member_attribute is null :{nameof(PartyMemberAttribute)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
var copy_to_party_member_attribute = getClonedEntityAttribute() as PartyMemberAttribute;
|
||||
if (null == copy_to_party_member_attribute)
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_to_party_member_attribute is null :{nameof(PartyMemberAttribute)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
copy_to_party_member_attribute.copyEntityAttributeFromAttribute(copy_from_party_member_attribute);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user