diff --git a/Dalamud/Data/DataManager.cs b/Dalamud/Data/DataManager.cs index ebdf24c57..006dfcd27 100644 --- a/Dalamud/Data/DataManager.cs +++ b/Dalamud/Data/DataManager.cs @@ -5,9 +5,8 @@ using System.Diagnostics; using System.IO; using System.Threading; -using Dalamud.Data.LuminaExtensions; -using Dalamud.Interface; using Dalamud.Interface.Internal; +using Dalamud.Utility; using ImGuiScene; using JetBrains.Annotations; using Lumina; diff --git a/Dalamud/Hooking/Internal/HookInfo.cs b/Dalamud/Hooking/Internal/HookInfo.cs index c2850b806..73db6864b 100644 --- a/Dalamud/Hooking/Internal/HookInfo.cs +++ b/Dalamud/Hooking/Internal/HookInfo.cs @@ -67,7 +67,7 @@ namespace Dalamud.Hooking.Internal internal Delegate Delegate { get; } /// - /// Gets the hooked assembly. + /// Gets the assembly implementing the hook. /// internal Assembly Assembly { get; } } diff --git a/Dalamud/Interface/Internal/DalamudInterface.cs b/Dalamud/Interface/Internal/DalamudInterface.cs index 630f01296..3afcbe331 100644 --- a/Dalamud/Interface/Internal/DalamudInterface.cs +++ b/Dalamud/Interface/Internal/DalamudInterface.cs @@ -9,6 +9,7 @@ using Dalamud.Interface.Windowing; using Dalamud.Logging; using Dalamud.Logging.Internal; using Dalamud.Plugin.Internal; +using Dalamud.Utility; using ImGuiNET; using Serilog.Events; diff --git a/Dalamud/Interface/Internal/InterfaceManager.cs b/Dalamud/Interface/Internal/InterfaceManager.cs index 92ed70a67..c4338cbfb 100644 --- a/Dalamud/Interface/Internal/InterfaceManager.cs +++ b/Dalamud/Interface/Internal/InterfaceManager.cs @@ -11,6 +11,7 @@ using Dalamud.Game.ClientState; using Dalamud.Game.Internal.DXGI; using Dalamud.Hooking; using Dalamud.Hooking.Internal; +using Dalamud.Utility; using ImGuiNET; using ImGuiScene; using Serilog; @@ -322,9 +323,7 @@ namespace Dalamud.Interface.Internal private static void ShowFontError(string path) { - Util.Fatal( - $"One or more files required by XIVLauncher were not found.\nPlease restart and report this error if it occurs again.\n\n{path}", - "Error"); + Util.Fatal($"One or more files required by XIVLauncher were not found.\nPlease restart and report this error if it occurs again.\n\n{path}", "Error"); } private IntPtr PresentDetour(IntPtr swapChain, uint syncInterval, uint presentFlags) diff --git a/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs b/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs index 4fdbd64f5..e39741072 100644 --- a/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs +++ b/Dalamud/Interface/Internal/Scratchpad/ScratchMacroProcessor.cs @@ -131,7 +131,7 @@ public class ScratchPlugin : IDalamudPlugin { case ParseContext.Dispose: break; default: - throw new ArgumentOutOfRangeException(); + throw new ArgumentOutOfRangeException(paramName: nameof(input)); } ctx = ParseContext.None; @@ -156,7 +156,7 @@ public class ScratchPlugin : IDalamudPlugin { disposeBody += line + "\n"; break; default: - throw new ArgumentOutOfRangeException(); + throw new ArgumentOutOfRangeException(paramName: nameof(input)); } } diff --git a/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs b/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs index 69c2ade06..0420fe591 100644 --- a/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs +++ b/Dalamud/Interface/Internal/Windows/ChangelogWindow.cs @@ -1,6 +1,7 @@ using System.Diagnostics; using Dalamud.Interface.Windowing; +using Dalamud.Utility; using ImGuiNET; namespace Dalamud.Interface.Internal.Windows diff --git a/Dalamud/Interface/Internal/Windows/DataWindow.cs b/Dalamud/Interface/Internal/Windows/DataWindow.cs index aaa20951a..f024af818 100644 --- a/Dalamud/Interface/Internal/Windows/DataWindow.cs +++ b/Dalamud/Interface/Internal/Windows/DataWindow.cs @@ -14,6 +14,7 @@ using Dalamud.Game.Internal.Gui.Toast; using Dalamud.Game.Text; using Dalamud.Interface.Windowing; using Dalamud.Plugin; +using Dalamud.Utility; using ImGuiNET; using ImGuiScene; using Newtonsoft.Json; diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs index cc3a9c247..0cd7007a4 100644 --- a/Dalamud/Plugin/DalamudPluginInterface.cs +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -117,7 +117,7 @@ namespace Dalamud.Plugin public Framework Framework { get; private set; } /// - /// Gets the UiBuilder instance which allows you to draw UI into the game via ImGui draw calls. + /// Gets the instance which allows you to draw UI into the game via ImGui draw calls. /// public UiBuilder UiBuilder { get; private set; } @@ -165,6 +165,8 @@ namespace Dalamud.Plugin /// internal Action AnyPluginIpcAction { get; private set; } + #region Configuration + /// /// Save a plugin configuration(inheriting IPluginConfiguration). /// @@ -216,6 +218,8 @@ namespace Dalamud.Plugin /// directory with path of AppData/XIVLauncher/pluginConfig/PluginInternalName/loc. public string GetPluginLocDirectory() => this.configs.GetDirectory(Path.Combine(this.pluginName, "loc")); + #endregion + #region Chat Links /// diff --git a/Dalamud/Troubleshooting.cs b/Dalamud/Troubleshooting.cs index 69b0df23e..dbc507687 100644 --- a/Dalamud/Troubleshooting.cs +++ b/Dalamud/Troubleshooting.cs @@ -6,6 +6,7 @@ using System.Text; using Dalamud.Configuration; using Dalamud.Plugin; using Dalamud.Plugin.Internal.Types; +using Dalamud.Utility; using Newtonsoft.Json; using Serilog; diff --git a/Dalamud/Utility/EnumExtensions.cs b/Dalamud/Utility/EnumExtensions.cs new file mode 100644 index 000000000..5a2d9172b --- /dev/null +++ b/Dalamud/Utility/EnumExtensions.cs @@ -0,0 +1,28 @@ +using System; +using System.Linq; + +namespace Dalamud.Utility +{ + /// + /// Extension methods for enums. + /// + public static class EnumExtensions + { + /// + /// Gets an attribute on an enum. + /// + /// The type of attribute to get. + /// The enum value that has an attached attribute. + /// The attached attribute, if any. + public static TAttribute GetAttribute(this Enum value) + where TAttribute : Attribute + { + var type = value.GetType(); + var name = Enum.GetName(type, value); + return type.GetField(name) // I prefer to get attributes this way + .GetCustomAttributes(false) + .OfType() + .SingleOrDefault(); + } + } +} diff --git a/Dalamud/Utility/StringExtensions.cs b/Dalamud/Utility/StringExtensions.cs new file mode 100644 index 000000000..d5c1dfc14 --- /dev/null +++ b/Dalamud/Utility/StringExtensions.cs @@ -0,0 +1,16 @@ +namespace Dalamud.Utility +{ + /// + /// Extension methods for strings. + /// + public static class StringExtensions + { + /// + /// An extension method to chain usage of string.Format. + /// + /// Format string. + /// Format arguments. + /// Formatted string. + public static string Format(this string format, params object[] args) => string.Format(format, args); + } +} diff --git a/Dalamud/Data/LuminaExtensions/TexFileExtensions.cs b/Dalamud/Utility/TexFileExtensions.cs similarity index 95% rename from Dalamud/Data/LuminaExtensions/TexFileExtensions.cs rename to Dalamud/Utility/TexFileExtensions.cs index d2bb7b736..ddfccba9c 100644 --- a/Dalamud/Data/LuminaExtensions/TexFileExtensions.cs +++ b/Dalamud/Utility/TexFileExtensions.cs @@ -1,7 +1,7 @@ using ImGuiScene; using Lumina.Data.Files; -namespace Dalamud.Data.LuminaExtensions +namespace Dalamud.Utility { /// /// Extensions to . diff --git a/Dalamud/Util.cs b/Dalamud/Utility/Util.cs similarity index 94% rename from Dalamud/Util.cs rename to Dalamud/Utility/Util.cs index 3084e1bab..edd2d8c97 100644 --- a/Dalamud/Util.cs +++ b/Dalamud/Utility/Util.cs @@ -7,10 +7,11 @@ using System.Text; using Dalamud.Game; using Dalamud.Interface; using Dalamud.Interface.Colors; +using Dalamud.Logging.Internal; using ImGuiNET; using Serilog; -namespace Dalamud +namespace Dalamud.Utility { /// /// Class providing various helper methods for use in Dalamud and plugins. @@ -196,13 +197,5 @@ namespace Dalamud // TODO: Someone implement GetUTF8String with some IntPtr overloads. // while(Marshal.ReadByte(0, sz) != 0) { sz++; } - - /// - /// An extension method to chain usage of string.Format. - /// - /// Format string. - /// Format arguments. - /// Formatted string. - public static string Format(this string format, params object[] args) => string.Format(format, args); } } diff --git a/Dalamud/Utility/VectorExtensions.cs b/Dalamud/Utility/VectorExtensions.cs new file mode 100644 index 000000000..0a14299c2 --- /dev/null +++ b/Dalamud/Utility/VectorExtensions.cs @@ -0,0 +1,52 @@ +using System.Numerics; + +namespace Dalamud.Utility +{ + /// + /// Extension methods for System.Numerics.VectorN and SharpDX.VectorN. + /// + public static class VectorExtensions + { + /// + /// Converts a SharpDX vector to System.Numerics. + /// + /// Vector to convert. + /// A converted vector. + public static Vector2 ToSystem(this SharpDX.Vector2 vec) => new(x: vec.X, y: vec.Y); + + /// + /// Converts a SharpDX vector to System.Numerics. + /// + /// Vector to convert. + /// A converted vector. + public static Vector3 ToSystem(this SharpDX.Vector3 vec) => new(x: vec.X, y: vec.Y, z: vec.Z); + + /// + /// Converts a SharpDX vector to System.Numerics. + /// + /// Vector to convert. + /// A converted vector. + public static Vector4 ToSystem(this SharpDX.Vector4 vec) => new(x: vec.X, y: vec.Y, z: vec.Z, w: vec.W); + + /// + /// Converts a System.Numerics vector to SharpDX. + /// + /// Vector to convert. + /// A converted vector. + public static SharpDX.Vector2 ToSharpDX(this Vector2 vec) => new(x: vec.X, y: vec.Y); + + /// + /// Converts a System.Numerics vector to SharpDX. + /// + /// Vector to convert. + /// A converted vector. + public static SharpDX.Vector3 ToSharpDX(this Vector3 vec) => new(x: vec.X, y: vec.Y, z: vec.Z); + + /// + /// Converts a System.Numerics vector to SharpDX. + /// + /// Vector to convert. + /// A converted vector. + public static SharpDX.Vector4 ToSharpDX(this Vector4 vec) => new(x: vec.X, y: vec.Y, z: vec.Z, w: vec.W); + } +}