示例#1
0
 /// <summary>
 /// Wait console commands and execute them.
 /// </summary>
 private static void ConsoleLoop()
 {
     while (_run)
     {
         string ConsoleInput = Console.ReadLine();
         Console.Write(">");
         string[] args = Common.SplitArgs(ConsoleInput);
         Common.ConsoleWrite(multilang.GetResultText(new ResultData(-1, Commands.Manager.Execute(args, null, true)), config.lang));
         ConsoleInput = null;
     }
 }
示例#2
0
        private static void Main(string[] args)
        {
            Console.Title = "Galactic Colors Control Client"; //Start display
            Console.Write(">");
            logger.Write(Console.Title, Logger.logType.fatal);
            logger.Write("Console " + Assembly.GetEntryAssembly().GetName().Version.ToString(), Logger.logType.error);
            config = config.Load();
            logger.Initialise(config.logPath, config.logBackColor, config.logForeColor, config.logLevel, _debug, _dev);
            multilang.Load();
            client.OnEvent += new EventHandler(OnEvent); //Set OnEvent function
            if (args.Length > 0)
            {
                switch (args[0])
                {
                case "--debug":
                    _debug = true;
                    logger.Write("CLIENT IS IN DEBUG MODE !", Logger.logType.error, Logger.logConsole.show);
                    break;

                case "--dev":
                    _dev = true;
                    logger.Write("CLIENT IS IN DEV MODE !", Logger.logType.error, Logger.logConsole.show);
                    break;

                default:
                    Common.ConsoleWrite("Use --debug or --dev");
                    break;
                }
            }
            bool hostSet = false;

            while (!hostSet) //Request hostname
            {
                Thread.Sleep(100);
                Common.ConsoleWrite(multilang.Get("EnterHostname", config.lang) + ":");
                string host = client.ValidateHost(Console.ReadLine());
                if (host[0] == '*')
                {
                    host = host.Substring(1);
                    logger.Write("Validate error " + host, Logger.logType.error);
                    Common.ConsoleWrite(host, ConsoleColor.Red);
                    client.ResetHost();
                }
                else
                {
                    logger.Write("Validate " + host, Logger.logType.info);
                    Common.ConsoleWrite(multilang.Get("Use", config.lang) + " " + host + "? y/n");
                    ConsoleKeyInfo c = new ConsoleKeyInfo();
                    while (c.Key != ConsoleKey.Y && c.Key != ConsoleKey.N)
                    {
                        c = Console.ReadKey();
                    }
                    if (c.Key == ConsoleKey.Y)
                    {
                        hostSet = true;
                    }
                    else
                    {
                        client.ResetHost();
                    }
                }
            }
            Common.ConsoleWrite(multilang.Get("Loading", config.lang));
            if (client.ConnectHost()) //Try connection
            {
                logger.Write("Connected", Logger.logType.warm);
                run = true;
                bool connected = false;
                //Identifaction
                while (!connected)
                {
                    Common.ConsoleWrite(multilang.Get("Username", config.lang) + ":");
                    string username = Console.ReadLine();
                    if (username.Length > 3)
                    {
                        ResultData res = client.Request(new string[2] {
                            "connect", username
                        });
                        if (res.type == ResultTypes.OK)
                        {
                            connected = true; logger.Write("Identification", Logger.logType.info);
                        }
                        else
                        {
                            logger.Write("Identification error " + res.result, Logger.logType.info);
                            Common.ConsoleWrite(multilang.GetResultText(res, config.lang));
                        }
                    }
                    else
                    {
                        Common.ConsoleWrite(multilang.Get("TooShort", config.lang));
                    }
                }
                bool inparty = false;
                while (!inparty)
                {
                    Console.Clear();
                    Common.ConsoleWrite(multilang.GetResultText(client.Request(new string[2] {
                        "party", "list"
                    }), config.lang));
                    Common.ConsoleWrite(multilang.Get("Party", config.lang) + ":" + Environment.NewLine + "     (<id> [password] or 'c' for create)");
                    string[] data = Common.SplitArgs(Console.ReadLine());
                    if (data.Length > 0)
                    {
                        if (data[0] == "c")
                        {
                            Common.ConsoleWrite("<party name> <player count>:");
                            string[] split = Common.SplitArgs(Console.ReadLine());
                            if (split.Length == 2)
                            {
                                ResultData createRes = client.Request(new string[4] {
                                    "party", "create", split[0], split[1]
                                });
                                if (createRes.type == ResultTypes.OK)
                                {
                                    inparty = true;
                                }
                                else
                                {
                                    Common.ConsoleWrite(multilang.GetResultText(createRes, config.lang));
                                    Console.ReadLine();
                                }
                            }
                            else
                            {
                                Common.ConsoleWrite("Format");
                            }
                        }
                        else
                        {
                            int id;
                            if (int.TryParse(data[0], out id))
                            {
                                string[] request = data.Length == 1 ? new string[3] {
                                    "party", "join", id.ToString()
                                } : new string[4] {
                                    "party", "join", id.ToString(), data[1]
                                };
                                ResultData res = client.Request(request);
                                if (res.type == ResultTypes.OK)
                                {
                                    inparty = true;
                                }
                                else
                                {
                                    Common.ConsoleWrite(multilang.GetResultText(res, config.lang));
                                }
                            }
                            else
                            {
                                Common.ConsoleWrite("Format");
                            }
                        }
                    }
                }
                logger.Write("Play", Logger.logType.info, Logger.logConsole.hide);
                Common.ConsoleWrite(multilang.Get("Play", config.lang));
                while (run)
                {
                    Execute(Console.ReadLine()); //Process console input
                    if (!client.isRunning)
                    {
                        run = false;
                    }
                }
                Console.Read();
            }
            else
            {
                logger.Write("Connection error", Logger.logType.error);
                Common.ConsoleWrite(multilang.Get("CantConnect", config.lang), ConsoleColor.Red);
            }
            run = false;
            logger.Join();
            Console.ReadLine();
        }