From 6eed8935f8f62621d6296f9a81553008d73d9f9f Mon Sep 17 00:00:00 2001 From: Raymond Date: Tue, 7 Dec 2021 11:25:13 -0500 Subject: [PATCH] Update bard gauge for Coda, underlying changes --- .../Game/ClientState/JobGauge/Enums/Song.cs | 6 +- .../ClientState/JobGauge/Types/BRDGauge.cs | 57 ++++++++++++++++++- lib/FFXIVClientStructs | 2 +- 3 files changed, 60 insertions(+), 5 deletions(-) diff --git a/Dalamud/Game/ClientState/JobGauge/Enums/Song.cs b/Dalamud/Game/ClientState/JobGauge/Enums/Song.cs index 25ecf66cc..b2440640e 100644 --- a/Dalamud/Game/ClientState/JobGauge/Enums/Song.cs +++ b/Dalamud/Game/ClientState/JobGauge/Enums/Song.cs @@ -13,16 +13,16 @@ namespace Dalamud.Game.ClientState.JobGauge.Enums /// /// Mage's Ballad type. /// - MAGE = 5, + MAGE = 1, /// /// Army's Paeon type. /// - ARMY = 10, + ARMY = 2, /// /// The Wanderer's Minuet type. /// - WANDERER = 15, + WANDERER = 3, } } diff --git a/Dalamud/Game/ClientState/JobGauge/Types/BRDGauge.cs b/Dalamud/Game/ClientState/JobGauge/Types/BRDGauge.cs index 09d98dcf1..006ee907b 100644 --- a/Dalamud/Game/ClientState/JobGauge/Types/BRDGauge.cs +++ b/Dalamud/Game/ClientState/JobGauge/Types/BRDGauge.cs @@ -1,6 +1,7 @@ using System; using Dalamud.Game.ClientState.JobGauge.Enums; +using FFXIVClientStructs.FFXIV.Client.Game.Gauge; namespace Dalamud.Game.ClientState.JobGauge.Types { @@ -36,6 +37,60 @@ namespace Dalamud.Game.ClientState.JobGauge.Types /// /// Gets the type of song that is active. /// - public Song Song => (Song)this.Struct->Song; + public Song Song + { + get + { + if (this.Struct->SongFlags.HasFlag(SongFlags.WanderersMinuet)) + return Song.WANDERER; + + if (this.Struct->SongFlags.HasFlag(SongFlags.ArmysPaeon)) + return Song.ARMY; + + if (this.Struct->SongFlags.HasFlag(SongFlags.MagesBallad)) + return Song.MAGE; + + return Song.NONE; + } + } + + /// + /// Gets the type of song that was last played. + /// + public Song LastSong + { + get + { + if (this.Struct->SongFlags.HasFlag(SongFlags.WanderersMinuetLastPlayed)) + return Song.WANDERER; + + if (this.Struct->SongFlags.HasFlag(SongFlags.ArmysPaeonLastPlayed)) + return Song.ARMY; + + if (this.Struct->SongFlags.HasFlag(SongFlags.MagesBalladLastPlayed)) + return Song.MAGE; + + return Song.NONE; + } + } + + /// + /// Gets the song Coda that are currently active. + /// + /// + /// This will always return an array of size 3, inactive Coda are represented by . + /// + public Song[] Coda + { + get + { + return new[] + { + this.Struct->SongFlags.HasFlag(SongFlags.MagesBalladCoda) ? Song.MAGE : Song.NONE, + this.Struct->SongFlags.HasFlag(SongFlags.ArmysPaeonCoda) ? Song.ARMY : Song.NONE, + this.Struct->SongFlags.HasFlag(SongFlags.WanderersMinuetCoda) ? Song.WANDERER : Song.NONE, + }; + } + } } } diff --git a/lib/FFXIVClientStructs b/lib/FFXIVClientStructs index f1c535062..648486952 160000 --- a/lib/FFXIVClientStructs +++ b/lib/FFXIVClientStructs @@ -1 +1 @@ -Subproject commit f1c535062c315b055b05c35f9f4b25fd960712ee +Subproject commit 64848695224c25f5f459c42100a5ab75bf611d3f