feat: add enable/disable/toggle commands
This commit is contained in:
parent
5a85476cac
commit
3ee6213cf7
|
@ -1,5 +1,7 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using Dalamud.Game.Command;
|
||||
using SoundFilter.Resources;
|
||||
|
||||
namespace SoundFilter {
|
||||
internal class Commands : IDisposable {
|
||||
|
@ -20,7 +22,45 @@ namespace SoundFilter {
|
|||
}
|
||||
|
||||
private void OnCommand(string command, string args) {
|
||||
if (string.IsNullOrWhiteSpace(args)) {
|
||||
this.Plugin.Ui.Settings.Toggle();
|
||||
return;
|
||||
}
|
||||
|
||||
var chat = this.Plugin.Interface.Framework.Gui.Chat;
|
||||
|
||||
var split = args.Split(' ');
|
||||
if (split.Length < 1) {
|
||||
chat.PrintError($"[{SoundFilterPlugin.Name}] {Language.CommandNotEnoughArguments}");
|
||||
return;
|
||||
}
|
||||
|
||||
var filterName = split.Length > 1 ? string.Join(" ", split.Skip(1)) : null;
|
||||
var filter = filterName == null ? null : this.Plugin.Config.Filtered.Values.FirstOrDefault(filter => filter.Name == filterName);
|
||||
if (filterName != null && filter == null) {
|
||||
chat.PrintError($"[{SoundFilterPlugin.Name}] {Language.CommandNoSuchFilter}");
|
||||
return;
|
||||
}
|
||||
|
||||
bool? enabled = split[0] switch {
|
||||
"enable" => true,
|
||||
"disable" => false,
|
||||
"toggle" when filter == null => !this.Plugin.Config.Enabled,
|
||||
"toggle" => !filter.Enabled,
|
||||
_ => null,
|
||||
};
|
||||
if (enabled == null) {
|
||||
chat.PrintError($"[{SoundFilterPlugin.Name}] {Language.CommandInvalidSubcommand}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (filter != null) {
|
||||
filter.Enabled = enabled.Value;
|
||||
} else {
|
||||
this.Plugin.Config.Enabled = enabled.Value;
|
||||
}
|
||||
|
||||
this.Plugin.Config.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,6 +60,33 @@ namespace SoundFilter.Resources {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Invalid subcommand..
|
||||
/// </summary>
|
||||
internal static string CommandInvalidSubcommand {
|
||||
get {
|
||||
return ResourceManager.GetString("CommandInvalidSubcommand", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No such filter..
|
||||
/// </summary>
|
||||
internal static string CommandNoSuchFilter {
|
||||
get {
|
||||
return ResourceManager.GetString("CommandNoSuchFilter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Not enough arguments. Please specify 'enable' or 'disable' and an optional filter name.
|
||||
/// </summary>
|
||||
internal static string CommandNotEnoughArguments {
|
||||
get {
|
||||
return ResourceManager.GetString("CommandNotEnoughArguments", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Due to the way FFXIV's resource loading works, {0} has to hear a sound once before it can filter it after a fresh install or update. Restart your game after installing or updating if this is a problem for you..
|
||||
/// </summary>
|
||||
|
|
|
@ -45,4 +45,13 @@
|
|||
<data name="SettingsAddPathToFilter" xml:space="preserve">
|
||||
<value>Sound path to filter</value>
|
||||
</data>
|
||||
<data name="CommandNotEnoughArguments" xml:space="preserve">
|
||||
<value>Not enough arguments. Please specify 'enable' or 'disable' and an optional filter name</value>
|
||||
</data>
|
||||
<data name="CommandInvalidSubcommand" xml:space="preserve">
|
||||
<value>Invalid subcommand.</value>
|
||||
</data>
|
||||
<data name="CommandNoSuchFilter" xml:space="preserve">
|
||||
<value>No such filter.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
Loading…
Reference in New Issue