UldWidget fixes (#2557)

* Fix missing directory separator in theme path

* Hide themed texture exception when file not found

* Check ThemeSupportBitmask
This commit is contained in:
Haselnussbomber 2026-01-03 20:46:48 +01:00 committed by GitHub
parent 5a0257e40e
commit 9538af0554
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -47,6 +47,7 @@ internal class UldWidget : IDataWindowWidget
("48 8D 15 ?? ?? ?? ?? 45 33 C0 E9 ?? ?? ?? ??", 3)
];
private DataManager dataManager;
private CancellationTokenSource? cts;
private Task<string[]>? uldNamesTask;
@ -69,6 +70,8 @@ internal class UldWidget : IDataWindowWidget
/// <inheritdoc/>
public void Load()
{
this.dataManager ??= Service<DataManager>.Get();
this.cts?.Cancel();
ClearTask(ref this.uldNamesTask);
this.uldNamesTask = null;
@ -264,7 +267,7 @@ internal class UldWidget : IDataWindowWidget
}
private string ToThemedPath(string path) =>
UldBaseBath + (this.selectedTheme > 0 ? $"img{this.selectedTheme:D2}" : string.Empty) + path[UldBaseBath.Length..];
UldBaseBath + (this.selectedTheme > 0 ? $"img{this.selectedTheme:D2}/" : string.Empty) + path[UldBaseBath.Length..];
private void DrawTextureEntry(UldRoot.TextureEntry textureEntry, TextureManager textureManager)
{
@ -292,14 +295,17 @@ internal class UldWidget : IDataWindowWidget
else if (e is not null)
ImGui.Text(e.ToString());
if (this.selectedTheme != 0)
if (this.selectedTheme != 0 && (textureEntry.ThemeSupportBitmask & (1 << (this.selectedTheme - 1))) != 0)
{
var texturePathThemed = this.ToThemedPath(texturePath);
ImGui.Text($"Themed path at {texturePathThemed}:");
if (textureManager.Shared.GetFromGame(texturePathThemed).TryGetWrap(out wrap, out e))
ImGui.Image(wrap.Handle, wrap.Size);
else if (e is not null)
ImGui.Text(e.ToString());
if (this.dataManager.FileExists(texturePathThemed))
{
ImGui.Text($"Themed path at {texturePathThemed}:");
if (textureManager.Shared.GetFromGame(texturePathThemed).TryGetWrap(out wrap, out e))
ImGui.Image(wrap.Handle, wrap.Size);
else if (e is not null)
ImGui.Text(e.ToString());
}
}
ImGui.EndTooltip();