public string[] OnCall(ICommandSender sender, string[] args) { if (args.Length <= 0 || args == null) { return(HelpMessage()); } switch (args[0].ToUpper()) { case "LIST": { string s = "Registered Gamemodes:\n - Standard (standard)\n"; for (int i = 0; i < GamemodeManager.ModeList.Count; i++) { Plugin gm = GamemodeManager.ModeList.ElementAt(i).Key; s += $" - {gm.Details.name} ({gm.Details.id})"; if (i < GamemodeManager.ModeList.Count - 1) { s += "\n"; } } return(new[] { s }); } case "SET": { if (args.Length != 2) { return(HelpMessage()); } if (GamemodeManager.method != GamemodeManager.ChoosingMethod.NONE && GamemodeManager.method != GamemodeManager.ChoosingMethod.PERSIST) { return new[] { $"Cannot set next mode while in {GamemodeManager.method.ToString()} mode." } } ; string id = args[1].ToLower(); if (id == "standard") { GamemodeManager.SetNextMode(null); return(new[] { $"Set next gamemode to Standard." }); } foreach (KeyValuePair <Plugin, string> entry in GamemodeManager.ModeList) { if (entry.Key.Details.id.ToLower() == id) { GamemodeManager.SetNextMode(entry.Key); return(new[] { $"Set next gamemode to {entry.Key.Details.name} ({entry.Key.Details.id})." }); } } return(new[] { $"Unknown gamemode {id}." }); } case "SETMODE": { if (args.Length < 2) { return(HelpMessage()); } string cmd = args[1].ToUpper(); switch (cmd) { case "NONE": { GamemodeManager.ChangeMode(GamemodeManager.ChoosingMethod.NONE); break; } case "CYCLE": { GamemodeManager.ChangeMode(GamemodeManager.ChoosingMethod.CYCLE); break; } case "SHUFFLE": { GamemodeManager.ChangeMode(GamemodeManager.ChoosingMethod.SHUFFLE); break; } case "VOTE": { GamemodeManager.ChangeMode(GamemodeManager.ChoosingMethod.VOTE); break; } case "PERSIST": { GamemodeManager.ChangeMode(GamemodeManager.ChoosingMethod.PERSIST); break; } default: { return(new[] { $"Unknown gamemode method." }); } } int freq = 0; if (args.Length >= 3) { if (int.TryParse(args[2], out int a)) { if (args.Length == 4 && GamemodeManager.method != GamemodeManager.ChoosingMethod.NONE) { if (bool.TryParse(args[3].ToLower(), out bool b)) { GamemodeManager.SetFrequency(a, b); } else { return(new[] { "RunNext must be true or false." }); } } else { GamemodeManager.SetFrequency(a); } freq = a; } else { return(new[] { "Invalid frequency." }); } } else { GamemodeManager.methodFreq = 0; } return(new[] { $"Set gamemode method to {cmd}{(freq != 0 ? $" with frequency {freq}" : string.Empty)}." }); } case "RELOAD": { if (GamemodeManager.CurrentMode == null) { GamemodeManager.ReloadDefaultConfig(); return(new[] { "Default config data reloaded." }); } else { return(new[] { "Cannot reload default config while a gamemode config is laoded." }); } } default: { return(HelpMessage()); } } }
public override void OnEnable() { GamemodeManager.ReloadDefaultConfig(); GamemodeManager.isFirstRound = true; }