Exemple #1
0
        private void Server_ClientDisconnected(object sender, SocketDisconnectedEventArgs args)
        {
            this.Dispatcher.BeginInvoke(new Action(() =>
            {
                int index = clients.IndexOf(args.Peer);
                if (index < 0)
                {
                    int i = 0;
                }
                this.Title = "Disconnected, " + index;
                map.ForceShorten(index, 0);
                (grid_Connection.Children[index * 3 + 1] as TextBlock).Text = "断开";
                clients[index]      = null;
                playerStatus[index] = PlayerStatus.Disconnected;
                server.SendToAllAsync(new byte[] { (byte)DataType.PlayerDisconnected, (byte)index });

                int liveCount = 0, liveIndex = -1;
                for (int i = 0; i < map.SnakeCount; i++)
                {
                    if (playerStatus[i] == PlayerStatus.Playing)
                    {
                        liveCount++;
                        liveIndex = i;
                    }
                }
                if (liveCount == 1 && map.SnakeCount > 1)
                {
                    server.SendToAllAsync(new byte[] { (byte)lib.DataType.GameEnd, (byte)liveIndex });
                    timer.Enabled = false;
                }
            }));
        }
Exemple #2
0
		private void ZSocketClient_OnSocketDisconnected(object sender, SocketDisconnectedEventArgs e)
		{
			//change heartbeats:
			if (timerHeartbeats != null)
			{
				timerHeartbeats.Change(0, int.MaxValue);
			}

			if (OnSessionClosed != null) {
				OnSessionClosed(this, new SessionClosedEventArgs
				{
					 CloseReason = e.CloseReason
				});
			}
		}
Exemple #3
0
		private void ZSocketServer_OnSocketDisconnected(object sender, SocketDisconnectedEventArgs e)
		{
			if (OnSessionClosed != null)
			{
				OnSessionClosed(this, new SessionClosedEventArgs
				{
					CloseReason = e.CloseReason,
					SessionId = e.Socket.GetHashCode()
				});
			}
		}