Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2822f730f5 |
+3
-3
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AssemblyName>HSUI</AssemblyName>
|
<AssemblyName>HSUI</AssemblyName>
|
||||||
<AssemblyVersion>1.0.8.19</AssemblyVersion>
|
<AssemblyVersion>1.0.8.20</AssemblyVersion>
|
||||||
<FileVersion>1.0.8.19</FileVersion>
|
<FileVersion>1.0.8.20</FileVersion>
|
||||||
<InformationalVersion>1.0.8.19</InformationalVersion>
|
<InformationalVersion>1.0.8.20</InformationalVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"Author": "Knack117",
|
"Author": "Knack117",
|
||||||
"Name": "HSUI",
|
"Name": "HSUI",
|
||||||
"InternalName": "HSUI",
|
"InternalName": "HSUI",
|
||||||
"AssemblyVersion": "1.0.8.19",
|
"AssemblyVersion": "1.0.8.20",
|
||||||
"Description": "HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.",
|
"Description": "HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.",
|
||||||
"ApplicableVersion": "any",
|
"ApplicableVersion": "any",
|
||||||
"RepoUrl": "https://github.com/Knack117/HSUI",
|
"RepoUrl": "https://github.com/Knack117/HSUI",
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using Dalamud.Game.ClientState.Conditions;
|
||||||
using HSUI.Config;
|
using HSUI.Config;
|
||||||
using HSUI.Interface.GeneralElements;
|
using HSUI.Interface.GeneralElements;
|
||||||
using FFXIVClientStructs.FFXIV.Client.UI;
|
using FFXIVClientStructs.FFXIV.Client.UI;
|
||||||
@@ -335,6 +336,56 @@ namespace HSUI.Helpers
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns true when the given area overlaps a game addon (e.g. dialogue box) and should not be drawn on top of it.
|
||||||
|
/// Used by hotbars when "Show HUD during dialogue" is on, to avoid cooldown overlays bleeding through dialogue.
|
||||||
|
/// Uses full clip rects when Window Clipping is enabled, otherwise a minimal dialogue-addon check.
|
||||||
|
/// </summary>
|
||||||
|
public bool SlotOverlapsGameAddon(Vector2 pos, Vector2 size)
|
||||||
|
{
|
||||||
|
// When Window Clipping is enabled, use full clip rects (all game addons)
|
||||||
|
ClipRect? clipRect = GetClipRectForArea(pos, size);
|
||||||
|
if (clipRect.HasValue) { return true; }
|
||||||
|
|
||||||
|
// When "Show HUD during dialogue" is on and we're in dialogue, check dialogue addons
|
||||||
|
// (works even when full Window Clipping is disabled)
|
||||||
|
var hudOptions = ConfigurationManager.Instance?.GetConfigObject<HUDOptionsConfig>();
|
||||||
|
if (hudOptions?.ShowHudDuringDialogue != true) { return false; }
|
||||||
|
if (!Plugin.Condition[ConditionFlag.OccupiedInQuestEvent] && !Plugin.Condition[ConditionFlag.OccupiedInEvent])
|
||||||
|
{ return false; }
|
||||||
|
|
||||||
|
return GetClipRectForDialogueAddon(pos, size).HasValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static readonly string[] _dialogueAddonNames = { "Talk", "SelectString", "SelectIconString", "Journal" };
|
||||||
|
|
||||||
|
private unsafe ClipRect? GetClipRectForDialogueAddon(Vector2 pos, Vector2 size)
|
||||||
|
{
|
||||||
|
ClipRect area = new ClipRect(pos, pos + size);
|
||||||
|
|
||||||
|
foreach (string addonName in _dialogueAddonNames)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var addon = (AtkUnitBase*)Plugin.GameGui.GetAddonByName(addonName, 1).Address;
|
||||||
|
if (addon == null || addon->RootNode == null || !addon->IsVisible) { continue; }
|
||||||
|
|
||||||
|
float margin = 5 * addon->Scale;
|
||||||
|
Vector2 addonPos = new Vector2(addon->X + addon->RootNode->X * addon->Scale + margin,
|
||||||
|
addon->Y + addon->RootNode->Y * addon->Scale + margin);
|
||||||
|
Vector2 addonSize = new Vector2(
|
||||||
|
addon->RootNode->Width * addon->Scale - margin * 2,
|
||||||
|
addon->RootNode->Height * addon->Scale - margin * 2);
|
||||||
|
ClipRect addonRect = new ClipRect(addonPos, addonPos + addonSize);
|
||||||
|
|
||||||
|
if (addonRect.IntersectsWith(area)) { return addonRect; }
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static ClipRect[] GetInvertedClipRects(ClipRect clipRect)
|
public static ClipRect[] GetInvertedClipRects(ClipRect clipRect)
|
||||||
{
|
{
|
||||||
float maxX = ImGui.GetMainViewport().Size.X;
|
float maxX = ImGui.GetMainViewport().Size.X;
|
||||||
|
|||||||
@@ -177,15 +177,20 @@ namespace HSUI.Interface.GeneralElements
|
|||||||
|
|
||||||
if (showCd && slot.CooldownPercent > 0 && _pendingSlotIconIndex != i)
|
if (showCd && slot.CooldownPercent > 0 && _pendingSlotIconIndex != i)
|
||||||
{
|
{
|
||||||
float total = 100f;
|
// Skip cooldown overlay when slot overlaps game UI (e.g. dialogue box)
|
||||||
float elapsed = total - slot.CooldownPercent;
|
// to avoid hotbar cooldowns showing through during "Show HUD during dialogue"
|
||||||
DrawHelper.DrawIconCooldown(pos, size, elapsed, total, drawList);
|
if (!ClipRectsHelper.Instance.SlotOverlapsGameAddon(pos, size))
|
||||||
if (showCdNumbers && slot.CooldownSecondsLeft > 0)
|
|
||||||
{
|
{
|
||||||
string cdText = slot.CooldownSecondsLeft.ToString();
|
float total = 100f;
|
||||||
Vector2 textSize = ImGui.CalcTextSize(cdText);
|
float elapsed = total - slot.CooldownPercent;
|
||||||
Vector2 textPos = pos + (size - textSize) * 0.5f;
|
DrawHelper.DrawIconCooldown(pos, size, elapsed, total, drawList);
|
||||||
DrawHelper.DrawOutlinedText(cdText, textPos, 0xFFFFFFFF, 0xFF000000, drawList, 1);
|
if (showCdNumbers && slot.CooldownSecondsLeft > 0)
|
||||||
|
{
|
||||||
|
string cdText = slot.CooldownSecondsLeft.ToString();
|
||||||
|
Vector2 textSize = ImGui.CalcTextSize(cdText);
|
||||||
|
Vector2 textPos = pos + (size - textSize) * 0.5f;
|
||||||
|
DrawHelper.DrawOutlinedText(cdText, textPos, 0xFFFFFFFF, 0xFF000000, drawList, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -317,15 +317,20 @@ namespace HSUI.Interface.GeneralElements
|
|||||||
|
|
||||||
if (showCd && slot.CooldownPercent > 0 && _pendingSlotIconIndex != i)
|
if (showCd && slot.CooldownPercent > 0 && _pendingSlotIconIndex != i)
|
||||||
{
|
{
|
||||||
float total = 100f;
|
// Skip cooldown overlay when slot overlaps game UI (e.g. dialogue box)
|
||||||
float elapsed = total - slot.CooldownPercent;
|
// to avoid hotbar cooldowns showing through during "Show HUD during dialogue"
|
||||||
DrawHelper.DrawIconCooldown(pos, size, elapsed, total, drawList);
|
if (!ClipRectsHelper.Instance.SlotOverlapsGameAddon(pos, size))
|
||||||
if (showCdNumbers && slot.CooldownSecondsLeft > 0)
|
|
||||||
{
|
{
|
||||||
string cdText = slot.CooldownSecondsLeft.ToString();
|
float total = 100f;
|
||||||
Vector2 textSize = ImGui.CalcTextSize(cdText);
|
float elapsed = total - slot.CooldownPercent;
|
||||||
Vector2 textPos = pos + (size - textSize) * 0.5f;
|
DrawHelper.DrawIconCooldown(pos, size, elapsed, total, drawList);
|
||||||
DrawHelper.DrawOutlinedText(cdText, textPos, 0xFFFFFFFF, 0xFF000000, drawList, 1);
|
if (showCdNumbers && slot.CooldownSecondsLeft > 0)
|
||||||
|
{
|
||||||
|
string cdText = slot.CooldownSecondsLeft.ToString();
|
||||||
|
Vector2 textSize = ImGui.CalcTextSize(cdText);
|
||||||
|
Vector2 textPos = pos + (size - textSize) * 0.5f;
|
||||||
|
DrawHelper.DrawOutlinedText(cdText, textPos, 0xFFFFFFFF, 0xFF000000, drawList, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# 1.0.8.20
|
||||||
|
- **Hotbars**: Fixed cooldown overlays showing through game UI (e.g. dialogue box) when "Show HUD during dialogue and interaction" is enabled. Hotbar cooldown timers and numbers are now skipped for slots that overlap dialogue, select, or journal addons.
|
||||||
|
|
||||||
# 1.0.8.19
|
# 1.0.8.19
|
||||||
- **Hotbars**: Visibility settings moved from Visibility → Hotbars to each Hotbar 1–10 menu. The Visibility → Hotbars tab has been removed.
|
- **Hotbars**: Visibility settings moved from Visibility → Hotbars to each Hotbar 1–10 menu. The Visibility → Hotbars tab has been removed.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
[{"Author":"Knack117","Name":"HSUI","Punchline":"A modern HUD replacement built for customization.","Description":"HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.","Changelog":"1.0.8.19: Hotbar visibility moved to per-hotbar menus; removed Visibility → Hotbars tab. 1.0.8.18: Visibility \"Hide unless hovered\" option. 1.0.8.17: Controller hotbars (cross layout, separate storage, sync with game). 1.0.8.16: Show HUD during dialogue and interaction. 1.0.8.15: Tooltips game-style formatting. 1.0.8.14: Mouse GCD Indicator. 1.0.8.13: Item tooltips now show. 1.0.8.12: Item/HQ icons now draw on hotbar. 1.0.8.11: Hotbar tooltip crash fix. 1.0.8.10: Hotbar crash fix when dragging inventory items. 1.0.8.9: Gearset persists on slot. 1.0.8.8: Gearset drag-drop fix. 1.0.8.7: Fixed Gearset icon clearing. 1.0.8.6: Crafting action tooltips full description. 1.0.8.4: Alliance Frames 1 and 2 fix; Hide in duty no longer hides alliance frames. 1.0.8.3: Fix left-click staying broken after disable. 1.0.8.2: Charge icons stay lit until all charges spent.","InternalName":"HSUI","AssemblyVersion":"1.0.8.19","RepoUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI","ApplicableVersion":"any","Tags":["UI","HUD","Unit Frames","Nameplates","Party Frames","Hotbars"],"CategoryTags":["UI"],"DalamudApiLevel":14,"IconUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/raw/branch/main/Media/Images/icon.png","ImageUrls":[],"DownloadLinkInstall":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.19/latest.zip","IsHide":false,"IsTestingExclusive":false,"DownloadLinkTesting":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.19/latest.zip","DownloadLinkUpdate":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.19/latest.zip","LastUpdate":"1772292053"}]
|
[{"Author":"Knack117","Name":"HSUI","Punchline":"A modern HUD replacement built for customization.","Description":"HSUI provides a highly configurable HUD replacement for FFXIV, recreated from DelvUI using KamiToolKit, FFXIVClientStructs, and Dalamud. Features unit frames, castbars, job gauges, nameplates, party frames, status effects, enemy list, configurable hotbars with drag-and-drop, and profiles.","Changelog":"1.0.8.20: Fixed cooldown overlays showing through game UI (dialogue box) when Show HUD during dialogue enabled. 1.0.8.19: Hotbar visibility moved to per-hotbar menus; removed Visibility Hotbars tab. 1.0.8.18: Visibility \"Hide unless hovered\" option. 1.0.8.17: Controller hotbars (cross layout, separate storage, sync with game). 1.0.8.16: Show HUD during dialogue and interaction. 1.0.8.15: Tooltips game-style formatting. 1.0.8.14: Mouse GCD Indicator. 1.0.8.13: Item tooltips now show. 1.0.8.12: Item/HQ icons now draw on hotbar. 1.0.8.11: Hotbar tooltip crash fix. 1.0.8.10: Hotbar crash fix when dragging inventory items. 1.0.8.9: Gearset persists on slot. 1.0.8.8: Gearset drag-drop fix. 1.0.8.7: Fixed Gearset icon clearing. 1.0.8.6: Crafting action tooltips full description. 1.0.8.4: Alliance Frames 1 and 2 fix; Hide in duty no longer hides alliance frames. 1.0.8.3: Fix left-click staying broken after disable. 1.0.8.2: Charge icons stay lit until all charges spent.","InternalName":"HSUI","AssemblyVersion":"1.0.8.20","RepoUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI","ApplicableVersion":"any","Tags":["UI","HUD","Unit Frames","Nameplates","Party Frames","Hotbars"],"CategoryTags":["UI"],"DalamudApiLevel":14,"IconUrl":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/raw/branch/main/Media/Images/icon.png","ImageUrls":[],"DownloadLinkInstall":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.20/latest.zip","IsHide":false,"IsTestingExclusive":false,"DownloadLinkTesting":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.20/latest.zip","DownloadLinkUpdate":"http://brassnet.ddns.net:33983/KnackAtNite/HSUI/releases/download/v1.0.8.20/latest.zip","LastUpdate":"1772378453"}]
|
||||||
|
|||||||
Reference in New Issue
Block a user