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; }