예제 #1
0
        private void periodicActivityCheck(object myObject, EventArgs myEventArgs)
        {
            //ACCEPT CONNECTIONS
            Socket tempSocket = tcp.tcp_acceptConnection();

            if (tempSocket != null)
            {
                Client client = new Client();
                client.ConnectionSocket = tempSocket;
                ConnectedClients.Add(client);
                txt_clients.Text = ConnectedClients.Count.ToString();
            }

            //RECIEVE MESSAGES
            for (int i = 0; i < ConnectedClients.Count; i++)
            {
                Messages.MESSAGE msg = tcp.receiveMessage(ConnectedClients[i].ConnectionSocket);
                #region MESSAGE DECODER
                switch (msg.msgID)
                {
                //Handle Error Message (Closed connection)
                case -1:
                    ConnectedClients.RemoveAt(i);
                    txt_clients.Text = ConnectedClients.Count.ToString();
                    txt_output.AppendText("Player Disconnected \n");
                    updatePlayersList();
                    break;

                case 0:
                    break;

                //Initialise player
                case 1:
                    decoder.initialiseClient(msg, ConnectedClients[i]);
                    updatePlayersList();
                    decoder.updateAllPlayersInfo();
                    break;

                //Request to invite player recieved
                case 4:
                    txt_output.AppendText("recieved request \n");
                    decoder.inviteClient(ConnectedClients[i].ClientID, msg);
                    break;

                //invitation response recieved
                case 6:
                    decoder.invitationResponse(msg);
                    break;

                default:     //pass message to appriopriate game sessession
                    getGameSession(msg.gameSession).getMessage(msg, ConnectedClients[i].ClientID);
                    break;
                }
                #endregion MESSAGE DECODER
            }
        }