Ejemplo n.º 1
0
        private void OnClientConnected(object sender, Utility.EventArg <EndPoint> e)
        {
            lock (Lock)
            {
                LogInfo($"{nameof(OnClientConnected)} {e.Value}");
                var player = new PlayerData
                {
                    Name    = nameGen.Next(),
                    IsReady = false,
                    Room    = LobbyRoomName,
                    Role    = 0 // Lobby dose not care about player's role
                };
                var res = players.TryAdd(e.Value, player);
                Debug.Assert(res);

                FrontendServer.InvokeTo(e.Value).OnConnected(player.Name, player.Room);

                ForOthers(e.Value, (p) =>
                {
                    // Tell new player other players' info
                    FrontendServer.InvokeTo(e.Value).OnPlayerJoined(p.Value.Name, p.Value.Room, p.Value.Role);
                    // Tell other player new player's info
                    FrontendServer.InvokeTo(p.Key).OnPlayerJoined(player.Name, LobbyRoomName, player.Role);
                });
            }
        }
Ejemplo n.º 2
0
 private void OnClientSendFailed(object sender, Utility.EventArg <EndPoint> e)
 {
     lock (Lock)
     {
         players.Remove(e.Value);
         LogInfo($"{nameof(OnClientSendFailed)} {e.Value}");
     }
 }
Ejemplo n.º 3
0
        private void OnClientDisconnected(object sender, Utility.EventArg <EndPoint> e)
        {
            lock (Lock)
            {
                LogInfo($"{nameof(OnClientDisconnected)} {e.Value}");

                if (!players.ContainsKey(e.Value))
                {
                    return;
                }
                var player = players[e.Value];

                ForOthers(e.Value, (p) =>
                {
                    FrontendServer.InvokeTo(p.Key).OnPlayerLeaved(player.Name);
                });
                players.Remove(e.Value);
            }
        }