Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 10 additions & 17 deletions Rocket/Rocket.Core/Commands/RocketCommandManager.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections.ObjectModel;
Expand All @@ -17,24 +17,23 @@ namespace Rocket.Core.Commands
{
public class RocketCommandManager : MonoBehaviour
{
private readonly Dictionary<string, RegisteredRocketCommand> commands = new();
private readonly List<RegisteredRocketCommand> commands = new List<RegisteredRocketCommand>();
internal List<RocketCommandCooldown> cooldown = new List<RocketCommandCooldown>();
public IReadOnlyDictionary<string, RegisteredRocketCommand> Commands { get; internal set; }
public ReadOnlyCollection<RegisteredRocketCommand> Commands { get; internal set; }
private XMLFileAsset<RocketCommands> commandMappings;

public delegate void ExecuteCommand(IRocketPlayer player, IRocketCommand command, ref bool cancel);
public event ExecuteCommand OnExecuteCommand;

internal void Reload()
{

commandMappings.Load();
checkCommandMappings();
}

private void Awake()
{
Commands = commands;
Commands = commands.AsReadOnly();
commandMappings = new XMLFileAsset<RocketCommands>(Environment.CommandsFile);
checkCommandMappings();
R.Plugins.OnPluginsLoaded += Plugins_OnPluginsLoaded;
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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<string> 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)
Expand Down Expand Up @@ -464,4 +457,4 @@ public void Execute(IRocketPlayer caller, string[] parameters)
}
}
}
}
}