From 5b9ca4f5f8e5c2011ed97ae579288505f7316833 Mon Sep 17 00:00:00 2001 From: Haselnussbomber Date: Fri, 4 Apr 2025 15:32:52 +0200 Subject: [PATCH] Strip soft hyphens --- Craftimizer/SimulatorUtils.cs | 4 ++-- Craftimizer/Utils/ReadOnlySeStringExtensions.cs | 12 ++++++++++++ Craftimizer/Windows/MacroEditor.cs | 12 ++++++------ Craftimizer/Windows/RecipeNote.cs | 6 +++--- Craftimizer/Windows/SynthHelper.cs | 2 +- 5 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 Craftimizer/Utils/ReadOnlySeStringExtensions.cs diff --git a/Craftimizer/SimulatorUtils.cs b/Craftimizer/SimulatorUtils.cs index 0fa6995..7637d45 100644 --- a/Craftimizer/SimulatorUtils.cs +++ b/Craftimizer/SimulatorUtils.cs @@ -14,7 +14,7 @@ using Craftimizer.Utils; using Lumina.Text.ReadOnly; using Lumina.Text.Payloads; using Lumina.Excel.Sheets; -using FFXIVClientStructs.FFXIV.Client.Game.Event; +using Dalamud.Utility; namespace Craftimizer.Plugin; @@ -162,7 +162,7 @@ internal static class ClassJobUtils public static string GetName(this ClassJob me) { var job = LuminaSheets.ClassJobSheet.GetRow(me.GetClassJobIndex()); - return job.Name.ExtractText().ToLowerInvariant(); + return job.Name.ExtractCleanText(); } public static string GetNameArticle(this ClassJob me) diff --git a/Craftimizer/Utils/ReadOnlySeStringExtensions.cs b/Craftimizer/Utils/ReadOnlySeStringExtensions.cs new file mode 100644 index 0000000..13f35ee --- /dev/null +++ b/Craftimizer/Utils/ReadOnlySeStringExtensions.cs @@ -0,0 +1,12 @@ +using Dalamud.Utility; +using Lumina.Text.ReadOnly; + +namespace Craftimizer.Utils; + +public static class ReadOnlySeStringExtensions +{ + public static string ExtractCleanText(this ReadOnlySeString self) + { + return self.ExtractText().StripSoftHyphen(); + } +} diff --git a/Craftimizer/Windows/MacroEditor.cs b/Craftimizer/Windows/MacroEditor.cs index 173c7ab..85fbc5d 100644 --- a/Craftimizer/Windows/MacroEditor.cs +++ b/Craftimizer/Windows/MacroEditor.cs @@ -572,7 +572,7 @@ public sealed class MacroEditor : Window, IDisposable if (input.ItemId == 0) return "None"; - var name = LuminaSheets.ItemSheet.GetRowOrDefault(input.ItemId)?.Name.ExtractText() ?? $"Unknown ({input.ItemId})"; + var name = LuminaSheets.ItemSheet.GetRowOrDefault(input.ItemId)?.Name.ExtractCleanText() ?? $"Unknown ({input.ItemId})"; return input.IsHQ ? $"{name} (HQ)" : name; } @@ -778,11 +778,11 @@ public sealed class MacroEditor : Window, IDisposable searchableRecipes, fontHandle, ImGui.GetContentRegionAvail().X - rightSideWidth, - r => r.Recipe.ItemResult.Value.Name.ExtractText(), + r => r.Recipe.ItemResult.Value.Name.ExtractCleanText(), r => r.Recipe.RowId.ToString(), r => { - ImGui.TextUnformatted($"{r.Recipe.ItemResult.Value.Name.ExtractText()}"); + ImGui.TextUnformatted($"{r.Recipe.ItemResult.Value.Name.ExtractCleanText()}"); var classJob = (ClassJob)r.Recipe.CraftType.RowId; var textLevel = SqText.LevelPrefix.ToIconChar() + SqText.ToLevelString(r.Recipe.RecipeLevelTable.Value!.ClassJobLevel); @@ -964,10 +964,10 @@ public sealed class MacroEditor : Window, IDisposable { var perItem = RecipeData.CalculateItemStartingQuality(idx, 1); var total = RecipeData.CalculateItemStartingQuality(idx, hqCount); - ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractText()} {SeIconChar.HighQuality.ToIconString()}\n+{perItem} Quality/Item{(total > 0 ? $"\n+{total} Quality" : "")}"); + ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractCleanText()} {SeIconChar.HighQuality.ToIconString()}\n+{perItem} Quality/Item{(total > 0 ? $"\n+{total} Quality" : "")}"); } else if (ingredient.Amount != 0) - ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractText()}"); + ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractCleanText()}"); } ImGui.SameLine(0, 5); ImGui.SetNextItemWidth(ImGui.GetContentRegionAvail().X - (5 + ImGui.CalcTextSize("/").X + 5 + ImGui.CalcTextSize($"99").X)); @@ -1240,7 +1240,7 @@ public sealed class MacroEditor : Window, IDisposable { var status = effect.Status(); using var _reset = ImRaii.DefaultFont(); - ImGuiUtils.Tooltip($"{status.Name.ExtractText()}\n{status.Description.ExtractText()}"); + ImGuiUtils.Tooltip($"{status.Name.ExtractCleanText()}\n{status.Description.ExtractCleanText()}"); } ImGui.SameLine(); } diff --git a/Craftimizer/Windows/RecipeNote.cs b/Craftimizer/Windows/RecipeNote.cs index be797c9..32534d9 100644 --- a/Craftimizer/Windows/RecipeNote.cs +++ b/Craftimizer/Windows/RecipeNote.cs @@ -630,7 +630,7 @@ public sealed unsafe class RecipeNote : Window, IDisposable case CraftableStatus.RequiredItem: { var item = RecipeData.Recipe.ItemRequired.Value!; - var itemName = item.Name.ExtractText(); + var itemName = item.Name.ExtractCleanText(); var imageSize = ImGui.GetFrameHeight(); ImGuiUtils.TextCentered($"You are missing the required equipment."); @@ -644,7 +644,7 @@ public sealed unsafe class RecipeNote : Window, IDisposable case CraftableStatus.RequiredStatus: { var status = RecipeData.Recipe.StatusRequired.Value!; - var statusName = status.Name.ExtractText(); + var statusName = status.Name.ExtractCleanText(); var statusIcon = Service.IconManager.GetIconCached(status.Icon); var imageSize = new Vector2(ImGui.GetFrameHeight() * (statusIcon.AspectRatio ?? 1), ImGui.GetFrameHeight()); @@ -1158,7 +1158,7 @@ public sealed unsafe class RecipeNote : Window, IDisposable private static (string NpcName, string Territory, Vector2 MapLocation, MapLinkPayload Payload) ResolveLevelData(uint levelRowId) { var level = LuminaSheets.LevelSheet.GetRow(levelRowId); - var territory = level.Territory.Value.PlaceName.Value.Name.ExtractText(); + var territory = level.Territory.Value.PlaceName.Value.Name.ExtractCleanText(); var location = WorldToMap2(new(level.X, level.Z), level.Map.Value!); return (ResolveNpcResidentName(level.Object.RowId), territory, location, new(level.Territory.RowId, level.Map.RowId, location.X, location.Y)); diff --git a/Craftimizer/Windows/SynthHelper.cs b/Craftimizer/Windows/SynthHelper.cs index c703f6c..6f2824e 100644 --- a/Craftimizer/Windows/SynthHelper.cs +++ b/Craftimizer/Windows/SynthHelper.cs @@ -392,7 +392,7 @@ public sealed unsafe class SynthHelper : Window, IDisposable { var status = effect.Status(); using var _reset = ImRaii.DefaultFont(); - ImGuiUtils.Tooltip($"{status.Name.ExtractText()}\n{status.Description.ExtractText()}"); + ImGuiUtils.Tooltip($"{status.Name.ExtractCleanText()}\n{status.Description.ExtractCleanText()}"); } ImGui.SameLine(); }