diff --git a/ChatTwo/PayloadHandler.cs b/ChatTwo/PayloadHandler.cs index 9dc9b7b..374a7eb 100755 --- a/ChatTwo/PayloadHandler.cs +++ b/ChatTwo/PayloadHandler.cs @@ -149,7 +149,7 @@ internal sealed class PayloadHandler { } private void HoverItem(ItemPayload item) { - if (this.Ui.Plugin.TextureCache.GetItem(item.Item) is { } icon) { + if (this.Ui.Plugin.TextureCache.GetItem(item.Item, item.IsHQ) is { } icon) { InlineIcon(icon); } @@ -216,7 +216,7 @@ internal sealed class PayloadHandler { } private void DrawItemPopup(ItemPayload item) { - if (this.Ui.Plugin.TextureCache.GetItem(item.Item) is { } icon) { + if (this.Ui.Plugin.TextureCache.GetItem(item.Item, item.IsHQ) is { } icon) { InlineIcon(icon); } diff --git a/ChatTwo/TextureCache.cs b/ChatTwo/TextureCache.cs index f57d5bf..1c9faf1 100755 --- a/ChatTwo/TextureCache.cs +++ b/ChatTwo/TextureCache.cs @@ -7,11 +7,11 @@ namespace ChatTwo; internal class TextureCache : IDisposable { private DataManager Data { get; } - private readonly Dictionary _itemIcons = new(); - private readonly Dictionary _statusIcons = new(); + private readonly Dictionary<(uint, bool), TextureWrap> _itemIcons = new(); + private readonly Dictionary<(uint, bool), TextureWrap> _statusIcons = new(); - internal IReadOnlyDictionary ItemIcons => this._itemIcons; - internal IReadOnlyDictionary StatusIcons => this._statusIcons; + internal IReadOnlyDictionary<(uint, bool), TextureWrap> ItemIcons => this._itemIcons; + internal IReadOnlyDictionary<(uint, bool), TextureWrap> StatusIcons => this._statusIcons; internal TextureCache(DataManager data) { this.Data = data; @@ -26,34 +26,36 @@ internal class TextureCache : IDisposable { } } - private void AddIcon(IDictionary dict, uint icon) { - if (dict.ContainsKey(icon)) { + private void AddIcon(IDictionary<(uint, bool), TextureWrap> dict, uint icon, bool hq = false) { + if (dict.ContainsKey((icon, hq))) { return; } - var tex = this.Data.GetImGuiTextureIcon(icon); + var tex = hq + ? this.Data.GetImGuiTextureHqIcon(icon) + : this.Data.GetImGuiTextureIcon(icon); if (tex != null) { - dict[icon] = tex; + dict[(icon, hq)] = tex; } } - internal void AddItem(Item item) { - this.AddIcon(this._itemIcons, item.Icon); + internal void AddItem(Item item, bool hq) { + this.AddIcon(this._itemIcons, item.Icon, hq); } internal void AddStatus(Status status) { this.AddIcon(this._statusIcons, status.Icon); } - internal TextureWrap? GetItem(Item item) { - this.AddItem(item); - this.ItemIcons.TryGetValue(item.Icon, out var icon); + internal TextureWrap? GetItem(Item item, bool hq = false) { + this.AddItem(item, hq); + this.ItemIcons.TryGetValue((item.Icon, hq), out var icon); return icon; } internal TextureWrap? GetStatus(Status status) { this.AddStatus(status); - this.StatusIcons.TryGetValue(status.Icon, out var icon); + this.StatusIcons.TryGetValue((status.Icon, false), out var icon); return icon; } }