feat: only compare against same role

This commit is contained in:
Anna 2024-07-27 19:48:29 -04:00
parent 7b85e50bcc
commit c1aeff4684
Signed by: anna
GPG Key ID: D0943384CD9F87D1
3 changed files with 18 additions and 1 deletions

View File

@ -10,6 +10,7 @@ public class CombatData {
this.Combatants[key] = new Combatant { this.Combatants[key] = new Combatant {
Name = value.Name, Name = value.Name,
EncDps = TryFloat(value.EncDps), EncDps = TryFloat(value.EncDps),
JobAbbr = value.Job,
}; };
} }
@ -37,5 +38,6 @@ public class Encounter {
public class Combatant { public class Combatant {
public string Name { get; init; } public string Name { get; init; }
public string JobAbbr { get; init; }
public float EncDps { get; init; } public float EncDps { get; init; }
} }

View File

@ -15,6 +15,7 @@ using FFXIVClientStructs.FFXIV.Client.Graphics;
using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI;
using FFXIVClientStructs.FFXIV.Client.UI.Agent; using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using FFXIVClientStructs.FFXIV.Component.GUI; using FFXIVClientStructs.FFXIV.Component.GUI;
using Lumina.Excel.GeneratedSheets;
namespace PartyDamage; namespace PartyDamage;
@ -43,6 +44,9 @@ public class Plugin : IDalamudPlugin {
[PluginService] [PluginService]
internal IContextMenu ContextMenu { get; init; } internal IContextMenu ContextMenu { get; init; }
[PluginService]
internal IDataManager DataManager { get; init; }
internal Configuration Config { get; } internal Configuration Config { get; }
private Client Client { get; } private Client Client { get; }
internal PluginUi Ui { get; } internal PluginUi Ui { get; }
@ -164,10 +168,18 @@ public class Plugin : IDalamudPlugin {
if ( if (
this.Config.UseEvaluatorNpc this.Config.UseEvaluatorNpc
&& this.ClientState.LocalPlayer is { } player
&& this.Client.Data != null && this.Client.Data != null
&& Evaluator.Evaluators.FirstOrDefault(e => e.Id == this.Config.EvaluatorId) is { } evaluator && Evaluator.Evaluators.FirstOrDefault(e => e.Id == this.Config.EvaluatorId) is { } evaluator
) { ) {
var combatants = this.Client.Data.Combatants.Values.ToList(); var combatants = this.Client.Data.Combatants.Values
.Where(combatant => {
var job = this.DataManager.GetExcelSheet<ClassJob>()!
.FirstOrDefault(j => j.Abbreviation.RawString.Equals(combatant.JobAbbr, StringComparison.InvariantCultureIgnoreCase));
return job?.ClassJobCategory.Row == player.ClassJob.GameData?.ClassJobCategory.Row;
})
.ToList();
combatants.Sort((a, b) => a.EncDps.CompareTo(b.EncDps)); combatants.Sort((a, b) => a.EncDps.CompareTo(b.EncDps));
var rank = (float) (combatants.FindIndex(combatant => combatant.Name == "YOU") + 1) / combatants.Count; var rank = (float) (combatants.FindIndex(combatant => combatant.Name == "YOU") + 1) / combatants.Count;
var evaluation = rank switch { var evaluation = rank switch {

View File

@ -95,4 +95,7 @@ public class RawCombatant {
[JsonProperty("enchps")] [JsonProperty("enchps")]
public string EncHps; public string EncHps;
[JsonProperty("Job")]
public string Job;
} }