From f036bee880a88171fb598d32abc1e0c60ee45a47 Mon Sep 17 00:00:00 2001 From: sunnamed434 Date: Sun, 12 May 2024 17:04:12 +0300 Subject: [PATCH] Rollback RocketCommandManager changes (fix #57) --- .../Commands/RocketCommandManager.cs | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/Rocket/Rocket.Core/Commands/RocketCommandManager.cs b/Rocket/Rocket.Core/Commands/RocketCommandManager.cs index b0b8596..18cc206 100644 --- a/Rocket/Rocket.Core/Commands/RocketCommandManager.cs +++ b/Rocket/Rocket.Core/Commands/RocketCommandManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Collections.ObjectModel; @@ -17,9 +17,9 @@ namespace Rocket.Core.Commands { public class RocketCommandManager : MonoBehaviour { - private readonly Dictionary commands = new(); + private readonly List commands = new List(); internal List cooldown = new List(); - public IReadOnlyDictionary Commands { get; internal set; } + public ReadOnlyCollection Commands { get; internal set; } private XMLFileAsset commandMappings; public delegate void ExecuteCommand(IRocketPlayer player, IRocketCommand command, ref bool cancel); @@ -27,14 +27,13 @@ public class RocketCommandManager : MonoBehaviour internal void Reload() { - commandMappings.Load(); checkCommandMappings(); } private void Awake() { - Commands = commands; + Commands = commands.AsReadOnly(); commandMappings = new XMLFileAsset(Environment.CommandsFile); checkCommandMappings(); R.Plugins.OnPluginsLoaded += Plugins_OnPluginsLoaded; @@ -81,9 +80,9 @@ private IRocketCommand GetCommand(IRocketCommand command) public IRocketCommand GetCommand(string command) { - if (!commands.ContainsKey(command.ToLower())) - return null; - return commands[command.ToLower()]; + IRocketCommand foundCommand = commands.Where(c => c.Name.ToLower() == command.ToLower()).FirstOrDefault(); + if(foundCommand == null) commands.Where(c => c.Aliases.Select(a => a.ToLower()).Contains(command.ToLower())).FirstOrDefault(); + return foundCommand; } private static string getCommandIdentity(IRocketCommand command,string name) @@ -158,20 +157,14 @@ public void Register(IRocketCommand command, string alias, CommandPriority prior foreach(CommandMapping mapping in commandMappings.Instance.CommandMappings.Where(m => m.Class == className && m.Enabled)) { - commands.Add(mapping.Name.ToLower(), new RegisteredRocketCommand(mapping.Name.ToLower(), command)); + commands.Add(new RegisteredRocketCommand(mapping.Name.ToLower(), command)); Logging.Logger.Log("[registered] /" + mapping.Name.ToLower() + " (" + mapping.Class + ")", ConsoleColor.Green); } } public void DeregisterFromAssembly(Assembly assembly) { - List toRemove = new(); - foreach (var pair in commands) - { - if (getCommandType(pair.Value.Command).Assembly == assembly) - toRemove.Add(pair.Key); - } - toRemove.ForEach((string str) => commands.Remove(str)); + commands.RemoveAll(rc => getCommandType(rc.Command).Assembly == assembly); } public double GetCooldown(IRocketPlayer player, IRocketCommand command) @@ -464,4 +457,4 @@ public void Execute(IRocketPlayer caller, string[] parameters) } } } -} +} \ No newline at end of file