Example #1
0
        private static void ConsoleThread()
        {
            string line;

            string[] parts;

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Initializing Console Loop");
            Console.ResetColor();

            while ((true))
            {
                line = Console.ReadLine();

                parts = line.Split(' '); if ((parts.Length < 1))
                {
                    continue;
                }

                switch (parts[0].Trim().ToLower().Replace("/", ""))
                {
                case "help":
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine("/help, Shows this message.");
                    Console.WriteLine("/exit, Closes down the server.");
                    Console.WriteLine("/shutdown, Closes down the server with a 30 second countdown.");
                    Console.WriteLine("/setadmin, Sets player access level, usage '/setadmin playername powerlvl' powerlevel goes from 0 for player, to 4 to creator.");
                    Console.WriteLine("/kick, Kicks user from server, usage '/kick playername'");
                    Console.WriteLine("/ban, Bans user from server, usage '/ban playername'");
                    Console.WriteLine("/maintenance, Toggles maintenance mode");
                    Console.WriteLine("/timespeed, Set Game Speed, usage  '/timespeed speed'");
                    Console.WriteLine("/ip, View the ip of the server");
                    Console.WriteLine("/say, Send a global message for everyone to see, usage '/say message'");
                    Console.WriteLine("/setxpmultiplier, Set the Global XP multiplier, usage '/setxpmultiplier multiplayer'");
                    Console.WriteLine("/debugtext, Toggle Debug Text");
                    Console.WriteLine("/unlockcps, unlock CPS");
                    Console.WriteLine("/lockcps, lock CPS");
                    Console.ResetColor();
                    break;
                }

                case "exit":
                {
                    S_General.DestroyServer();
                    break;
                }

                case "shutdown":
                {
                    if (S_General.shutDownTimer == null)
                    {
                        S_General.shutDownTimer = new System.Diagnostics.Stopwatch();
                        S_General.shutDownTimer.Start();
                        Console.WriteLine("Server Shutdown in 30 Seconds!");
                    }
                    else
                    {
                        S_General.shutDownTimer = null;
                        Console.WriteLine("Server Shutdown has been cancelled!");
                    }
                    break;
                }

                case "setadmin":
                {
                    if (parts.Length > 3 || parts.Length < 3)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }


                    string Name   = parts[1];
                    int    Pindex = S_GameLogic.FindPlayer(Name);
                    int.TryParse(parts[2], out int Power);

                    Console.ForegroundColor = ConsoleColor.Yellow;
                    if (!(Pindex > 0))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Player name is empty or invalid. [Name not found]");
                    }
                    else
                    {
                        switch (Power)
                        {
                        case 0:
                        {
                            S_Players.SetPlayerAccess(Pindex, Power);
                            S_NetworkSend.SendPlayerData(Pindex);
                            S_NetworkSend.PlayerMsg(Pindex, "Your PowerLevel has been set to Player Rank!", (int)Enums.ColorType.BrightCyan);
                            Console.WriteLine("Successfully set the power level to " + Power + " for player " + Name);
                            break;
                        }

                        case 1:
                        {
                            S_Players.SetPlayerAccess(Pindex, Power);
                            S_NetworkSend.SendPlayerData(Pindex);
                            S_NetworkSend.PlayerMsg(Pindex, "Your PowerLevel has been set to Monitor Rank!", (int)Enums.ColorType.BrightCyan);
                            Console.WriteLine("Successfully set the power level to " + Power + " for player " + Name);
                            break;
                        }

                        case 2:
                        {
                            S_Players.SetPlayerAccess(Pindex, Power);
                            S_NetworkSend.SendPlayerData(Pindex);
                            S_NetworkSend.PlayerMsg(Pindex, "Your PowerLevel has been set to Mapper Rank!", (int)Enums.ColorType.BrightCyan);
                            Console.WriteLine("Successfully set the power level to " + Power + " for player " + Name);
                            break;
                        }

                        case 3:
                        {
                            S_Players.SetPlayerAccess(Pindex, Power);
                            S_NetworkSend.SendPlayerData(Pindex);
                            S_NetworkSend.PlayerMsg(Pindex, "Your PowerLevel has been set to Developer Rank!", (int)Enums.ColorType.BrightCyan);
                            Console.WriteLine("Successfully set the power level to " + Power + " for player " + Name);
                            break;
                        }

                        case 4:
                        {
                            S_Players.SetPlayerAccess(Pindex, Power);
                            S_NetworkSend.SendPlayerData(Pindex);
                            S_NetworkSend.PlayerMsg(Pindex, "Your PowerLevel has been set to Creator Rank!", (int)Enums.ColorType.BrightCyan);
                            Console.WriteLine("Successfully set the power level to " + Power + " for player " + Name);
                            break;
                        }

                        default:
                        {
                            Console.WriteLine("Failed to set the power level to " + Power + " for player " + Name);
                            break;
                        }
                        }
                    }
                    Console.ResetColor();
                    break;
                }

                case "kick":
                {
                    if (parts.Length > 2 || parts.Length < 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }


                    string Name   = parts[1];
                    int    Pindex = S_GameLogic.FindPlayer(Name);
                    Console.ForegroundColor = ConsoleColor.Red;
                    if (!(Pindex > 0))
                    {
                        Console.WriteLine("Player name is empty or invalid. [Name not found]");
                    }
                    else
                    {
                        S_NetworkSend.AlertMsg(Pindex, "You have been kicked by the server owner!");
                        S_Players.LeftGame(Pindex);
                    }
                    Console.ResetColor();
                    break;
                }

                case "ban":
                {
                    if (parts.Length > 2 || parts.Length < 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }


                    string Name   = parts[1];
                    int    Pindex = S_GameLogic.FindPlayer(Name);

                    Console.ForegroundColor = ConsoleColor.Red;
                    if (!(Pindex > 0))
                    {
                        Console.WriteLine("Player name is empty or invalid. [Name not found]");
                    }
                    else
                    {
                        modDatabase.ServerBanIndex(Pindex);
                    }

                    Console.ResetColor();
                    break;
                }

                case "maintenance":
                {
                    S_General.isInMaintenance = !S_General.isInMaintenance;
                    Console.ForegroundColor   = ConsoleColor.Red;
                    Console.WriteLine("Maintenance is now " + S_General.isInMaintenance);
                    Console.ResetColor();
                    break;
                }

                case "timespeed":
                {
                    if (parts.Length > 2 || parts.Length < 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }


                    double.TryParse(parts[1], out double speed);
                    Time.Instance.GameSpeed = speed;
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Set GameSpeed to " + Time.Instance.GameSpeed + " secs per seconds");
                    Console.ResetColor();
                    break;
                }

                case "ip":
                {
                    Console.WriteLine("Ip:" + S_General.MyIPAddress);
                    break;
                }

                case "say":
                {
                    if (parts.Length > 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }

                    string message = "";
                    foreach (var item in parts.ToList().Skip(1))
                    {
                        if (message == "")
                        {
                            message += item;
                        }
                        else
                        {
                            message += " " + item;
                        }
                    }
                    S_NetworkSend.GlobalMsg(message);
                    Console.WriteLine(message);
                    break;
                }

                case "setxpmultiplier":
                {
                    if (parts.Length > 2 || parts.Length < 2)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }
                    float.TryParse(parts[1], out float xpMultiplayer);
                    modTypes.Options.xpMultiplier = xpMultiplayer;
                    Console.ForegroundColor       = ConsoleColor.Yellow;
                    Console.WriteLine("Global XP Multiplayer set to: " + xpMultiplayer);
                    Console.ResetColor();
                    break;
                }

                case "unlockcps":
                {
                    if (parts.Length > 1 || parts.Length < 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }
                    modTypes.Options.unlockCPS = true;
                    Console.ForegroundColor    = ConsoleColor.Yellow;
                    Console.WriteLine("CPS: " + S_General.gameCPS + " CPS is Unlocked");
                    Console.ResetColor();
                    break;
                }

                case "lockcps":
                {
                    if (parts.Length > 1 || parts.Length < 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }
                    modTypes.Options.unlockCPS = false;
                    Console.ForegroundColor    = ConsoleColor.Yellow;
                    Console.WriteLine("CPS: " + S_General.gameCPS + " CPS is locked");
                    Console.ResetColor();
                    break;
                }

                case "debugtext":
                {
                    if (parts.Length > 1)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("Incorrect usage.");
                        Console.ResetColor();
                        break;
                    }
                    S_Globals.DebugTxt      = !S_Globals.DebugTxt;
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Debug Text: " + S_Globals.DebugTxt);
                    Console.ResetColor();
                    break;
                }

                case "":
                {
                    continue;
                }

                default:
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Invalid Command. If you are unsure of the functions type 'help'.");
                    Console.ResetColor();
                    break;
                }
                }
            }
        }