More cleanup
This commit is contained in:
+24
-28
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user