private string ColorizeState(ShadowbreedState state) { switch (state) { case ShadowbreedState.Up: return(HTML.CreateColorString(RichTextWindow.ColorGreen, state.ToString())); case ShadowbreedState.Unknown: return(HTML.CreateColorString(RichTextWindow.ColorOrange, state.ToString())); default: return(HTML.CreateColorString(RichTextWindow.ColorRed, state.ToString())); } }
public override void OnCommand(BotShell bot, CommandArgs e) { switch (e.Command) { case "callers": this.OnCallersCommand(bot, e); break; case "callers add": if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: callers add [username]"); break; } if (bot.GetUserID(e.Args[0]) < 1) { bot.SendReply(e, "No such user: "******"That user is already on the callers list"); break; } this.Callers.Add(e.Args[0].ToLower()); } bot.SendReply(e, "Added " + HTML.CreateColorString(bot.ColorHeaderHex, e.Args[0]) + " to the callers list"); this.OnCallersCommand(bot, e); break; case "callers remove": if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: callers remove [username]"); break; } if (e.Args[0].ToLower() == "all") { this.Callers.Clear(); bot.SendReply(e, "Clearing the callers list"); break; } lock (this.Callers) { if (!this.Callers.Contains(e.Args[0].ToLower())) { bot.SendReply(e, "That user is not on the callers list"); break; } this.Callers.Remove(e.Args[0].ToLower()); } bot.SendReply(e, "Removed " + HTML.CreateColorString(bot.ColorHeaderHex, e.Args[0]) + " from the callers list"); break; case "assist": if (e.Args.Length < 1) { bot.SendReply(e, "Correct Usage: assist [username]"); break; } if (bot.GetUserID(e.Args[0]) < 1) { bot.SendReply(e, "No such user: "******"Assist " + assist); assistWindow.AppendHighlight("Create Macro: "); assistWindow.AppendCommand("Click", "/macro " + assist + " /assist " + assist); assistWindow.AppendLineBreak(); assistWindow.AppendHighlight("Assist: "); assistWindow.AppendCommand("Click", "/assist " + assist); assistWindow.AppendLineBreak(); assistWindow.AppendHighlight("Manual Macro: "); assistWindow.AppendNormal("/macro assist /assist " + assist); assistWindow.AppendLineBreak(); bot.SendReply(e, "Assist " + assist + " »» " + assistWindow.ToString()); break; case "target": if (e.Words.Length < 1) { bot.SendReply(e, "Correct Usage: target [target]"); break; } string target = string.Format("{0}::: {1}Assist {3} to Terminate {0}::: {2}{4}", bot.ColorHighlight, HTML.CreateColorStart(RichTextWindow.ColorRed), bot.ColorNormal, e.Sender, e.Words[0]); if (e.Type == CommandType.Organization) { this.SendMessage(bot, "gc", target); } else { this.SendMessage(bot, "pg", target); } break; case "command": if (e.Words.Length < 1) { bot.SendReply(e, "Correct Usage: command [command]"); break; } string command = string.Format("{0}::: {1}Raid Command from {3} {0}:::\n¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\n {2}{4}{0}\n______________________________________________", bot.ColorHighlight, HTML.CreateColorStart(RichTextWindow.ColorOrange), bot.ColorNormal, e.Sender, e.Words[0]); if (e.Type == CommandType.Organization) { this.SendMessage(bot, "gc", command); } else { this.SendMessage(bot, "pg", command); } break; case "order": if (e.Words.Length < 1) { bot.SendReply(e, "Correct Usage: order [order]"); break; } string order = string.Format("{0}::: {1}Raid Order from {3} {0}::: {2}{4}", bot.ColorHighlight, HTML.CreateColorStart(RichTextWindow.ColorOrange), bot.ColorNormal, e.Sender, e.Words[0]); if (e.Type == CommandType.Organization) { this.SendMessage(bot, "gc", order); } else { this.SendMessage(bot, "pg", order); } break; case "cd": string channel = "pg"; if (e.Type == CommandType.Organization) { channel = "gc"; } if (e.Args.Length > 0) { if (e.Args[0].ToLower() == "abort") { if (this.Counting) { this.Abort = true; return; } bot.SendReply(e, "No countdown in progress"); return; } } if (this.Counting) { bot.SendReply(e, "Countdown already in progress"); return; } this.Counting = true; this.Abort = false; string onThree = string.Empty; if (e.Words.Length > 0) { onThree = e.Words[0]; } for (int i = 5; i >= 0; i--) { if (this.Abort == true) { this.SendMessage(bot, channel, bot.ColorHighlight + "Countdown aborted!"); break; } if (i == 0) { this.SendMessage(bot, channel, bot.ColorHighlight + "-- " + HTML.CreateColorString(bot.ColorHeaderHex, "GO") + " --"); break; } this.SendMessage(bot, channel, bot.ColorHighlight + "--- " + HTML.CreateColorString(bot.ColorHeaderHex, i.ToString()) + " ---"); if (i == 3 && onThree != string.Empty) { this.SendMessage(bot, channel, bot.ColorHighlight + "-- " + HTML.CreateColorString(bot.ColorHeaderHex, onThree)); } Thread.Sleep(1000); } this.Counting = false; break; case "sb": this.OnSbCommand(bot, e); break; case "sb set": if (e.Args.Length < 2) { bot.SendReply(e, "Correct Usage: sb adminset [username] [state]"); break; } lock (this.Shadowbreeds) { if (!this.Shadowbreeds.ContainsKey(e.Args[0].ToLower())) { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, e.Args[0]) + " is not on the Shadowbreed list"); break; } } ShadowbreedState state = ShadowbreedState.Unknown; try { state = (ShadowbreedState)Enum.Parse(typeof(ShadowbreedState), Format.UppercaseFirst(e.Args[1])); } catch { bot.SendReply(e, HTML.CreateColorString(bot.ColorHeaderHex, e.Args[1]) + " is not a valid state."); break; } lock (this.Shadowbreeds) this.Shadowbreeds[e.Args[0].ToLower()] = state; bot.SendReply(e, "Shadowbreed state for " + HTML.CreateColorString(bot.ColorHeaderHex, e.Args[0]) + " has been set to " + this.ColorizeState(state)); break; case "sb reset": lock (this.Shadowbreeds) { this.Shadowbreeds.Clear(); bot.SendReply(e, "The Shadowbreed list has been reseted"); } this.OnSbCommand(bot, e); break; case "sb get": List <string> list = new List <string>(); lock (this.Shadowbreeds) { if (this.Shadowbreeds.Count < 1) { bot.SendReply(e, "The Shadowbreeds list is empty"); return; } foreach (KeyValuePair <string, ShadowbreedState> kvp in this.Shadowbreeds) { if (kvp.Value == ShadowbreedState.Unknown) { list.Add(Format.UppercaseFirst(kvp.Key)); } } } if (list.Count < 1) { bot.SendReply(e, "All Shadowbreed states are known."); return; } bot.SendReply(e, "Requesting Shadowbreed state from: " + HTML.CreateColorString(bot.ColorHeaderHex, string.Join(", ", list.ToArray()))); foreach (string user in list) { this.RequestSbState(bot, user); } break; } }
public void CreateSbList(BotShell bot, ref RichTextWindow window, List <string> users) { users.Sort(); RichTextWindow up = new RichTextWindow(bot); RichTextWindow unknown = new RichTextWindow(bot); RichTextWindow down = new RichTextWindow(bot); foreach (string user in users) { ShadowbreedState state = ShadowbreedState.Unknown; lock (this.Shadowbreeds) if (this.Shadowbreeds.ContainsKey(user)) { state = this.Shadowbreeds[user]; } RichTextWindow tmp; switch (state) { case ShadowbreedState.Up: tmp = up; break; case ShadowbreedState.Unknown: tmp = unknown; break; default: tmp = down; break; } tmp.AppendHighlight(Format.UppercaseFirst(user) + " "); tmp.AppendNormalStart(); tmp.AppendString("("); tmp.AppendRawString(this.ColorizeState(state)); tmp.AppendString(") "); if (state != ShadowbreedState.Up) { tmp.AppendString("["); tmp.AppendBotCommand("Up", "sb set " + user + " up"); tmp.AppendString("] "); } if (state != ShadowbreedState.Down) { tmp.AppendString("["); tmp.AppendBotCommand("Down", "sb set " + user + " down"); tmp.AppendString("] "); } if (state != ShadowbreedState.Unavailable) { tmp.AppendString("["); tmp.AppendBotCommand("Unavailable", "sb set " + user + " unavailable"); tmp.AppendString("] "); } tmp.AppendColorEnd(); tmp.AppendLineBreak(); } window.AppendRawString(up.Text); window.AppendRawString(unknown.Text); window.AppendRawString(down.Text); }