summaryrefslogtreecommitdiff
path: root/Client/Assembly-CSharp/GameData.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Client/Assembly-CSharp/GameData.cs')
-rw-r--r--Client/Assembly-CSharp/GameData.cs11
1 files changed, 9 insertions, 2 deletions
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<GameData.PlayerInfo> AllPlayers = new List<GameData.PlayerInfo>();
+ // 全部任务数
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))
{