using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using DotRecast.Core.Collections;
using JNGame.Sync.Frame.Service;
using NotImplementedException = System.NotImplementedException;
namespace JNGame.Sync.System
{
public class SDByteOperate
{
public static readonly byte[] DELETE = { 0 }; //删除
public static bool IsDelete(byte[] value)
{
return value.Length == 1 && value[0] == DELETE[0];
}
}
///
/// 数据接口
///
public abstract class ISData : IJNSyncId
{
///
/// 数据唯一Id
///
public ulong Id { get; set; }
///
/// 判断是否一样
///
///
///
public abstract bool IsEquals(ISData data);
}
public abstract class SDataSystemBase : SBaseSystem,IJNSyncCycle
{
public abstract void OnSyncStart();
public abstract void OnSyncUpdate(int dt);
public virtual void OnSyncDestroy()
{ }
}
///
/// 状态系统 - 数据层
///
public abstract class SDataSystem : SDataSystemBase where T : ISData,new()
{
//数据Id
public ulong Id { get; private set; }
public JNRandomSystem Random => GetSystem();
//数据集
public ConcurrentDictionary Data = new();
public virtual T[] Datas {
get
{
return Data.Values.ToArray();
}
}
public override void OnSyncStart()
{
//设置数据唯一Id
Id = Random.NextId();
}
///
/// 返回最新数据 (收集最新的ISData数据 正常来讲只有服务端会运行)
///
public virtual ConcurrentDictionary GetLatest()
{
return new ();
}
}
}