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:
+109
-30
@@ -2,37 +2,86 @@ using System;
|
||||
|
||||
namespace HSUI.Enums;
|
||||
|
||||
// Hashes from HUD layout (AddonNameHash). Sources: HSUI, HUDManager plugin
|
||||
/// <summary>
|
||||
/// HUD layout AddonNameHash values. Uses CRC32 of "AddonName_a".
|
||||
/// Source: https://github.com/zacharied/FFXIV-Plugin-HudManager/blob/testing/HUDManager/Structs/ElementKind.cs
|
||||
/// </summary>
|
||||
public enum ElementKind : uint
|
||||
{
|
||||
Hotbar1 = 0xC48D3605, // _ActionBar_a
|
||||
Hotbar2 = 0xFB7B6E1E, // _ActionBar01_a
|
||||
Hotbar3 = 0xF93DD047, // _ActionBar02_a
|
||||
Hotbar4 = 0xF8FFBA70, // _ActionBar03_a
|
||||
Hotbar5 = 0xFDB0ACF5, // _ActionBar04_a
|
||||
Hotbar6 = 0xFC72C6C2, // _ActionBar05_a
|
||||
Hotbar7 = 0xFE34789B, // _ActionBar06_a
|
||||
Hotbar8 = 0xFFF612AC, // _ActionBar07_a
|
||||
Hotbar9 = 0xF4AA5591, // _ActionBar08_a
|
||||
Hotbar10 = 0xF5683FA6, // _ActionBar09_a
|
||||
PetHotbar = 0xD8D188FF, // _ActionBarEx_a
|
||||
CrossHotbar = 0xBA81E8D1, // _ActionCross_a
|
||||
LeftWCrossHotbar = 0x6665735D, // _ActionDoubleCrossL_a
|
||||
RightWCrossHotbar = 0x70DDFD27, // _ActionDoubleCrossR_a
|
||||
ParameterBar = 0x9818E23E, // _ParameterWidget - player HP/MP
|
||||
TargetBar = 0x9139E9FD, // target info
|
||||
FocusTargetBar = 0xC28E7D1F,
|
||||
ProgressBar = 0xECB1E391, // cast bar
|
||||
ExperienceBar = 0x21E32D4E,
|
||||
LimitGauge = 0xC7A40A8A,
|
||||
StatusEffects = 0x4A5B6A16, // player buffs/debuffs
|
||||
StatusInfoEnhancements = 0x1F320624,
|
||||
StatusInfoEnfeeblements = 0x1E7A7A83,
|
||||
TargetInfoHp = 0xBD411F17,
|
||||
TargetInfoProgressBar = 0xCB5BCCCF,
|
||||
TargetInfoStatus = 0x070F4E6B,
|
||||
PartyList = 0x3D3B34F9,
|
||||
EnemyList = 0xB8C30AC5,
|
||||
// Hotbars
|
||||
Hotbar1 = 0xC48D3605, // _ActionBar_a
|
||||
Hotbar2 = 0xFB7B6E1E, // _ActionBar01_a
|
||||
Hotbar3 = 0xF93DD047, // _ActionBar02_a
|
||||
Hotbar4 = 0xF8FFBA70, // _ActionBar03_a
|
||||
Hotbar5 = 0xFDB0ACF5, // _ActionBar04_a
|
||||
Hotbar6 = 0xFC72C6C2, // _ActionBar05_a
|
||||
Hotbar7 = 0xFE34789B, // _ActionBar06_a
|
||||
Hotbar8 = 0xFFF612AC, // _ActionBar07_a
|
||||
Hotbar9 = 0xF4AA5591, // _ActionBar08_a
|
||||
Hotbar10 = 0xF5683FA6, // _ActionBar09_a
|
||||
PetHotbar = 0xD8D188FF, // _ActionBarEx_a
|
||||
CrossHotbar = 0xBA81E8D1, // _ActionCross_a
|
||||
LeftWCrossHotbar = 0x6665735D,
|
||||
RightWCrossHotbar = 0x70DDFD27,
|
||||
|
||||
// Player & target
|
||||
ParameterBar = 0x981EC49E, // _ParameterWidget_a (player HP/MP)
|
||||
ProgressBar = 0xECB29811, // _CastBar_a
|
||||
TargetBar = 0x913EC97D, // _TargetInfo_a
|
||||
TargetInfoHp = 0xBD128377, // _TargetInfoMainTarget_a
|
||||
TargetInfoProgressBar = 0xCB54A2EF, // _TargetInfoCastBar_a
|
||||
TargetInfoStatus = 0x076F596B, // _TargetInfoBuffDebuff_a
|
||||
FocusTargetBar = 0xC292F05F, // _FocusTargetInfo_a
|
||||
|
||||
// Party & lists
|
||||
PartyList = 0x3D425039, // _PartyList_a
|
||||
AllianceList1 = 0x2943729A,
|
||||
AllianceList2 = 0x2B05CCC3,
|
||||
EnemyList = 0xB8BD6685, // _EnemyList_a
|
||||
|
||||
// Misc HUD
|
||||
ExperienceBar = 0x21E53CCE, // _Exp_a
|
||||
LimitGauge = 0xC79F450A, // _LimitBreak_a
|
||||
StatusEffects = 0x4A569616, // _Status_a
|
||||
StatusInfoEnhancements = 0x1F4230B4, // _StatusCustom0_a
|
||||
StatusInfoEnfeeblements = 0x1E805A83, // _StatusCustom1_a
|
||||
StatusInfoOther = 0x1CC6E4DA, // _StatusCustom2_a
|
||||
StatusInfoConditionalEnhancements = 0x1D048EED, // _StatusCustom3_a
|
||||
|
||||
// Job gauges (PLD, WAR, DRK, GNB, WHM, SCH, AST, SGE, MNK, DRG, NIN, SAM, RPR, VPR, BRD, MCH, DNC, BLM, SMN, RDM, PCT)
|
||||
OathGauge = 0xEFBAFE40, // JobHudPLD0
|
||||
BeastGauge = 0x7F5D020A, // JobHudWAR0
|
||||
BloodGauge = 0xF04E8778, // JobHudDRK0
|
||||
DarksideGauge = 0xF18CED4F, // JobHudDRK1
|
||||
PowderGauge = 0xAEC2C0DF, // JobHudGNB0
|
||||
HealingGauge = 0x7A3727B2, // JobHudWHM0
|
||||
AetherflowGaugeSch = 0xCADD58CB, // JobHudACN0
|
||||
FaerieGauge = 0xA1A8A487, // JobHudSCH0
|
||||
ArcanaGauge = 0x959978B2, // JobHudAST0
|
||||
EukrasiaGauge = 0x11D01C49, // JobHudGFF0 (SGE)
|
||||
AddersgallGauge = 0x1012767E, // JobHudGFF1 (SGE)
|
||||
MastersGauge = 0x7251AC33, // JobHudMNK0
|
||||
ChakraGauge = 0x7393C604, // JobHudMNK1
|
||||
DragonGauge = 0xBA9838C0, // JobHudDRG0
|
||||
NinkiGauge = 0x713BF2BF, // JobHudNIN0
|
||||
Kazematoi = 0x6CD4313E, // JobHudNIN1v70 (NIN)
|
||||
KenkiGauge = 0xECB607D5, // JobHudSAM0
|
||||
SenGauge = 0xED746DE2, // JobHudSAM1
|
||||
SoulGauge = 0xA2D9B660, // JobHudRRP0 (RPR)
|
||||
DeathGauge = 0xA31BDC57, // JobHudRRP1 (RPR)
|
||||
Vipersight = 0xB7694B56, // JobHudRDB0 (VIP)
|
||||
SerpentOfferingsGauge = 0xB6AB2161, // JobHudRDB1 (VIP)
|
||||
SongGauge = 0x7E747433, // JobHudBRD0
|
||||
HeatGauge = 0x9874C76C, // JobHudMCH0
|
||||
StepGauge = 0x90EAD514, // JobHudDNC0
|
||||
FourfoldFeathers = 0x9128BF23, // JobHudDNC1
|
||||
ElementalGauge = 0xDCAC125A, // JobHudBLM0
|
||||
AstralGauge = 0xDD6E786D, // JobHudBLM1
|
||||
AetherflowGaugeSmn = 0x3BF3453A, // JobHudSMN0
|
||||
TranceGauge = 0x3A312F0D, // JobHudSMN1
|
||||
BalanceGauge = 0xEF0A5B00, // JobHudRDM0
|
||||
Canvases = 0x7A6A6A42, // JobHudRPM0 (PCT)
|
||||
PaletteGauge = 0x7BA80075, // JobHudRPM1 (PCT)
|
||||
}
|
||||
|
||||
public static class ElementKindHelper
|
||||
@@ -55,4 +104,34 @@ public static class ElementKindHelper
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(hotBarId))
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Returns ElementKind hashes for the current job's gauges (0-4 gauges per job).</summary>
|
||||
public static ElementKind[] GetJobGaugeElementKinds(uint jobId)
|
||||
{
|
||||
return jobId switch
|
||||
{
|
||||
19 => new[] { ElementKind.OathGauge }, // PLD
|
||||
21 => new[] { ElementKind.MastersGauge, ElementKind.ChakraGauge }, // MNK
|
||||
22 => new[] { ElementKind.BeastGauge }, // WAR
|
||||
23 => new[] { ElementKind.DragonGauge }, // DRG
|
||||
24 => new[] { ElementKind.SongGauge }, // BRD
|
||||
25 => new[] { ElementKind.HealingGauge }, // WHM
|
||||
27 => new[] { ElementKind.ElementalGauge, ElementKind.AstralGauge }, // BLM
|
||||
28 => new[] { ElementKind.AetherflowGaugeSmn, ElementKind.TranceGauge }, // SMN
|
||||
29 => new[] { ElementKind.AetherflowGaugeSch, ElementKind.FaerieGauge }, // SCH
|
||||
30 => new[] { ElementKind.NinkiGauge, ElementKind.Kazematoi }, // NIN
|
||||
31 => new[] { ElementKind.HeatGauge }, // MCH
|
||||
32 => new[] { ElementKind.BloodGauge, ElementKind.DarksideGauge }, // DRK
|
||||
33 => new[] { ElementKind.ArcanaGauge }, // AST
|
||||
34 => new[] { ElementKind.KenkiGauge, ElementKind.SenGauge }, // SAM
|
||||
35 => new[] { ElementKind.BalanceGauge }, // RDM
|
||||
37 => new[] { ElementKind.PowderGauge }, // GNB
|
||||
38 => new[] { ElementKind.StepGauge, ElementKind.FourfoldFeathers }, // DNC
|
||||
39 => new[] { ElementKind.SoulGauge, ElementKind.DeathGauge }, // RPR
|
||||
40 => new[] { ElementKind.EukrasiaGauge, ElementKind.AddersgallGauge }, // SGE
|
||||
41 => new[] { ElementKind.Vipersight, ElementKind.SerpentOfferingsGauge },// VPR
|
||||
42 => new[] { ElementKind.Canvases, ElementKind.PaletteGauge }, // PCT
|
||||
_ => Array.Empty<ElementKind>()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user