feat: add enable/disable/toggle commands

This commit is contained in:
Anna 2021-05-10 11:44:26 -04:00
parent 5a85476cac
commit 3ee6213cf7
3 changed files with 221 additions and 145 deletions

View File

@ -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();
}
}
}

View File

@ -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 &apos;enable&apos; or &apos;disable&apos; 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&apos;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>

View File

@ -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>