This commit is contained in:
DESKTOP-5RP3AKU\Jisol
2024-10-17 02:12:03 +08:00
parent c85f350e0a
commit dd2e0e8a46
16 changed files with 52 additions and 611 deletions

View File

@@ -1,7 +1,5 @@
using System.Collections.Generic;
using DotRecast.Core.Collections;
using UnityEngine;
using NotImplementedException = System.NotImplementedException;
namespace JNGame.Sync.System.Data
{
@@ -102,7 +100,7 @@ namespace JNGame.Sync.System.Data
if (isServer)
{
var latest = GetLatest();
latest.Keys.ForEach(key =>
foreach (var key in latest.Keys)
{
if (Data.ContainsKey(key))
{
@@ -114,12 +112,12 @@ namespace JNGame.Sync.System.Data
//如果之前没有则添加
Add(latest[key]);
}
});
Data.ForEach(child =>
}
foreach (var child in Data)
{
//没有则删除
if (!(latest.ContainsKey(child.Key))) Delete(child.Key);
});
}
if (UBytes.Count > 0)
{
OnUByteUpdate(UBytes);
@@ -167,10 +165,10 @@ namespace JNGame.Sync.System.Data
{
var data = new Dictionary<ulong, byte[]>();
Data.ForEach(child =>
foreach (var child in Data)
{
data[child.Key] = child.Value.GetByte();
});
}
return data;

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using DotRecast.Core.Collections;
using JNGame.Math;
using JNGame.Sync.State.Tile;
using JNGame.Sync.State.Tile.Entity;
@@ -88,12 +87,12 @@ namespace JNGame.Sync.System.Data
{
entities = NodeContext.GetEntities();
}
entities.ForEach(child =>
foreach (var child in entities)
{
var entity = new T();
entity.BindEntity(child);
nodes[child.Id] = entity;
});
}
return nodes;
}
@@ -125,7 +124,7 @@ namespace JNGame.Sync.System.Data
if (isServer)
{
var latest = GetLatest();
latest.Keys.ForEach(key =>
foreach (var key in latest.Keys)
{
if (Data.ContainsKey(key))
{
@@ -137,8 +136,8 @@ namespace JNGame.Sync.System.Data
//如果之前没有则添加
Add(latest[key]);
}
});
Data.ForEach(child =>
}
foreach (var child in Data)
{
//没有则删除
if (NodeContext.Query(child.Key) is null)
@@ -152,8 +151,7 @@ namespace JNGame.Sync.System.Data
child.Value.IsActiveSyncOnce = false;
UBytes[child.Key] = child.Value.GetByte();
}
});
}
if (UBytes.Count > 0)
{
OnUByteUpdate(UBytes);
@@ -170,7 +168,7 @@ namespace JNGame.Sync.System.Data
Dictionary<ulong, byte[]> master = new Dictionary<ulong, byte[]>();
Dictionary<ulong, byte[]> slave = new Dictionary<ulong, byte[]>();
all.ForEach(keyValue =>
foreach (var keyValue in all)
{
var entity = NodeContext.Query(keyValue.Key);
//给从服务器发送数据
@@ -178,7 +176,7 @@ namespace JNGame.Sync.System.Data
{
slave[keyValue.Key] = keyValue.Value;
}
});
}
OnSendAllData(all);
OnSendMasterData(master);
@@ -220,7 +218,7 @@ namespace JNGame.Sync.System.Data
}
}
NodeContext.GetEntities().ForEach(child =>
foreach (var child in NodeContext.GetEntities())
{
//如果有则删除
if (lIsTileData.Remove(child.Id,out var data))
@@ -234,7 +232,7 @@ namespace JNGame.Sync.System.Data
if (IsSlave) data.IsActiveSyncOnce = true;
}
}
});
}
//将数据同步到实体中
foreach (var keyValue in lIsTileData)
@@ -308,10 +306,10 @@ namespace JNGame.Sync.System.Data
//需要删除的数据Id
var ids = new List<ulong>();
Data.ForEach(child =>
foreach (var child in Data)
{
if (IsTileInside(index,child.Value)) ids.Add(child.Key);
});
}
//删除数据和实体
ids.ForEach(child =>
@@ -343,14 +341,14 @@ namespace JNGame.Sync.System.Data
lock (Data)
{
Data.ForEach(child =>
foreach (var child in Data)
{
var entity = NodeContext.Query(child.Key);
if (entity is not null && entity.IsHost && filter(entity))
{
data[child.Key] = child.Value.GetByte();
}
});
}
}
return data;
@@ -366,14 +364,14 @@ namespace JNGame.Sync.System.Data
lock (Data)
{
Data.ForEach(child =>
foreach (var child in Data)
{
var entity = NodeContext.Query(child.Key);
if (IsTileInside(index,child.Value) && filter(entity))
{
data[child.Key] = child.Value.GetByte();
}
});
}
}
return data;