static void Main(string[] args) { Console.Title = "KLF Client " + KLFCommon.ProgramVersion; Console.WriteLine("KLF Client Copyright (C) 2013 Alfred Lam"); Console.WriteLine("This program comes with ABSOLUTELY NO WARRANTY; for details type `/show'."); Console.WriteLine("This is free software, and you are welcome to redistribute it"); Console.WriteLine("under certain conditions; type `/show' for details."); Console.WriteLine(); ConsoleClient client = new ConsoleClient(); Configuration = ClientSettings.Load(Path.Combine("./", Filename)); while(true) { Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.Write("Username: "******"Server Address: "); Console.ResetColor(); Console.WriteLine(((Uri)Configuration.GetDefaultServer()).ToString()); Console.ForegroundColor = ConsoleColor.Green; Console.Write("Auto-Reconnect: "); Console.ResetColor(); Console.WriteLine(Configuration.Reconnect); Console.ResetColor(); Console.WriteLine(); Console.WriteLine("/name change username"); //Console.WriteLine("/auth change token"); Console.WriteLine("/add add server"); Console.WriteLine("/select select default server"); Console.WriteLine("/connect connect to default server"); Console.WriteLine("/auto toggle auto-reconnect"); Console.WriteLine("/quit quit KLFClient"); String[] MenuArgs = Console.ReadLine().Split(' '); switch(MenuArgs[0].ToLowerInvariant()) { case "/quit": case "/q": Console.Write("Closing.\n"); return; case "/name": case "/n": case "/user": case "/u": if(MenuArgs.Length > 1) Configuration.Username = MenuArgs[1]; else { Console.Write("Enter your new username: "******"/auth": //TODO auth token feature break; case "/add": case "/server": String hn; Int32 pn; Console.Write("Host name or IP Address: "); hn = Console.ReadLine(); Console.Write("Port number: "); Int32.TryParse(Console.ReadLine(), out pn); if(Configuration.AddServer(hn, pn)) Console.WriteLine("Server Added."); else Console.WriteLine("Bad input."); Configuration.Save(Filename); break; case "/auto": case "/a": Configuration.Reconnect = !Configuration.Reconnect; Configuration.Save(Filename); break; case "/select": case "/sel": case "/list": case "/default": case "/def": Int32 choice = 0; foreach(ServerProfile server in Configuration.Servers) Console.WriteLine(" {0}{1} {2}", choice++, server.Default?"*":" ", server.Uri.ToString()); Console.Write("Choose default server: "); if(!Int32.TryParse(Console.ReadLine(), out choice)) choice = -1;//invalid if(0 <= choice && choice < Configuration.Servers.Count) { Configuration.SetDefaultServer(choice); Configuration.Save(Filename); Console.WriteLine("Default saved."); } else Console.WriteLine("Invalid index. No changes."); break; case "/connect": case "/co": //TODO validate if(Configuration.ValidServer(Configuration.GetDefaultServer().Host, Configuration.GetDefaultServer().Port)) client.Connect(Configuration); else Console.WriteLine("/add a server then use /def to select default."); break; case "/show": ShowLicense(); break; default: break; } }//end while }