초기커밋
This commit is contained in:
140
ServerCommon/Entity/Attribute/PartyServerAttribute.cs
Normal file
140
ServerCommon/Entity/Attribute/PartyServerAttribute.cs
Normal file
@@ -0,0 +1,140 @@
|
||||
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;
|
||||
|
||||
|
||||
namespace ServerCommon;
|
||||
|
||||
|
||||
public class PartyServerAttribute : EntityAttributeBase, ICopyEntityAttributeFromCache
|
||||
{
|
||||
private ConcurrentBag<string> m_party_servers { get; set; }= new();
|
||||
|
||||
public PartyServerAttribute(EntityBase owner) : base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public override async Task<Result> onInit() => await Task.FromResult(new Result());
|
||||
|
||||
public override void onClear()
|
||||
{
|
||||
m_party_servers.Clear();
|
||||
|
||||
getAttributeState().reset();
|
||||
}
|
||||
|
||||
public override EntityAttributeBase onCloned()
|
||||
{
|
||||
var cloned = new PartyServerAttribute(getOwner());
|
||||
|
||||
foreach (var server in m_party_servers)
|
||||
{
|
||||
cloned.m_party_servers.Add(server);
|
||||
}
|
||||
|
||||
return cloned;
|
||||
}
|
||||
|
||||
public ConcurrentBag<string> getPartyServers() => m_party_servers;
|
||||
|
||||
public void addPartyServer(string server_name) => m_party_servers.Add(server_name);
|
||||
|
||||
public void deleteServer(string delete_server)
|
||||
{
|
||||
var new_bag = new ConcurrentBag<string>();
|
||||
foreach (var server in m_party_servers)
|
||||
{
|
||||
if (server == delete_server) continue;
|
||||
new_bag.Add(server);
|
||||
}
|
||||
|
||||
m_party_servers = new_bag;
|
||||
}
|
||||
|
||||
public bool copyEntityAttributeFromCache(CacheBase? cacheBase)
|
||||
{
|
||||
var party_server_cache = cacheBase as PartyServerCache;
|
||||
if(null == party_server_cache)
|
||||
{
|
||||
var err_msg = $"Failed to copyEntityAttributeFromCache() !!!, party_cache is null :{nameof(PartyServerCache)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
// Cache => Attribute
|
||||
//=====================================================================================
|
||||
m_party_servers.Clear();
|
||||
foreach (var server in party_server_cache.PartyServers)
|
||||
{
|
||||
m_party_servers.Add(server);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool copyEntityAttributeFromAttribute(PartyServerAttribute from_attribute)
|
||||
{
|
||||
//=====================================================================================
|
||||
// Attribute => Attribute
|
||||
//=====================================================================================
|
||||
m_party_servers.Clear();
|
||||
foreach (var server in from_attribute.getPartyServers())
|
||||
{
|
||||
m_party_servers.Add(server);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override IEntityAttributeTransactor onNewEntityAttributeTransactor()
|
||||
{
|
||||
return new PartyServerAttributeTransactor(getOwner());
|
||||
}
|
||||
|
||||
public override async Task<(Result, DynamoDbDocBase?)> toDocBase(bool isForQuery = true)
|
||||
{
|
||||
await Task.CompletedTask;
|
||||
|
||||
return (new Result(), null);
|
||||
}
|
||||
}
|
||||
|
||||
public class PartyServerAttributeTransactor : EntityAttributeTransactorBase<PartyMemberAttribute>, ICopyEntityAttributeTransactorFromEntityAttribute
|
||||
{
|
||||
public PartyServerAttributeTransactor(EntityBase owner) : base(owner)
|
||||
{
|
||||
}
|
||||
|
||||
public bool copyEntityAttributeTransactorFromEntityAttribute(EntityAttributeBase entityAttributeBase)
|
||||
{
|
||||
string err_msg;
|
||||
|
||||
var copy_from_party_server_attribute = entityAttributeBase as PartyServerAttribute;
|
||||
if (null == copy_from_party_server_attribute)
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_from_party_server_attribute is null :{nameof(PartyServerAttribute)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
var copy_to_party_server_attribute = getClonedEntityAttribute() as PartyServerAttribute;
|
||||
if (null == copy_to_party_server_attribute)
|
||||
{
|
||||
err_msg = $"Failed to copyEntityAttributeTransactorFromEntityAttribute() !!!, copy_to_party_server_attribute is null :{nameof(PartyServerAttribute)}";
|
||||
Log.getLogger().error(err_msg);
|
||||
return false;
|
||||
}
|
||||
|
||||
copy_to_party_server_attribute.copyEntityAttributeFromAttribute(copy_from_party_server_attribute);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user