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 {
Name = value.Name,
EncDps = TryFloat(value.EncDps),
JobAbbr = value.Job,
};
}
@ -37,5 +38,6 @@ public class Encounter {
public class Combatant {
public string Name { get; init; }
public string JobAbbr { 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.Agent;
using FFXIVClientStructs.FFXIV.Component.GUI;
using Lumina.Excel.GeneratedSheets;
namespace PartyDamage;
@ -43,6 +44,9 @@ public class Plugin : IDalamudPlugin {
[PluginService]
internal IContextMenu ContextMenu { get; init; }
[PluginService]
internal IDataManager DataManager { get; init; }
internal Configuration Config { get; }
private Client Client { get; }
internal PluginUi Ui { get; }
@ -164,10 +168,18 @@ public class Plugin : IDalamudPlugin {
if (
this.Config.UseEvaluatorNpc
&& this.ClientState.LocalPlayer is { } player
&& this.Client.Data != null
&& 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));
var rank = (float) (combatants.FindIndex(combatant => combatant.Name == "YOU") + 1) / combatants.Count;
var evaluation = rank switch {

View File

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