diff --git a/Dalamud/Dalamud.csproj b/Dalamud/Dalamud.csproj index 9cf3129d0..ac205b02b 100644 --- a/Dalamud/Dalamud.csproj +++ b/Dalamud/Dalamud.csproj @@ -4,7 +4,7 @@ net7.0-windows x64 x64;AnyCPU - 10.0 + 11.0 diff --git a/Dalamud/Interface/Internal/Windows/DataWindow.cs b/Dalamud/Interface/Internal/Windows/DataWindow.cs index 7e756b057..1b594e34d 100644 --- a/Dalamud/Interface/Internal/Windows/DataWindow.cs +++ b/Dalamud/Interface/Internal/Windows/DataWindow.cs @@ -44,6 +44,7 @@ using Lumina.Excel.GeneratedSheets; using Newtonsoft.Json; using PInvoke; using Serilog; + using Condition = Dalamud.Game.ClientState.Conditions.Condition; namespace Dalamud.Interface.Internal.Windows; @@ -1728,11 +1729,11 @@ internal class DataWindow : Window foreach (var color in colorSheet) { - this.DrawUIColor(color); + this.DrawUiColor(color); } } - private void DrawUIColor(UIColor color) + private void DrawUiColor(UIColor color) { ImGui.Text($"[{color.RowId:D3}] "); ImGui.SameLine(); @@ -1750,7 +1751,7 @@ internal class DataWindow : Window var r = (byte)(color >> 24); var g = (byte)(color >> 16); var b = (byte)(color >> 8); - var a = (byte)(color); + var a = (byte)color; return new Vector4(r / 255.0f, g / 255.0f, b / 255.0f, a / 255.0f); } diff --git a/Dalamud/IoC/Internal/InherentDependencyAttribute.cs b/Dalamud/IoC/Internal/InherentDependencyAttribute.cs new file mode 100644 index 000000000..f88adf366 --- /dev/null +++ b/Dalamud/IoC/Internal/InherentDependencyAttribute.cs @@ -0,0 +1,20 @@ +using System; + +namespace Dalamud.IoC.Internal; + +/// +/// Mark a class as being dependent on a service, without actually injecting it. +/// +/// The service to be dependent upon. +[AttributeUsage(AttributeTargets.Class)] +internal class InherentDependencyAttribute : InherentDependencyAttribute where T : IServiceType +{ +} + +/// +/// Helper class used for matching. Use the generic version. +/// +[AttributeUsage(AttributeTargets.Class)] +internal class InherentDependencyAttribute : Attribute +{ +} diff --git a/Dalamud/Plugin/Internal/PluginManager.cs b/Dalamud/Plugin/Internal/PluginManager.cs index 3dd5de1a9..26ba996e1 100644 --- a/Dalamud/Plugin/Internal/PluginManager.cs +++ b/Dalamud/Plugin/Internal/PluginManager.cs @@ -20,6 +20,7 @@ using Dalamud.Game.Text; using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Interface.Internal; +using Dalamud.IoC.Internal; using Dalamud.Logging.Internal; using Dalamud.Plugin.Internal.Exceptions; using Dalamud.Plugin.Internal.Types; @@ -33,6 +34,9 @@ namespace Dalamud.Plugin.Internal; /// Class responsible for loading and unloading plugins. /// [ServiceManager.EarlyLoadedService] +#pragma warning disable SA1015 +[InherentDependency] +#pragma warning restore SA1015 internal partial class PluginManager : IDisposable, IServiceType { /// diff --git a/Dalamud/Service{T}.cs b/Dalamud/Service{T}.cs index 5b8085ac8..8f805b5af 100644 --- a/Dalamud/Service{T}.cs +++ b/Dalamud/Service{T}.cs @@ -128,6 +128,11 @@ internal static class Service where T : IServiceType .GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) .Select(x => x.FieldType) .Where(x => x.GetCustomAttribute(true) != null)); + res.AddRange(typeof(T) + .GetCustomAttributes() + .OfType() + .Select(x => x.GetType().GetGenericArguments().First())); + return res .Distinct() .Select(x => typeof(Service<>).MakeGenericType(x))