using System; using System.Collections.Generic; using DotRecast.Core.Collections; using Game.JNGFrame.Logic.Entity; using Game.JNGFrame.Logic.Entity.Contexts; using Game.Logic.Entity.Nodes; using JNGame.Sync.State.Tile.Entity; using JNGame.Sync.System; using JNGame.Sync.System.Data; namespace Game.JNGState.Logic.Data { public enum EDPlayerValueCode : int { Auth = 201 } [Serializable] public class EDPlayerValue : GDataValue { public int? Auth = null; } public class EDPlayerData : GDataBase { public override void BindEntity(JNTileEntity entity) { base.BindEntity(entity); Value.Auth = Node.Controller.Auth; } public override bool IsEquals(ISData data) { var node = data as EDPlayerData; if (node is null) return false; return base.IsEquals(data) && Value.Auth.Equals(node.Value.Auth); } public override EDPlayerValue GetDifference(ISData diffValue = null) { var diff = diffValue as EDPlayerData; var value = base.GetDifference(diffValue); if (value is null || diff is null) return null; if (diff.Value.Auth is not null) value.Auth = diff.Value.Auth; return value; } public override void UData(EDPlayerValue data) { base.UData(data); if (data.Auth is not null) { Value.Auth = data.Auth; WriteUpdate((int)EDPlayerValueCode.Auth); } } } public class EDPlayerDataSystem : GDataBaseSystem { public EDPlayerDataSystem(SStateDataEnum type) : base(type) { } public override int NetID => (int)NetDataEnum.EDPlayerData; public override JNTileContext NodeContext => Contexts.GetContext(); } }