internal class HuntSysUI : IConquerAIWebUI { public string Name { get { return "Hunter System"; } } public string Page { get { return "/huntsys.html"; } } public void RenderUI(UriQuery urlQuery, HttpListenerContext context, HttpListenerRequest request, HttpListenerResponse response, StreamWriter output) { // // update fields / handle input, etc. // string value; if (urlQuery.TryGetField("quality", out value)) HunterSettings.MinQuality = (LootQuality)Math.Max(int.Parse(value), (int)LootQuality.Refined); if (urlQuery.TryGetField("bless", out value)) HunterSettings.MinBless = Math.Min(7, Math.Max(int.Parse(value), 1)); if (urlQuery.TryGetField("tradeadd", out value)) HunterSettings.TradeAddItems = (value == "on"); if (urlQuery.TryGetField("usetraders", out value)) HunterSettings.UseTraders = (value == "on"); if (urlQuery.TryGetField("username", out value)) { string password, server, profile, action; if (urlQuery.TryGetField("password", out password) && urlQuery.TryGetField("server", out server) && urlQuery.TryGetField("profile", out profile)) { HunterSettings.AddHunter(value, password, server, profile); HttpServer.LogMessage("Attempting to add hunter... {0}, {1}", value, server); } else if (urlQuery.TryGetField("action", out action)) { LoginData ld; COFarmerClient inst; switch (action) { case "disconnect": if (HunterSettings.TryGetStandaloneData(value, out ld)) HunterSettings.DisconnectStandalone(ld); else if (HunterSettings.TryGetCliented(value, out inst)) HunterSettings.DisconnectClient(inst); break; case "remove": if (HunterSettings.TryGetStandaloneData(value, out ld)) HunterSettings.RemoveStandalone(ld); else if (HunterSettings.TryGetCliented(value, out inst)) HunterSettings.RemoveClient(inst); break; case "stop": if (HunterSettings.TryGetStandaloneData(value, out ld)) HunterSettings.StopStandalone(ld); else if (HunterSettings.TryGetCliented(value, out inst)) HunterSettings.StopClient(inst); ; break; case "start": if (HunterSettings.TryGetStandaloneData(value, out ld)) HunterSettings.StartStandalone(ld); else if (HunterSettings.TryGetCliented(value, out inst)) HunterSettings.StartClient(inst); break; } } } // // // // render left side panel // min quality, bless, trade +, use traders var sb = new StringBuilder(); sb.AppendLine("
"); var minQuality = new StringBuilder(); minQuality.Append(new HtmlForm.RadioButton("quality", "6", HunterSettings.MinQuality == LootQuality.Refined) + " Refined
"); minQuality.Append(new HtmlForm.RadioButton("quality", "7", HunterSettings.MinQuality == LootQuality.Unique) + " Unique
"); minQuality.Append(new HtmlForm.RadioButton("quality", "8", HunterSettings.MinQuality == LootQuality.Elite) + " Elite
"); minQuality.Append(new HtmlForm.RadioButton("quality", "9", HunterSettings.MinQuality == LootQuality.Super) + " Super"); var minBless = new StringBuilder(); minBless.Append(new HtmlForm.RadioButton("bless", "1", HunterSettings.MinBless < 3) + " -1 %
"); minBless.Append(new HtmlForm.RadioButton("bless", "3", HunterSettings.MinBless == 3) + " -3 %
"); minBless.Append(new HtmlForm.RadioButton("bless", "5", HunterSettings.MinBless == 5) + " -5 %
"); minBless.Append(new HtmlForm.RadioButton("bless", "7", HunterSettings.MinBless > 5) + " -7 %"); var table = new HtmlTable(); table.AddRow(new HtmlTable.Row("Trade Min. Quality", minQuality)); table.AddRow(new HtmlTable.Row("Trade Min. Bless", minBless)); table.AddRow(new HtmlTable.Row("Trade Add Items", new HtmlForm.CheckBox("tradeadd", HunterSettings.TradeAddItems))); table.AddRow(new HtmlTable.Row("Use Traders", new HtmlForm.CheckBox("usetraders", HunterSettings.UseTraders))); table.AddRow(new HtmlTable.Row(new HtmlForm.SubmitButton("Apply Changes"))); sb.AppendLine(table.ToString()); sb.AppendLine(new HtmlForm.Hidden("token", HttpServer.Token).ToString()); sb.AppendLine("
"); // to-do render logged in client list... string frmtOptions = "
" + " " + " " + " " + " " + " " + " " + "
"; var clientTable = new HtmlTable(); clientTable.Tags["border"] = "2"; clientTable.AddRow(new HtmlTable.Row("Account", "Server", "Name", "Status", "Options")); foreach (var client in HunterSettings.Cliented) { foreach (var set in HunterSettings.ClientHunters) { if (client.Username == set.Item2) { clientTable.AddRow(new HtmlTable.Row(client.Username, client.Server, client.Name, client.Hunting ? "Hunting" : "Not hunting.", string.Format(frmtOptions, client.Username))); break; } } } var accountedFor = new List(); foreach (var client in HunterSettings.StandaloneClients) { LoginData ld; if (HunterSettings.TryGetStandaloneData(client.Username, out ld)) { accountedFor.Add(ld.User); clientTable.AddRow(new HtmlTable.Row(client.Username, ld.Server, client.Name, client.Hunting ? "Hunting" : "Not hunting.", string.Format(frmtOptions, client.Username))); break; } } foreach (var account in HunterSettings.StandaloneHunters) { if (!accountedFor.Contains(account.Item2.User)) { var ld = account.Item2; clientTable.AddRow(new HtmlTable.Row(ld.User, ld.Server, "Not logged in", "Disconnected", string.Format(frmtOptions, ld.User))); } } // create the UI for adding an account to hunt sys var accountUI = new StringBuilder(); accountUI.AppendLine("
"); var accountUITable = new HtmlTable(); accountUITable.AddRow(new HtmlTable.Row("Username: ", new HtmlForm.Text("username"))); accountUITable.AddRow(new HtmlTable.Row("Password: ", new HtmlForm.Text("password"))); accountUITable.AddRow(new HtmlTable.Row("Server: ", new HtmlForm.Text("server"))); accountUITable.AddRow(new HtmlTable.Row("Profile: ", new HtmlForm.Text("profile"))); accountUITable.AddRow(new HtmlTable.Row(new HtmlForm.SubmitButton("Add Account"))); accountUI.AppendLine(accountUITable.ToString()); accountUI.AppendLine("
"); HttpServer.RenderUI(request, output, accountUI, sb, clientTable); } }