From a5f35dbd17a80de4f11f139a2851184a13ad0cb1 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Tue, 16 Jul 2024 23:30:02 +0200 Subject: [PATCH] Revert legacy tattoo changes. --- .../Customization/CustomizationDrawer.Icon.cs | 29 ++++++++++++------- .../Gui/Customization/CustomizationDrawer.cs | 29 ++++++++++++++----- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/Glamourer/Gui/Customization/CustomizationDrawer.Icon.cs b/Glamourer/Gui/Customization/CustomizationDrawer.Icon.cs index 8631481..baedc05 100644 --- a/Glamourer/Gui/Customization/CustomizationDrawer.Icon.cs +++ b/Glamourer/Gui/Customization/CustomizationDrawer.Icon.cs @@ -1,4 +1,5 @@ -using Glamourer.GameData; +using Dalamud.Interface.Textures.TextureWraps; +using Glamourer.GameData; using Glamourer.Unlocks; using ImGuiNET; using OtterGui; @@ -197,16 +198,24 @@ public partial class CustomizationDrawer var face = _set.DataByValue(CustomizeIndex.Face, _customize.Face, out _, _customize.Face) < 0 ? _set.Faces[0].Value : _customize.Face; foreach (var (featureIdx, idx) in options.WithIndex()) { - using var id = SetId(featureIdx); - var enabled = _customize.Get(featureIdx) != CustomizeValue.Zero; - var feature = _set.Data(featureIdx, 0, face); - var icon = featureIdx == CustomizeIndex.LegacyTattoo - ? _legacyTattoo ?? _service.Manager.GetIcon(feature.IconId) - : _service.Manager.GetIcon(feature.IconId); - var hasIcon = icon.TryGetWrap(out var wrap, out _); + using var id = SetId(featureIdx); + var enabled = _customize.Get(featureIdx) != CustomizeValue.Zero; + var feature = _set.Data(featureIdx, 0, face); + bool hasIcon; + IDalamudTextureWrap? wrap; + var icon = _service.Manager.GetIcon(feature.IconId); + if (featureIdx is CustomizeIndex.LegacyTattoo) + { + wrap = _legacyTattoo; + hasIcon = wrap != null; + } + else + { + hasIcon = icon.TryGetWrap(out wrap, out _); + } + if (ImGui.ImageButton(wrap?.ImGuiHandle ?? icon.GetWrapOrEmpty().ImGuiHandle, _iconSize, Vector2.Zero, Vector2.One, - (int)ImGui.GetStyle().FramePadding.X, - Vector4.Zero, enabled ? Vector4.One : _redTint)) + (int)ImGui.GetStyle().FramePadding.X, Vector4.Zero, enabled ? Vector4.One : _redTint)) { _customize.Set(featureIdx, enabled ? CustomizeValue.Zero : CustomizeValue.Max); Changed |= _currentFlag; diff --git a/Glamourer/Gui/Customization/CustomizationDrawer.cs b/Glamourer/Gui/Customization/CustomizationDrawer.cs index 384307c..a7fcda7 100644 --- a/Glamourer/Gui/Customization/CustomizationDrawer.cs +++ b/Glamourer/Gui/Customization/CustomizationDrawer.cs @@ -1,14 +1,13 @@ -using Dalamud.Interface.Internal; -using Dalamud.Interface.Textures; +using Dalamud.Interface.Textures; using Dalamud.Interface.Textures.TextureWraps; using Dalamud.Interface.Utility; using Dalamud.Plugin; +using Dalamud.Plugin.Services; using Glamourer.GameData; using Glamourer.Services; using Glamourer.Unlocks; using ImGuiNET; using OtterGui; -using OtterGui.Classes; using OtterGui.Raii; using Penumbra.GameData.Enums; using Penumbra.GameData.Structs; @@ -16,15 +15,16 @@ using Penumbra.GameData.Structs; namespace Glamourer.Gui.Customization; public partial class CustomizationDrawer( - TextureCache textureCache, + ITextureProvider textures, CustomizeService _service, CodeService _codes, Configuration _config, FavoriteManager _favorites, HeightService _heightService) + : IDisposable { - private readonly Vector4 _redTint = new(0.6f, 0.3f, 0.3f, 1f); - private readonly ISharedImmediateTexture? _legacyTattoo = GetLegacyTattooIcon(textureCache); + private readonly Vector4 _redTint = new(0.6f, 0.3f, 0.3f, 1f); + private readonly IDalamudTextureWrap? _legacyTattoo = GetLegacyTattooIcon(textures); private Exception? _terminate; @@ -49,6 +49,9 @@ public partial class CustomizationDrawer( private float _raceSelectorWidth; private bool _withApply; + public void Dispose() + => _legacyTattoo?.Dispose(); + public bool Draw(CustomizeArray current, bool locked, bool lockedRedraw) { _withApply = false; @@ -189,6 +192,16 @@ public partial class CustomizationDrawer( _raceSelectorWidth = _inputIntSize + _comboSelectorSize - _framedIconSize.X; } - private static ISharedImmediateTexture? GetLegacyTattooIcon(TextureCache icons) - => icons.TextureProvider.GetFromManifestResource(Assembly.GetExecutingAssembly(), "Glamourer.LegacyTattoo.raw"); + private static IDalamudTextureWrap? GetLegacyTattooIcon(ITextureProvider textures) + { + using var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("Glamourer.LegacyTattoo.raw"); + if (resource == null) + return null; + + var rawImage = new byte[resource.Length]; + var length = resource.Read(rawImage, 0, (int)resource.Length); + return length == resource.Length + ? textures.CreateFromRaw(RawImageSpecification.Rgba32(192, 192), rawImage, "Glamourer.LegacyTattoo") + : null; + } }