mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-06-26 19:34:47 +00:00
89 lines
2.1 KiB
C#
89 lines
2.1 KiB
C#
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];
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 数据接口
|
|
/// </summary>
|
|
public abstract class ISData : IJNSyncId
|
|
{
|
|
|
|
/// <summary>
|
|
/// 数据唯一Id
|
|
/// </summary>
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// 判断是否一样
|
|
/// </summary>
|
|
/// <param name="data"></param>
|
|
/// <returns></returns>
|
|
public abstract bool IsEquals(ISData data);
|
|
|
|
}
|
|
|
|
public abstract class SDataSystemBase : SBaseSystem,IJNSyncCycle
|
|
{
|
|
public abstract void OnSyncStart();
|
|
|
|
public abstract void OnSyncUpdate();
|
|
|
|
public virtual void OnSyncDestroy()
|
|
{ }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 状态系统 - 数据层
|
|
/// </summary>
|
|
public abstract class SDataSystem<T> : SDataSystemBase where T : ISData,new()
|
|
{
|
|
|
|
//数据Id
|
|
public long Id { get; private set; }
|
|
|
|
public JNRandomSystem Random => GetSystem<JNRandomSystem>();
|
|
|
|
//数据集
|
|
public Dictionary<long, T> Data = new();
|
|
|
|
public virtual T[] Datas {
|
|
get
|
|
{
|
|
lock (Data)
|
|
{
|
|
return Data.Values.ToArray();
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void OnSyncStart()
|
|
{
|
|
//设置数据唯一Id
|
|
Id = Random.NextId();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 返回最新数据 (收集最新的ISData数据 正常来讲只有服务端会运行)
|
|
/// </summary>
|
|
public virtual Dictionary<long, T> GetLatest()
|
|
{
|
|
return new ();
|
|
}
|
|
|
|
}
|
|
} |