v1.0.2.4: HUD Layout - use proper AddonConfig with ElementKind hashes from HUDManager
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+24
-27
@@ -2,6 +2,7 @@ using Dalamud.Game.Addon.Lifecycle;
|
||||
using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Game.ClientState.Objects.SubKinds;
|
||||
using HSUI.Config;
|
||||
using HSUI.Enums;
|
||||
using HSUI.Helpers;
|
||||
using HSUI.Interface.EnemyList;
|
||||
using HSUI.Interface.GeneralElements;
|
||||
@@ -194,70 +195,66 @@ namespace HSUI.Interface
|
||||
}
|
||||
|
||||
var hashesToHide = new List<uint>();
|
||||
void AddHashes(params string[] addonNames)
|
||||
void AddElements(params ElementKind[] elements)
|
||||
{
|
||||
foreach (var name in addonNames)
|
||||
{
|
||||
var h = HudLayoutHashHelper.GetHash(name);
|
||||
if (h != 0)
|
||||
hashesToHide.Add(h);
|
||||
}
|
||||
foreach (var e in elements)
|
||||
hashesToHide.Add((uint)e);
|
||||
}
|
||||
|
||||
// Use ElementKind hashes (HUD Layout config) — the proper way per DelvUI. Source: HUDManager ElementKind.cs
|
||||
var hotbarsConfig = ConfigurationManager.Instance?.GetConfigObject<HotbarsConfig>();
|
||||
if (hotbarsConfig?.Enabled == true)
|
||||
if (hotbarsConfig?.Enabled == true && AnyHotbarEnabled())
|
||||
{
|
||||
AddHashes("_ActionBar", "_ActionBar01", "_ActionBar02", "_ActionBar03", "_ActionBar04",
|
||||
"_ActionBar05", "_ActionBar06", "_ActionBar07", "_ActionBar08", "_ActionBar09", "_ActionCross");
|
||||
AddElements(ElementKind.Hotbar1, ElementKind.Hotbar2, ElementKind.Hotbar3, ElementKind.Hotbar4, ElementKind.Hotbar5,
|
||||
ElementKind.Hotbar6, ElementKind.Hotbar7, ElementKind.Hotbar8, ElementKind.Hotbar9, ElementKind.Hotbar10, ElementKind.CrossHotbar);
|
||||
}
|
||||
|
||||
var playerUnitFrame = ConfigurationManager.Instance?.GetConfigObject<PlayerUnitFrameConfig>();
|
||||
if (playerUnitFrame?.Enabled == true)
|
||||
AddHashes("_ParameterWidget");
|
||||
AddElements(ElementKind.ParameterBar);
|
||||
|
||||
var targetUnitFrame = ConfigurationManager.Instance?.GetConfigObject<TargetUnitFrameConfig>();
|
||||
if (targetUnitFrame?.Enabled == true)
|
||||
AddHashes("_TargetInfo", "_TargetInfoMainTarget", "_TargetInfoCastBar", "_TargetInfoBuffDebuff");
|
||||
AddElements(ElementKind.TargetBar, ElementKind.TargetInfoHp, ElementKind.TargetInfoProgressBar, ElementKind.TargetInfoStatus);
|
||||
|
||||
var focusUnitFrame = ConfigurationManager.Instance?.GetConfigObject<FocusTargetUnitFrameConfig>();
|
||||
if (focusUnitFrame?.Enabled == true)
|
||||
AddHashes("_FocusTargetInfo");
|
||||
AddElements(ElementKind.FocusTargetBar);
|
||||
|
||||
var playerCastbar = ConfigurationManager.Instance?.GetConfigObject<PlayerCastbarConfig>();
|
||||
if (playerCastbar?.Enabled == true)
|
||||
AddHashes("_CastBar");
|
||||
AddElements(ElementKind.ProgressBar);
|
||||
|
||||
var expBar = ConfigurationManager.Instance?.GetConfigObject<ExperienceBarConfig>();
|
||||
if (expBar?.Enabled == true)
|
||||
AddHashes("_Exp");
|
||||
AddElements(ElementKind.ExperienceBar);
|
||||
|
||||
var limitBreak = ConfigurationManager.Instance?.GetConfigObject<LimitBreakConfig>();
|
||||
if (limitBreak?.Enabled == true)
|
||||
AddHashes("_LimitBreak");
|
||||
AddElements(ElementKind.LimitGauge);
|
||||
|
||||
var playerBuffs = ConfigurationManager.Instance?.GetConfigObject<PlayerBuffsListConfig>();
|
||||
var playerDebuffs = ConfigurationManager.Instance?.GetConfigObject<PlayerDebuffsListConfig>();
|
||||
if (playerBuffs?.Enabled == true || playerDebuffs?.Enabled == true)
|
||||
AddHashes("_Status", "_StatusCustom0", "_StatusCustom1", "_StatusCustom2", "_StatusCustom3");
|
||||
AddElements(ElementKind.StatusEffects, ElementKind.StatusInfoEnhancements, ElementKind.StatusInfoEnfeeblements, ElementKind.StatusInfoOther, ElementKind.StatusInfoConditionalEnhancements);
|
||||
|
||||
var partyFrames = ConfigurationManager.Instance?.GetConfigObject<PartyFramesConfig>();
|
||||
if (partyFrames?.Enabled == true)
|
||||
AddHashes("_PartyList");
|
||||
AddElements(ElementKind.PartyList);
|
||||
|
||||
var enemyList = ConfigurationManager.Instance?.GetConfigObject<EnemyListConfig>();
|
||||
if (enemyList?.Enabled == true)
|
||||
AddHashes("_EnemyList");
|
||||
|
||||
// Hide NamePlate when HSUI nameplates are enabled. We read icon IDs from the addon (still updated when hidden)
|
||||
// and draw our own quest icons (! ? above NPCs) via NPC nameplate IconConfig.
|
||||
var nameplatesConfig = ConfigurationManager.Instance?.GetConfigObject<NameplatesGeneralConfig>();
|
||||
if (nameplatesConfig?.Enabled == true)
|
||||
AddHashes("NamePlate");
|
||||
AddElements(ElementKind.EnemyList);
|
||||
|
||||
// NamePlate is not in HUD Layout config; use UpdateDefaultNameplates (IsVisible) for that
|
||||
if (IsCurrentJobHudEnabled())
|
||||
{
|
||||
foreach (var name in GetCurrentJobGaugeAddonNames())
|
||||
AddHashes(name);
|
||||
var player = Plugin.ObjectTable.LocalPlayer;
|
||||
if (player != null)
|
||||
{
|
||||
foreach (var ek in ElementKindHelper.GetJobGaugeElementKinds(player.ClassJob.RowId))
|
||||
hashesToHide.Add((uint)ek);
|
||||
}
|
||||
}
|
||||
|
||||
SetGameHudElementsHidden(hashesToHide.ToArray(), false);
|
||||
|
||||
Reference in New Issue
Block a user