diff --git a/logic/Gaming/Game.cs b/logic/Gaming/Game.cs index a5a271a..70076ea 100644 --- a/logic/Gaming/Game.cs +++ b/logic/Gaming/Game.cs @@ -474,7 +474,7 @@ namespace Gaming var gameObjList = new List(); foreach (var keyValuePair in gameMap.GameObjDict) { - if (!GameData.IsMap(keyValuePair.Key)) + if (GameData.NeedCopy(keyValuePair.Key)) { gameMap.GameObjLockDict[keyValuePair.Key].EnterReadLock(); try diff --git a/logic/Preparation/Utility/GameData.cs b/logic/Preparation/Utility/GameData.cs index 32f631a..b1fb2c9 100644 --- a/logic/Preparation/Utility/GameData.cs +++ b/logic/Preparation/Utility/GameData.cs @@ -27,10 +27,13 @@ namespace Preparation.Utility public const int numOfGenerator = 9; public const int numOfChest = 8; - private const int numOfObjNotMap = 5; public static bool IsMap(GameObjType gameObjType) { - return (uint)gameObjType > numOfObjNotMap; + return (uint)gameObjType > 5; + } + public static bool NeedCopy(GameObjType gameObjType) + { + return gameObjType != GameObjType.Null && gameObjType != GameObjType.Grass && gameObjType != GameObjType.OutOfBoundBlock && gameObjType != GameObjType.Window && gameObjType != GameObjType.Wall; } public static XY GetCellCenterPos(int x, int y) // 求格子的中心坐标 diff --git a/logic/Server/CopyInfo.cs b/logic/Server/CopyInfo.cs index 23de73a..b6996f2 100644 --- a/logic/Server/CopyInfo.cs +++ b/logic/Server/CopyInfo.cs @@ -90,7 +90,6 @@ namespace Server } } - public static Protobuf.PlayerState ToPlayerState(Preparation.Utility.PlayerStateType playerState) { switch (playerState) @@ -238,10 +237,10 @@ namespace Server case Preparation.Utility.GameObjType.EmergencyExit: if (((EmergencyExit)gameObj).CanOpen) return HiddenGate((EmergencyExit)gameObj); - else return null; + else return new MessageOfObj(); case Preparation.Utility.GameObjType.Door: return Door((Door)gameObj); - default: return null; + default: return new MessageOfObj(); } } public static MessageOfObj? Auto(MessageOfNews news)