protected MaintenanceRequest(MaintenanceCommandTypes commandType)
 {
     this.commandType = (int)commandType;
     clientID         = GameEngine.GetInstance().Client.ClientID;
 }
Example #2
0
        private void HandleMaintenanceCommands(String[] message, String plainText)
        {
            MaintenanceCommandTypes messageType = MaintenanceCommandTypes.Chat;
            int clientID = -1;

            String[] data = { "" };
            try
            {
                messageType = (MaintenanceCommandTypes)Convert.ToInt32(message[1]);
                clientID    = Convert.ToInt32(message[2]);
                data        = message[3].Split(' ');
            }
            catch
            {
            }
            finally
            {
                switch (messageType)
                {
                case MaintenanceCommandTypes.Chat:
                    Console.WriteLine(message[3]);
                    break;

                case MaintenanceCommandTypes.JoinGame:
                    if (data[0] == MyIP && this.clientID == -1)
                    {
                        this.clientID = clientID;
                        Console.WriteLine("CLIENT: You connected to server as Player" + clientID.ToString());
                    }
                    else if (!connectedClients.ContainsKey(clientID) || (connectedClients[clientID] != data[0]))
                    {
                        Console.WriteLine("CLIENT: Player" + clientID.ToString() + " connected to the server. (" + data[0] + ")");
                    }
                    if (!connectedClients.ContainsKey(clientID))
                    {
                        connectedClients.Add(clientID, data[0]);
                    }
                    else if ((connectedClients[clientID] != data[0]))
                    {
                        connectedClients[clientID] = data[0];
                    }

                    break;

                case MaintenanceCommandTypes.Lockstep:
                    //Lockstep++;
                    Lockstep = int.Parse(data[0]);
                    break;

                case MaintenanceCommandTypes.LeaveGame:
                    connectedClients.Remove(clientID);
                    Console.WriteLine("CLIENT: Player" + clientID.ToString() + " disconnected from the server. (" + data[0] + ")");
                    break;

                case MaintenanceCommandTypes.StartGame:
                    Console.WriteLine("CLIENT: Starting game.");
                    startGame = true;
                    break;

                case MaintenanceCommandTypes.ChangeSeed:
                    Console.WriteLine("CLIENT: Seed changed to:" + (int.Parse(data[0])).ToString());
                    serverSeed = int.Parse(data[0]);
                    break;
                }
            }
        }
Example #3
0
        private void HandleMaintenanceRequests(String[] message, String plainText)
        {
            MaintenanceCommandTypes messageType = MaintenanceCommandTypes.Chat;
            int clientID = -1;

            String[] data = { "" };
            try
            {
                messageType = (MaintenanceCommandTypes)Convert.ToInt32(message[1]);
                clientID    = Convert.ToInt32(message[2]);
                data        = message[3].Split(' ');
            }
            catch
            {
            }
            finally
            {
                switch (messageType)
                {
                case MaintenanceCommandTypes.Chat:
                    Console.WriteLine(message[3]);
                    ForwardMessage(plainText);
                    break;

                case MaintenanceCommandTypes.JoinGame:
                    ClientData clientData = new ClientData();
                    clientID      = connectedClients.Count + 1;
                    clientData.ID = clientID;
                    clientData.IP = data[0];
                    connectedClients.Add(clientID, clientData);
                    Console.WriteLine("SERVER: Player" + clientData.ID + " connected. (" + clientData.IP + ")");
                    //plainText = plainText.Replace("-1", clientID.ToString()); //Replace the client ID
                    //ForwardMessage(plainText);

                    //Tell all players about connection:
                    foreach (KeyValuePair <int, ClientData> kvp in connectedClients)    //Resend all connections
                    {
                        ForwardMessage(((int)MessageTypes.Maintenance).ToString() + ":" + ((int)MaintenanceCommandTypes.JoinGame).ToString() + ":" + kvp.Key.ToString() + ":" + kvp.Value.IP);
                    }

                    //Tell all players the seed:
                    ForwardMessage(new ChangeSeedRequest(serverSeed).GetMessage());

                    break;

                case MaintenanceCommandTypes.Lockstep:
                    connectedClients[clientID].LockStep = lockstep;
                    TryIncreaseLockstep();
                    break;

                case MaintenanceCommandTypes.LeaveGame:
                    connectedClients.Remove(clientID);
                    Console.WriteLine("SERVER: Player" + clientID + " dissconnected. (" + data[0] + ")");
                    ForwardMessage(plainText);
                    break;

                case MaintenanceCommandTypes.StartGame:
                    Console.WriteLine("SERVER: Starting game.");
                    ForwardMessage(plainText);
                    break;

                case MaintenanceCommandTypes.ChangeSeed:
                    Console.WriteLine("SERVER: Seed changed to: " + (int.Parse(data[0])).ToString());
                    serverSeed = int.Parse(data[0]);
                    ForwardMessage(plainText);
                    break;
                }
            }
        }