diff --git a/Dalamud/Game/ClientState/JobGauge/Enums/CanvasFlags.cs b/Dalamud/Game/ClientState/JobGauge/Enums/CanvasFlags.cs new file mode 100644 index 0000000000..88e26be445 --- /dev/null +++ b/Dalamud/Game/ClientState/JobGauge/Enums/CanvasFlags.cs @@ -0,0 +1,37 @@ +namespace Dalamud.Game.ClientState.JobGauge.Enums; + +/// +/// Represents the flags for the canvas in the job gauge. +/// +public enum CanvasFlags : byte +{ + /// + /// Represents the Pom flag for the canvas in the job gauge. + /// + Pom = 1, + + /// + /// Represents the Wing canvas flag in the job gauge. + /// + Wing = 2, + + /// + /// Represents the flag for the claw in the canvas of the job gauge. + /// + Claw = 4, + + /// + /// Represents the 'Maw' flag for the canvas in the job gauge. + /// + Maw = 8, + + /// + /// Represents the weapon flag for the canvas in the job gauge. + /// + Weapon = 16, + + /// + /// Represents the Landscape flag for the canvas in the job gauge. + /// + Landscape = 32, +} diff --git a/Dalamud/Game/ClientState/JobGauge/Enums/CreatureFlags.cs b/Dalamud/Game/ClientState/JobGauge/Enums/CreatureFlags.cs new file mode 100644 index 0000000000..72b880ad82 --- /dev/null +++ b/Dalamud/Game/ClientState/JobGauge/Enums/CreatureFlags.cs @@ -0,0 +1,32 @@ +namespace Dalamud.Game.ClientState.JobGauge.Enums; + +/// +/// Which creature flags are present on the gauge. +/// +public enum CreatureFlags : byte +{ + /// + /// Pom flag present + /// + Pom = 1, + + /// + /// Wings flag present + /// + Wings = 2, + + /// + /// Claw flag present + /// + Claw = 4, + + /// + /// Moogle portrait present + /// + MooglePortait = 16, + + /// + /// Madeen portrait present + /// + MadeenPortrait = 32, +} diff --git a/Dalamud/Game/ClientState/JobGauge/Enums/DreadCombo.cs b/Dalamud/Game/ClientState/JobGauge/Enums/DreadCombo.cs new file mode 100644 index 0000000000..046d9a41d7 --- /dev/null +++ b/Dalamud/Game/ClientState/JobGauge/Enums/DreadCombo.cs @@ -0,0 +1,37 @@ +namespace Dalamud.Game.ClientState.JobGauge.Enums; + +/// +/// Enum representing the DreadCombo actions for the VPR job gauge. +/// +public enum DreadCombo : byte +{ + /// + /// Dreadwinder action. + /// + Dreadwinder = 1, + + /// + /// Hunters Coil Action. + /// + HuntersCoil = 2, + + /// + /// Swiftskins Coil Action. + /// + SwiftskinsCoil = 3, + + /// + /// PitOfDread action. + /// + PitOfDread = 4, + + /// + /// HuntersDen action. + /// + HuntersDen = 5, + + /// + /// Swiftskins Den action. + /// + SwiftskinsDen = 6, +} diff --git a/Dalamud/Game/ClientState/JobGauge/Types/PCTGauge.cs b/Dalamud/Game/ClientState/JobGauge/Types/PCTGauge.cs new file mode 100644 index 0000000000..d7cdc32292 --- /dev/null +++ b/Dalamud/Game/ClientState/JobGauge/Types/PCTGauge.cs @@ -0,0 +1,66 @@ +using FFXIVClientStructs.FFXIV.Client.Game.Gauge; + +using CanvasFlags = Dalamud.Game.ClientState.JobGauge.Enums.CanvasFlags; +using CreatureFlags = Dalamud.Game.ClientState.JobGauge.Enums.CreatureFlags; + +namespace Dalamud.Game.ClientState.JobGauge.Types; + +/// +/// In-Memory PCT job gauge. +/// +public unsafe class PCTGauge : JobGaugeBase +{ + /// + /// Initializes a new instance of the class. + /// + /// Address of the job gauge. + internal PCTGauge(IntPtr address) + : base(address) + { + } + + /// + /// Tracks use of subjective pallete + /// + public byte PalleteGauge => Struct->PalleteGauge; + + /// + /// Number of paint the player has. + /// + public byte Paint => Struct->Paint; + + /// + /// Creature Motif Stack + /// + public bool CreatureMotifDrawn => Struct->CreatureMotifDrawn; + + /// + /// Weapon Motif Stack + /// + public bool WeaponMotifDrawn => Struct->WeaponMotifDrawn; + + /// + /// Landscape Motif Stack + /// + public bool LandscapeMotifDrawn => Struct->LandscapeMotifDrawn; + + /// + /// Moogle Portrait Stack + /// + public bool MooglePortraitReady => Struct->MooglePortraitReady; + + /// + /// Madeen Portrait Stack + /// + public bool MadeenPortraitReady => Struct->MadeenPortraitReady; + + /// + /// Which creature flags are present. + /// + public CreatureFlags CreatureFlags => (CreatureFlags)Struct->CreatureFlags; + + /// + /// Which canvas flags are present. + /// + public CanvasFlags CanvasFlags => (CanvasFlags)Struct->CanvasFlags; +} diff --git a/Dalamud/Game/ClientState/JobGauge/Types/VPRGauge.cs b/Dalamud/Game/ClientState/JobGauge/Types/VPRGauge.cs new file mode 100644 index 0000000000..079f8b93b4 --- /dev/null +++ b/Dalamud/Game/ClientState/JobGauge/Types/VPRGauge.cs @@ -0,0 +1,42 @@ +using FFXIVClientStructs.FFXIV.Client.Game.Gauge; + +using Reloaded.Memory; + +using DreadCombo = Dalamud.Game.ClientState.JobGauge.Enums.DreadCombo; + +namespace Dalamud.Game.ClientState.JobGauge.Types; + +/// +/// In-memory VPR job gauge. +/// +public unsafe class VPRGauge : JobGaugeBase +{ + /// + /// Initializes a new instance of the class. + /// + /// Address of the job gauge. + internal VPRGauge(IntPtr address) + : base(address) + { + } + + /// + /// How many uses of uncoiled fury the player has. + /// + public byte RattlingCoilStacks => Struct->RattlingCoilStacks; + + /// + /// Tracks AnguineTribute stacks and gauge. + /// + public byte SerpentOffering => Struct->SerpentOffering; + + /// + /// Allows the use of 1st, 2nd, 3rd, 4th generation and Ouroboros. + /// + public byte AnguineTribute => Struct->AnguineTribute; + + /// + /// Keeps track of last Weaponskill used in DreadWinder/Pit of Dread combo. + /// + public DreadCombo DreadCombo => (DreadCombo)Struct->DreadCombo; +} diff --git a/Dalamud/Interface/Internal/Windows/Data/Widgets/GaugeWidget.cs b/Dalamud/Interface/Internal/Windows/Data/Widgets/GaugeWidget.cs index df350e7302..c16cc34e1d 100644 --- a/Dalamud/Interface/Internal/Windows/Data/Widgets/GaugeWidget.cs +++ b/Dalamud/Interface/Internal/Windows/Data/Widgets/GaugeWidget.cs @@ -61,6 +61,8 @@ public void Draw() 38 => jobGauges.Get(), 39 => jobGauges.Get(), 40 => jobGauges.Get(), + 41 => jobGauges.Get(), + 42 => jobGauges.Get(), _ => null, };