More cleanup

This commit is contained in:
Infi
2024-05-02 15:02:42 +02:00
parent 477290ce7e
commit 5b30e54f65
7 changed files with 108 additions and 150 deletions
+24 -28
View File
@@ -4,68 +4,64 @@ using Lumina.Excel.GeneratedSheets;
namespace ChatTwo;
internal class TextureCache : IDisposable {
private ITextureProvider TextureProvider { get; }
internal class TextureCache : IDisposable
{
private readonly Dictionary<(uint, bool), IDalamudTextureWrap> _itemIcons = new();
private readonly Dictionary<(uint, bool), IDalamudTextureWrap> _statusIcons = new();
private readonly Dictionary<(uint, bool), IDalamudTextureWrap> _eventItemIcons = new();
internal IReadOnlyDictionary<(uint, bool), IDalamudTextureWrap> ItemIcons => _itemIcons;
internal IReadOnlyDictionary<(uint, bool), IDalamudTextureWrap> StatusIcons => _statusIcons;
internal IReadOnlyDictionary<(uint, bool), IDalamudTextureWrap> EventItemIcons => _eventItemIcons;
private IReadOnlyDictionary<(uint, bool), IDalamudTextureWrap> ItemIcons => _itemIcons;
private IReadOnlyDictionary<(uint, bool), IDalamudTextureWrap> StatusIcons => _statusIcons;
private IReadOnlyDictionary<(uint, bool), IDalamudTextureWrap> EventItemIcons => _eventItemIcons;
internal TextureCache(ITextureProvider textureProvider) {
TextureProvider = textureProvider;
}
public void Dispose() {
var allIcons = ItemIcons.Values
.Concat(StatusIcons.Values);
foreach (var tex in allIcons) {
public void Dispose()
{
foreach (var tex in ItemIcons.Values.Concat(StatusIcons.Values))
tex.Dispose();
}
}
private void AddIcon(IDictionary<(uint, bool), IDalamudTextureWrap> dict, uint icon, bool hq = false) {
if (dict.ContainsKey((icon, hq))) {
if (dict.ContainsKey((icon, hq)))
return;
}
var tex = hq
? TextureProvider.GetIcon(icon, ITextureProvider.IconFlags.ItemHighQuality)
: TextureProvider.GetIcon(icon);
if (tex != null) {
? Plugin.TextureProvider.GetIcon(icon, ITextureProvider.IconFlags.ItemHighQuality)
: Plugin.TextureProvider.GetIcon(icon);
if (tex != null)
dict[(icon, hq)] = tex;
}
}
internal void AddItem(Item item, bool hq) {
private void AddItem(Item item, bool hq)
{
AddIcon(_itemIcons, item.Icon, hq);
}
internal void AddStatus(Status status) {
private void AddStatus(Status status)
{
AddIcon(_statusIcons, status.Icon);
}
internal void AddEventItem(EventItem item) {
private void AddEventItem(EventItem item)
{
AddIcon(_eventItemIcons, item.Icon);
}
internal IDalamudTextureWrap? GetItem(Item item, bool hq = false) {
internal IDalamudTextureWrap? GetItem(Item item, bool hq = false)
{
AddItem(item, hq);
ItemIcons.TryGetValue((item.Icon, hq), out var icon);
return icon;
}
internal IDalamudTextureWrap? GetStatus(Status status) {
internal IDalamudTextureWrap? GetStatus(Status status)
{
AddStatus(status);
StatusIcons.TryGetValue((status.Icon, false), out var icon);
return icon;
}
internal IDalamudTextureWrap? GetEventItem(EventItem item) {
internal IDalamudTextureWrap? GetEventItem(EventItem item)
{
AddEventItem(item);
EventItemIcons.TryGetValue((item.Icon, false), out var icon);
return icon;