Do not crash when failing to load textures.

This commit is contained in:
Ottermandias 2023-12-20 16:46:33 +01:00
parent e37f16eb15
commit 5b648ea2a0

View file

@ -37,9 +37,9 @@ public sealed class TextureService : TextureCache, IDisposable
} }
} }
private static IDalamudTextureWrap[] CreateSlotIcons(UiBuilder uiBuilder) private static IDalamudTextureWrap?[] CreateSlotIcons(UiBuilder uiBuilder)
{ {
var ret = new IDalamudTextureWrap[12]; var ret = new IDalamudTextureWrap?[12];
using var uldWrapper = uiBuilder.LoadUld("ui/uld/ArmouryBoard.uld"); using var uldWrapper = uiBuilder.LoadUld("ui/uld/ArmouryBoard.uld");
@ -49,20 +49,33 @@ public sealed class TextureService : TextureCache, IDisposable
return ret; return ret;
} }
ret[0] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 1)!; SetIcon(EquipSlot.Head, 1);
ret[1] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 2)!; SetIcon(EquipSlot.Body, 2);
ret[2] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 3)!; SetIcon(EquipSlot.Hands, 3);
ret[3] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 5)!; SetIcon(EquipSlot.Legs, 5);
ret[4] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 6)!; SetIcon(EquipSlot.Feet, 6);
ret[5] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 8)!; SetIcon(EquipSlot.Ears, 8);
ret[6] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 9)!; SetIcon(EquipSlot.Neck, 9);
ret[7] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 10)!; SetIcon(EquipSlot.Wrists, 10);
ret[8] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 11)!; SetIcon(EquipSlot.RFinger, 11);
ret[9] = ret[8]; SetIcon(EquipSlot.MainHand, 0);
ret[10] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 0)!; SetIcon(EquipSlot.OffHand, 7);
ret[11] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 7)!; ret[EquipSlot.LFinger.ToIndex()] = ret[EquipSlot.RFinger.ToIndex()];
uldWrapper.Dispose();
return ret; return ret;
void SetIcon(EquipSlot slot, int index)
{
try
{
ret[slot.ToIndex()] = uldWrapper.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", index)!;
}
catch (Exception ex)
{
Glamourer.Log.Error($"Could not get empty slot texture for {slot.ToName()}, icon will be left empty. "
+ $"This may be because of incompatible mods affecting your character screen interface:\n{ex}");
ret[slot.ToIndex()] = null;
}
}
} }
} }