refactor: move to net5
This commit is contained in:
parent
86c891946f
commit
84fb9e2739
|
@ -12,13 +12,13 @@ namespace SoundFilter {
|
||||||
public Commands(SoundFilterPlugin plugin) {
|
public Commands(SoundFilterPlugin plugin) {
|
||||||
this.Plugin = plugin;
|
this.Plugin = plugin;
|
||||||
|
|
||||||
this.Plugin.Interface.CommandManager.AddHandler(Name, new CommandInfo(this.OnCommand) {
|
this.Plugin.CommandManager.AddHandler(Name, new CommandInfo(this.OnCommand) {
|
||||||
HelpMessage = $"Toggle the {SoundFilterPlugin.Name} config",
|
HelpMessage = $"Toggle the {this.Plugin.Name} config",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
this.Plugin.Interface.CommandManager.RemoveHandler(Name);
|
this.Plugin.CommandManager.RemoveHandler(Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCommand(string command, string args) {
|
private void OnCommand(string command, string args) {
|
||||||
|
@ -27,13 +27,13 @@ namespace SoundFilter {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var chat = this.Plugin.Interface.Framework.Gui.Chat;
|
var chat = this.Plugin.ChatGui;
|
||||||
|
|
||||||
var split = args.Split(' ');
|
var split = args.Split(' ');
|
||||||
if (split.Length < 1) {
|
if (split.Length < 1) {
|
||||||
chat.PrintError($"[{SoundFilterPlugin.Name}] {Language.CommandNotEnoughArguments}");
|
chat.PrintError($"[{this.Plugin.Name}] {Language.CommandNotEnoughArguments}");
|
||||||
chat.PrintError($"[{SoundFilterPlugin.Name}] /soundfilter log");
|
chat.PrintError($"[{this.Plugin.Name}] /soundfilter log");
|
||||||
chat.PrintError($"[{SoundFilterPlugin.Name}] /soundfilter <enable|disable|toggle> [filter name]");
|
chat.PrintError($"[{this.Plugin.Name}] /soundfilter <enable|disable|toggle> [filter name]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ namespace SoundFilter {
|
||||||
var filterName = split.Length > 1 ? string.Join(" ", split.Skip(1)) : null;
|
var filterName = split.Length > 1 ? string.Join(" ", split.Skip(1)) : null;
|
||||||
var filter = filterName == null ? null : this.Plugin.Config.Filters.FirstOrDefault(filter => filter.Name == filterName);
|
var filter = filterName == null ? null : this.Plugin.Config.Filters.FirstOrDefault(filter => filter.Name == filterName);
|
||||||
if (filterName != null && filter == null) {
|
if (filterName != null && filter == null) {
|
||||||
chat.PrintError($"[{SoundFilterPlugin.Name}] {Language.CommandNoSuchFilter}");
|
chat.PrintError($"[{this.Plugin.Name}] {Language.CommandNoSuchFilter}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,13 +58,22 @@ namespace SoundFilter {
|
||||||
_ => null,
|
_ => null,
|
||||||
};
|
};
|
||||||
if (enabled == null) {
|
if (enabled == null) {
|
||||||
chat.PrintError($"[{SoundFilterPlugin.Name}] {Language.CommandInvalidSubcommand}");
|
chat.PrintError($"[{this.Plugin.Name}] {Language.CommandInvalidSubcommand}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter != null) {
|
if (filter != null) {
|
||||||
filter.Enabled = enabled.Value;
|
filter.Enabled = enabled.Value;
|
||||||
} else {
|
} else {
|
||||||
|
switch (this.Plugin.Config.Enabled) {
|
||||||
|
case true when !enabled.Value:
|
||||||
|
this.Plugin.Filter.Disable();
|
||||||
|
break;
|
||||||
|
case false when enabled.Value:
|
||||||
|
this.Plugin.Filter.Enable();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
this.Plugin.Config.Enabled = enabled.Value;
|
this.Plugin.Config.Enabled = enabled.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using Dalamud.Plugin;
|
using Dalamud.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
@ -22,9 +22,9 @@ namespace SoundFilter.Config {
|
||||||
private static void MigrateV1(JObject old) {
|
private static void MigrateV1(JObject old) {
|
||||||
var filters = new List<CustomFilter>();
|
var filters = new List<CustomFilter>();
|
||||||
|
|
||||||
WithEachObject(old["Filtered"], (glob, filter) => {
|
WithEachObject(old["Filtered"]!, (glob, filter) => {
|
||||||
var name = filter["Name"].Value<string>();
|
var name = filter["Name"]!.Value<string>()!;
|
||||||
var enabled = filter["Enabled"].Value<bool>();
|
var enabled = filter["Enabled"]!.Value<bool>();
|
||||||
filters.Add(new CustomFilter {
|
filters.Add(new CustomFilter {
|
||||||
Name = name,
|
Name = name,
|
||||||
Enabled = enabled,
|
Enabled = enabled,
|
||||||
|
@ -48,7 +48,7 @@ namespace SoundFilter.Config {
|
||||||
goto DefaultConfiguration;
|
goto DefaultConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
var config = JsonConvert.DeserializeObject<JObject>(text);
|
var config = JsonConvert.DeserializeObject<JObject>(text)!;
|
||||||
|
|
||||||
int GetVersion() {
|
int GetVersion() {
|
||||||
if (config.TryGetValue("Version", out var token)) {
|
if (config.TryGetValue("Version", out var token)) {
|
||||||
|
@ -78,7 +78,7 @@ namespace SoundFilter.Config {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version == Configuration.LatestVersion) {
|
if (version == Configuration.LatestVersion) {
|
||||||
return config.ToObject<Configuration>();
|
return config.ToObject<Configuration>()!;
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultConfiguration:
|
DefaultConfiguration:
|
||||||
|
|
|
@ -6,7 +6,7 @@ using System.Linq;
|
||||||
using System.Runtime.ExceptionServices;
|
using System.Runtime.ExceptionServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using Dalamud.Hooking;
|
using Dalamud.Hooking;
|
||||||
using Dalamud.Plugin;
|
using Dalamud.Logging;
|
||||||
|
|
||||||
namespace SoundFilter {
|
namespace SoundFilter {
|
||||||
internal unsafe class Filter : IDisposable {
|
internal unsafe class Filter : IDisposable {
|
||||||
|
@ -56,13 +56,13 @@ namespace SoundFilter {
|
||||||
|
|
||||||
private IntPtr MusicManager {
|
private IntPtr MusicManager {
|
||||||
get {
|
get {
|
||||||
if (!this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.MusicManagerOffset, out var instructionPtr)) {
|
if (!this.Plugin.SigScanner.TryScanText(Signatures.MusicManagerOffset, out var instructionPtr)) {
|
||||||
PluginLog.LogWarning("Could not find music manager");
|
PluginLog.LogWarning("Could not find music manager");
|
||||||
return IntPtr.Zero;
|
return IntPtr.Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
var offset = *(int*) (instructionPtr + 3);
|
var offset = *(int*) (instructionPtr + 3);
|
||||||
return *(IntPtr*) (this.Plugin.Interface.Framework.Address.BaseAddress + offset);
|
return *(IntPtr*) (this.Plugin.Framework.Address.BaseAddress + offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,16 +126,16 @@ namespace SoundFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Enable() {
|
internal void Enable() {
|
||||||
if (this.PlaySpecificSoundHook == null && this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.PlaySpecificSound, out var playPtr)) {
|
if (this.PlaySpecificSoundHook == null && this.Plugin.SigScanner.TryScanText(Signatures.PlaySpecificSound, out var playPtr)) {
|
||||||
this.PlaySpecificSoundHook = new Hook<PlaySpecificSoundDelegate>(playPtr, new PlaySpecificSoundDelegate(this.PlaySpecificSoundDetour));
|
this.PlaySpecificSoundHook = new Hook<PlaySpecificSoundDelegate>(playPtr, this.PlaySpecificSoundDetour);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.GetResourceSyncHook == null && this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.GetResourceSync, out var syncPtr)) {
|
if (this.GetResourceSyncHook == null && this.Plugin.SigScanner.TryScanText(Signatures.GetResourceSync, out var syncPtr)) {
|
||||||
this.GetResourceSyncHook = new Hook<GetResourceSyncPrototype>(syncPtr, new GetResourceSyncPrototype(this.GetResourceSyncDetour));
|
this.GetResourceSyncHook = new Hook<GetResourceSyncPrototype>(syncPtr, this.GetResourceSyncDetour);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.GetResourceAsyncHook == null && this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.GetResourceAsync, out var asyncPtr)) {
|
if (this.GetResourceAsyncHook == null && this.Plugin.SigScanner.TryScanText(Signatures.GetResourceAsync, out var asyncPtr)) {
|
||||||
this.GetResourceAsyncHook = new Hook<GetResourceAsyncPrototype>(asyncPtr, new GetResourceAsyncPrototype(this.GetResourceAsyncDetour));
|
this.GetResourceAsyncHook = new Hook<GetResourceAsyncPrototype>(asyncPtr, this.GetResourceAsyncDetour);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.PlaySpecificSoundHook?.Enable();
|
this.PlaySpecificSoundHook?.Enable();
|
||||||
|
@ -149,6 +149,20 @@ namespace SoundFilter {
|
||||||
this.GetResourceAsyncHook?.Disable();
|
this.GetResourceAsyncHook?.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal void Toggle(bool save = true) {
|
||||||
|
if (this.Plugin.Config.Enabled) {
|
||||||
|
this.Disable();
|
||||||
|
} else {
|
||||||
|
this.Enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.Plugin.Config.Enabled ^= true;
|
||||||
|
|
||||||
|
if (save) {
|
||||||
|
this.Plugin.Config.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
this.PlaySpecificSoundHook?.Dispose();
|
this.PlaySpecificSoundHook?.Dispose();
|
||||||
this.GetResourceSyncHook?.Dispose();
|
this.GetResourceSyncHook?.Dispose();
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||||
<ResourcesMerge/>
|
|
||||||
<ILMerge/>
|
|
||||||
<Resourcer/>
|
<Resourcer/>
|
||||||
</Weavers>
|
</Weavers>
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
using Dalamud.Plugin;
|
|
||||||
|
|
||||||
namespace SoundFilter {
|
|
||||||
// ReSharper disable once UnusedType.Global
|
|
||||||
public class PluginShim : IDalamudPlugin {
|
|
||||||
public string Name => SoundFilterPlugin.Name;
|
|
||||||
|
|
||||||
private SoundFilterPlugin? Plugin { get; set; }
|
|
||||||
|
|
||||||
public void Initialize(DalamudPluginInterface pluginInterface) {
|
|
||||||
this.Plugin = new SoundFilterPlugin(pluginInterface);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() {
|
|
||||||
this.Plugin?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +1,12 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net48</TargetFramework>
|
<TargetFramework>net5-windows</TargetFramework>
|
||||||
<Version>1.4.2</Version>
|
<Version>1.4.2</Version>
|
||||||
<LangVersion>latest</LangVersion>
|
<LangVersion>latest</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
|
||||||
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Dalamud">
|
<Reference Include="Dalamud">
|
||||||
|
@ -39,11 +41,12 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="DalamudPackager" Version="1.2.1"/>
|
<PackageReference Include="DalamudPackager" Version="2.1.2"/>
|
||||||
<PackageReference Include="DotNet.Glob" Version="3.1.2"/>
|
<PackageReference Include="DotNet.Glob" Version="3.1.2"/>
|
||||||
<PackageReference Include="Fody" Version="6.5.1" PrivateAssets="all"/>
|
<PackageReference Include="Fody" Version="6.5.2" PrivateAssets="all"/>
|
||||||
<PackageReference Include="ILMerge.Fody" Version="1.16.0" PrivateAssets="all"/>
|
|
||||||
<PackageReference Include="Resourcer.Fody" Version="1.8.0" PrivateAssets="all"/>
|
<PackageReference Include="Resourcer.Fody" Version="1.8.0" PrivateAssets="all"/>
|
||||||
<PackageReference Include="ResourcesMerge.Fody" Version="1.0.3" PrivateAssets="all"/>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="..\icon.png" Link="images/icon.png" CopyToOutputDirectory="PreserveNewest" Visible="false"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
name: Sound Filter
|
name: Sound Filter
|
||||||
author: ascclemens
|
author: ascclemens
|
||||||
|
punchline: Filter any game sound.
|
||||||
description: |-
|
description: |-
|
||||||
Filters any sound or set of sounds from the game.
|
Filters any sound or set of sounds from the game.
|
||||||
|
|
||||||
- Remove a battle sound effect you don't like
|
- Remove a battle sound effect you don't like
|
||||||
- Remove specific emote sounds
|
- Remove specific emote sounds
|
||||||
- Remove specific background music
|
- Remove specific background music
|
||||||
|
|
||||||
|
Icons: filter by Kirby Wu from the Noun Project
|
||||||
|
and Sound by Gregor Cresnar from the Noun Project
|
||||||
repo_url: https://git.sr.ht/jkcclemens/SoundFilter
|
repo_url: https://git.sr.ht/jkcclemens/SoundFilter
|
||||||
|
|
|
@ -1,25 +1,41 @@
|
||||||
using System;
|
using Dalamud.Game;
|
||||||
|
using Dalamud.Game.Command;
|
||||||
|
using Dalamud.Game.Gui;
|
||||||
using Dalamud.Game.Text;
|
using Dalamud.Game.Text;
|
||||||
using Dalamud.Game.Text.SeStringHandling;
|
using Dalamud.Game.Text.SeStringHandling;
|
||||||
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
||||||
|
using Dalamud.IoC;
|
||||||
using Dalamud.Plugin;
|
using Dalamud.Plugin;
|
||||||
using SoundFilter.Config;
|
using SoundFilter.Config;
|
||||||
using SoundFilter.Resources;
|
using SoundFilter.Resources;
|
||||||
using SoundFilter.Ui;
|
using SoundFilter.Ui;
|
||||||
|
|
||||||
namespace SoundFilter {
|
namespace SoundFilter {
|
||||||
internal class SoundFilterPlugin : IDisposable {
|
// ReSharper disable once ClassNeverInstantiated.Global
|
||||||
internal const string Name = "Sound Filter";
|
internal class SoundFilterPlugin : IDalamudPlugin {
|
||||||
|
public string Name => "Sound Filter";
|
||||||
|
|
||||||
|
[PluginService]
|
||||||
|
internal DalamudPluginInterface Interface { get; init; } = null!;
|
||||||
|
|
||||||
|
[PluginService]
|
||||||
|
internal ChatGui ChatGui { get; init; } = null!;
|
||||||
|
|
||||||
|
[PluginService]
|
||||||
|
internal CommandManager CommandManager { get; init; } = null!;
|
||||||
|
|
||||||
|
[PluginService]
|
||||||
|
internal Framework Framework { get; init; } = null!;
|
||||||
|
|
||||||
|
[PluginService]
|
||||||
|
internal SigScanner SigScanner { get; init; } = null!;
|
||||||
|
|
||||||
internal DalamudPluginInterface Interface { get; }
|
|
||||||
internal Configuration Config { get; }
|
internal Configuration Config { get; }
|
||||||
internal Filter Filter { get; }
|
internal Filter Filter { get; }
|
||||||
internal PluginUi Ui { get; }
|
internal PluginUi Ui { get; }
|
||||||
private Commands Commands { get; }
|
private Commands Commands { get; }
|
||||||
|
|
||||||
internal SoundFilterPlugin(DalamudPluginInterface @interface) {
|
public SoundFilterPlugin() {
|
||||||
this.Interface = @interface;
|
|
||||||
|
|
||||||
this.Config = Migrator.LoadConfiguration(this);
|
this.Config = Migrator.LoadConfiguration(this);
|
||||||
this.Config.Initialise(this.Interface);
|
this.Config.Initialise(this.Interface);
|
||||||
|
|
||||||
|
@ -35,14 +51,14 @@ namespace SoundFilter {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var message = string.Format(Language.LoadWarning, Name);
|
var message = string.Format(Language.LoadWarning, this.Name);
|
||||||
this.Interface.Framework.Gui.Chat.PrintChat(new XivChatEntry {
|
this.ChatGui.PrintChat(new XivChatEntry {
|
||||||
Name = Name,
|
Name = this.Name,
|
||||||
MessageBytes = new SeString(new Payload[] {
|
Message = new SeString(
|
||||||
new UIForegroundPayload(this.Interface.Data, 502),
|
new UIForegroundPayload(502),
|
||||||
new TextPayload($"[{Name}] {message}"),
|
new TextPayload($"[{this.Name}] {message}"),
|
||||||
new UIForegroundPayload(this.Interface.Data, 0),
|
new UIForegroundPayload(0)
|
||||||
}).Encode(),
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using Dalamud.Plugin;
|
using Dalamud.Logging;
|
||||||
using SoundFilter.Resources;
|
using SoundFilter.Resources;
|
||||||
|
|
||||||
namespace SoundFilter.Ui {
|
namespace SoundFilter.Ui {
|
||||||
|
@ -17,18 +17,19 @@ namespace SoundFilter.Ui {
|
||||||
this.Settings = new Settings(this.Plugin);
|
this.Settings = new Settings(this.Plugin);
|
||||||
this.SoundLog = new SoundLog(this.Plugin);
|
this.SoundLog = new SoundLog(this.Plugin);
|
||||||
|
|
||||||
this.Plugin.Interface.UiBuilder.OnBuildUi += this.Draw;
|
this.Plugin.Interface.UiBuilder.Draw += this.Draw;
|
||||||
this.Plugin.Interface.OnLanguageChanged += this.ConfigureLanguage;
|
this.Plugin.Interface.LanguageChanged += this.ConfigureLanguage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
this.Plugin.Interface.OnLanguageChanged -= this.ConfigureLanguage;
|
this.Plugin.Interface.LanguageChanged -= this.ConfigureLanguage;
|
||||||
this.Plugin.Interface.UiBuilder.OnBuildUi -= this.Draw;
|
this.Plugin.Interface.UiBuilder.Draw -= this.Draw;
|
||||||
|
|
||||||
this.Settings.Dispose();
|
this.Settings.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConfigureLanguage(string? langCode = null) {
|
private void ConfigureLanguage(string? langCode = null) {
|
||||||
|
// ReSharper disable once ConstantNullCoalescingCondition
|
||||||
langCode ??= this.Plugin.Interface.UiLanguage ?? "en";
|
langCode ??= this.Plugin.Interface.UiLanguage ?? "en";
|
||||||
try {
|
try {
|
||||||
Language.Culture = new CultureInfo(langCode);
|
Language.Culture = new CultureInfo(langCode);
|
||||||
|
|
|
@ -17,14 +17,14 @@ namespace SoundFilter.Ui {
|
||||||
this.Plugin = plugin;
|
this.Plugin = plugin;
|
||||||
this.AddFilter = new AddFilter(plugin);
|
this.AddFilter = new AddFilter(plugin);
|
||||||
|
|
||||||
this.Plugin.Interface.UiBuilder.OnOpenConfigUi += this.Toggle;
|
this.Plugin.Interface.UiBuilder.OpenConfigUi += this.Toggle;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {
|
public void Dispose() {
|
||||||
this.Plugin.Interface.UiBuilder.OnOpenConfigUi -= this.Toggle;
|
this.Plugin.Interface.UiBuilder.OpenConfigUi -= this.Toggle;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Toggle(object? sender = null, object? args = null) {
|
internal void Toggle() {
|
||||||
this._showWindow = !this._showWindow;
|
this._showWindow = !this._showWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ namespace SoundFilter.Ui {
|
||||||
|
|
||||||
ImGui.SetNextWindowSize(new Vector2(500, 450), ImGuiCond.FirstUseEver);
|
ImGui.SetNextWindowSize(new Vector2(500, 450), ImGuiCond.FirstUseEver);
|
||||||
|
|
||||||
var windowTitle = string.Format(Language.SettingsWindowTitle, SoundFilterPlugin.Name);
|
var windowTitle = string.Format(Language.SettingsWindowTitle, this.Plugin.Name);
|
||||||
if (!ImGui.Begin($"{windowTitle}###soundfilter-settings", ref this._showWindow)) {
|
if (!ImGui.Begin($"{windowTitle}###soundfilter-settings", ref this._showWindow)) {
|
||||||
ImGui.End();
|
ImGui.End();
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Dalamud.Game;
|
using Dalamud.Game;
|
||||||
using Dalamud.Interface;
|
using Dalamud.Interface;
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
data-name="Layer 1"
|
||||||
|
viewBox="0 0 100 100"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
version="1.1"
|
||||||
|
id="svg10"
|
||||||
|
sodipodi:docname="icon.svg"
|
||||||
|
width="100"
|
||||||
|
height="100"
|
||||||
|
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||||
|
inkscape:export-filename="D:\code\SoundFilter\icon.png"
|
||||||
|
inkscape:export-xdpi="491.51999"
|
||||||
|
inkscape:export-ydpi="491.51999"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
|
<defs
|
||||||
|
id="defs14">
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="linearGradient930">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#850000;stop-opacity:1"
|
||||||
|
offset="0"
|
||||||
|
id="stop926" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#003aaf;stop-opacity:1"
|
||||||
|
offset="1"
|
||||||
|
id="stop928" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient930"
|
||||||
|
id="linearGradient932"
|
||||||
|
x1="27.391356"
|
||||||
|
y1="26.969402"
|
||||||
|
x2="72.349539"
|
||||||
|
y2="26.969402"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(1.0549846,0,0,1.0549846,-2.6125575,-4.2766045)" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview12"
|
||||||
|
pagecolor="#505050"
|
||||||
|
bordercolor="#ffffff"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:pageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="6.656"
|
||||||
|
inkscape:cx="49.954928"
|
||||||
|
inkscape:cy="51.307091"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1017"
|
||||||
|
inkscape:window-x="1592"
|
||||||
|
inkscape:window-y="32"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer2" />
|
||||||
|
<title
|
||||||
|
id="title2">Artboard 227</title>
|
||||||
|
<metadata
|
||||||
|
id="metadata831">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:title>Artboard 227</dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Sound"
|
||||||
|
style="display:inline">
|
||||||
|
<path
|
||||||
|
d="m 71.738792,18.246787 h -1.976304 a 5.9289141,5.9289141 0 0 0 -5.928914,5.928915 v 7.905218 a 1.9763047,1.9763047 0 0 1 -3.952609,0 V 8.3652634 a 5.928915,5.928915 0 0 0 -11.85783,0 V 39.986139 a 1.9763047,1.9763047 0 0 1 -3.952608,0 V 16.270482 a 5.9289141,5.9289141 0 0 0 -11.857827,0 v 7.90522 a 1.9763047,1.9763047 0 0 1 -1.976307,1.976304 h -1.976302 a 1.9763047,1.9763047 0 0 0 0,3.952608 h 1.976302 a 5.9289141,5.9289141 0 0 0 5.928915,-5.928912 v -7.90522 a 1.9763047,1.9763047 0 0 1 3.952609,0 v 23.715657 a 5.9289147,5.9289147 0 0 0 11.857829,0 V 8.3652634 a 1.976305,1.976305 0 0 1 3.95261,0 V 32.08092 a 5.9289141,5.9289141 0 0 0 11.857827,0 v -7.905218 a 1.9763047,1.9763047 0 0 1 1.976305,-1.976305 h 1.976304 a 1.976305,1.976305 0 0 0 0,-3.95261 z"
|
||||||
|
id="path4"
|
||||||
|
style="fill:url(#linearGradient932);fill-opacity:1;stroke-width:0.494075" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Filter">
|
||||||
|
<polygon
|
||||||
|
points="5.2,14.9 42.6,52.3 42.6,95 57.2,82.4 57.2,52.3 94.7,14.9 94.7,5 5.2,5 "
|
||||||
|
id="polygon2"
|
||||||
|
transform="matrix(0.74854882,0,0,0.74854882,12.609986,26.451514)"
|
||||||
|
style="fill:#858585;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
Loading…
Reference in New Issue