using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ServerCore; using ServerBase; using ServerCommon; namespace GameServer { public abstract class EntityLoaderBase : SimpleEventTriggerBase { private Player m_owner; private ConcurrentDictionary> m_to_read_doc_bases = new(); private bool m_is_completed_prepare_load = false; private readonly Result m_load_result = new(); public EntityLoaderBase(Player owner) { m_owner = owner; m_load_result.set(ServerErrorCode.ResultCodeNotSet, $"Result Code not set !!!"); } public abstract Task onPrepareLoad(); public bool isCompletedPrepareLoad() => m_is_completed_prepare_load; public void setCompetedPrepareLoad(bool isTrue) => m_is_completed_prepare_load = isTrue; protected Result addToReadDocBase(DynamoDbDocBase docBase) { var result = new Result(); var err_msg = string.Empty; if (false == m_to_read_doc_bases.TryGetValue(docBase.GetType(), out var found_doc_bases)) { found_doc_bases = new List(); m_to_read_doc_bases.TryAdd(docBase.GetType(), found_doc_bases); } found_doc_bases.Add(docBase); return result; } public ConcurrentDictionary> getToReadDocBases() => m_to_read_doc_bases; public Result getLoadResult() => m_load_result; public Player getOwner() => m_owner; } }