From d653a7a8b6ec4efb40d39a455805880bf494e785 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 6 Jan 2021 18:58:27 +0800 Subject: =?UTF-8?q?*=E7=BD=91=E7=BB=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/Assembly-CSharp/GameData.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'Client/Assembly-CSharp/GameData.cs') diff --git a/Client/Assembly-CSharp/GameData.cs b/Client/Assembly-CSharp/GameData.cs index 5069a13..b67158b 100644 --- a/Client/Assembly-CSharp/GameData.cs +++ b/Client/Assembly-CSharp/GameData.cs @@ -6,9 +6,14 @@ using Hazel; using InnerNet; using UnityEngine; -//c 单局游戏数据,同步频率比较小 +//c 单局游戏数据,同步频率比较小。是由host玩家管理的结构。 +// 单局游戏内只有一个这个结构,且clientId是host玩家的id,由host玩家所有,所以只有host玩家会序列化,其他玩家的机器deserialize +// 这样做能够保证客户端不会冲突,不会出现某台机器上某个任务完成了,但另一台机器没有完成的情况 +// 所有的全局数据全部由host玩家管理。 +// 类似的还有ship status public class GameData : InnerNetObject, IDisconnectHandler { + // 玩家个数 public int PlayerCount { get @@ -22,8 +27,10 @@ public class GameData : InnerNetObject, IDisconnectHandler // 所有角色数据,包括外观、装饰、是否是imposter、是否死亡 public List AllPlayers = new List(); + // 全部任务数 public int TotalTasks; + // 完成了的任务数 public int CompletedTasks; public const byte InvalidPlayerId = 255; @@ -197,7 +204,7 @@ public class GameData : InnerNetObject, IDisconnectHandler { sbyte i; sbyte j; - for (i = 0; i < 10; i = j + 1) + for (i = 0; i < 10; i = (sbyte)(j + 1)) { if (!this.AllPlayers.Any((GameData.PlayerInfo p) => p.PlayerId == (byte)i)) { -- cgit v1.1-26-g67d0