瀏覽代碼

解决创建房间后返回大厅,再次加入房间的问题

johnclot69 6 月之前
父節點
當前提交
31d3f7fd58
共有 1 個文件被更改,包括 11 次插入9 次删除
  1. 11 9
      DotNet/Hotfix/Scenes/Game/Handler/C2G_JoinRoomHandler.cs

+ 11 - 9
DotNet/Hotfix/Scenes/Game/Handler/C2G_JoinRoomHandler.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Drawing;
+using System.Linq;
 using System.Text.RegularExpressions;
 
 namespace ET.Server
@@ -70,19 +71,20 @@ namespace ET.Server
                 return;
             }
             
-            // 加入玩家
-            room.Add(player);
+            // 是否已经在房间
+            if (!room.GetAllPlayers().ContainsKey(player.Id))
+            {
+                // 加入玩家
+                room.Add(player);
             
-            // 绑定玩家房间
-            player.RoomId = room.RoomId;
+                // 绑定玩家房间
+                player.RoomId = room.RoomId;
+            }
             
             // 广播玩家加入房间
-            foreach (Player p in room.GetAllPlayers().Values)
+            foreach (Player p in room.GetAllPlayers().Values.Where(p => p != null))
             {
-                if (p != null)
-                {
-                    MessageHelper.SendToClient(p, new G2C_JoinRoomPush(){info = ProtoHelper.RoomToProto(room, p, null)});
-                }
+                MessageHelper.SendToClient(p, new G2C_JoinRoomPush(){info = ProtoHelper.RoomToProto(room, p, null)});
             }
             
             reply();