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 } }