From df08550276816fbeb4df9f6f23af77089c42ac76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A7=8B=E6=B0=B4?= <1123993881@qq.com>
Date: Fri, 18 Aug 2023 08:42:26 +0800
Subject: [PATCH] fix: show jobs instead of roles.
---
RotationSolver.Basic/Data/JobRole.cs | 32 ++++++++++++++++++-
.../UI/SearchableConfigs/Searchable.cs | 9 +++---
2 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/RotationSolver.Basic/Data/JobRole.cs b/RotationSolver.Basic/Data/JobRole.cs
index 83c4768e0..15de4c499 100644
--- a/RotationSolver.Basic/Data/JobRole.cs
+++ b/RotationSolver.Basic/Data/JobRole.cs
@@ -1,4 +1,5 @@
-using Lumina.Excel.GeneratedSheets;
+using ECommons.ExcelServices;
+using Lumina.Excel.GeneratedSheets;
namespace RotationSolver.Basic.Data;
@@ -80,4 +81,33 @@ public static JobRole GetJobRole(this ClassJob job)
}
return role;
}
+
+ ///
+ /// Get Jobs from role.
+ ///
+ ///
+ ///
+ public static Job[] ToJobs(this JobRole role)
+ {
+ switch (role)
+ {
+ case JobRole.Tank:
+ return new Job[] { Job.WAR, Job.PLD, Job.DRK, Job.GNB };
+ case JobRole.Healer:
+ return new Job[] {Job.WHM, Job.SCH, Job.AST, Job.SGE };
+ case JobRole.Melee:
+ return new Job[] {Job.MNK, Job.DRG, Job.NIN, Job.SAM, Job.RPR };
+ case JobRole.RangedPhysical:
+ return new Job[] { Job.BRD, Job.MCH, Job.DNC };
+ case JobRole.RangedMagical:
+ return new Job[] { Job.BLM, Job.SMN, Job.RDM, Job.BLU };
+
+ case JobRole.Ranged:
+ var result = new List(JobRole.RangedPhysical.ToJobs());
+ result.AddRange(JobRole.RangedMagical.ToJobs());
+ return result.ToArray();
+ }
+
+ return Array.Empty();
+ }
}
diff --git a/RotationSolver/UI/SearchableConfigs/Searchable.cs b/RotationSolver/UI/SearchableConfigs/Searchable.cs
index 3fed0e580..67bbe0416 100644
--- a/RotationSolver/UI/SearchableConfigs/Searchable.cs
+++ b/RotationSolver/UI/SearchableConfigs/Searchable.cs
@@ -63,11 +63,10 @@ public unsafe void Draw(Job job)
ImGui.PopStyleColor();
- var roleOrJob = string.Join("\n", JobRoles ?? Array.Empty());
- var jobs = string.Join("\n", (Jobs ?? Array.Empty())
- .Select(job => Svc.Data.GetExcelSheet()?.GetRow((uint)job)?.Name ?? job.ToString()));
- if (string.IsNullOrEmpty(roleOrJob)) roleOrJob = jobs;
- else if (!string.IsNullOrEmpty(jobs)) roleOrJob +='\n' + jobs;
+ var jobs = JobRoles.SelectMany(JobRoleExtension.ToJobs).Union(Jobs ?? Array.Empty());
+ var roleOrJob = string.Join("\n",
+ jobs.Select(job => Svc.Data.GetExcelSheet()?.GetRow((uint)job)?.Name ?? job.ToString()));
+
ImguiTooltips.HoveredTooltip(string.Format(LocalizationManager.RightLang.ConfigWindow_NotInJob, roleOrJob));
return;
}