Skip to content

Commit 9148f0e

Browse files
authored
Merge pull request #38 from Haselnussbomber/strip-soft-hyphen
Strip soft hyphens and resolve names via SeStringEvaluator
2 parents 0c61352 + 02138bd commit 9148f0e

7 files changed

Lines changed: 38 additions & 20 deletions

File tree

Craftimizer/LuminaSheets.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,11 @@ public static class LuminaSheets
1616
public static readonly ExcelSheet<ClassJob> ClassJobSheet = Module.GetSheet<ClassJob>();
1717
public static readonly ExcelSheet<Item> ItemSheet = Module.GetSheet<Item>();
1818
public static readonly ExcelSheet<Item> ItemSheetEnglish = Module.GetSheet<Item>(Language.English)!;
19-
public static readonly ExcelSheet<ENpcResident> ENpcResidentSheet = Module.GetSheet<ENpcResident>();
2019
public static readonly ExcelSheet<Level> LevelSheet = Module.GetSheet<Level>();
2120
public static readonly ExcelSheet<Quest> QuestSheet = Module.GetSheet<Quest>();
2221
public static readonly ExcelSheet<Materia> MateriaSheet = Module.GetSheet<Materia>();
2322
public static readonly ExcelSheet<BaseParam> BaseParamSheet = Module.GetSheet<BaseParam>();
2423
public static readonly ExcelSheet<ItemFood> ItemFoodSheet = Module.GetSheet<ItemFood>();
25-
public static readonly SubrowExcelSheet<SatisfactionSupply> SatisfactionSupplySheet = Module.GetSubrowSheet<SatisfactionSupply>();
2624
public static readonly ExcelSheet<WKSMissionToDoEvalutionRefin> WKSMissionToDoEvalutionRefinSheet = Module.GetSheet<WKSMissionToDoEvalutionRefin>();
2725
public static readonly ExcelSheet<RecipeLevelTable> RecipeLevelTableSheet = Module.GetSheet<RecipeLevelTable>();
2826
public static readonly ExcelSheet<GathererCrafterLvAdjustTable> GathererCrafterLvAdjustTableSheet = Module.GetSheet<GathererCrafterLvAdjustTable>();

Craftimizer/Service.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
namespace Craftimizer.Plugin;
1111

12+
#pragma warning disable SeStringEvaluator
13+
1214
public sealed class Service
1315
{
1416
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
@@ -27,6 +29,7 @@ public sealed class Service
2729
[PluginService] public static IPluginLog PluginLog { get; private set; }
2830
[PluginService] public static IGameInteropProvider GameInteropProvider { get; private set; }
2931
[PluginService] public static INotificationManager NotificationManager { get; private set; }
32+
[PluginService] public static ISeStringEvaluator SeStringEvaluator { get; private set; }
3033

3134
public static Plugin Plugin { get; private set; }
3235
public static Configuration Configuration => Plugin.Configuration;

Craftimizer/SimulatorUtils.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
using Lumina.Text.ReadOnly;
1515
using Lumina.Text.Payloads;
1616
using Lumina.Excel.Sheets;
17-
using FFXIVClientStructs.FFXIV.Client.Game.Event;
17+
using Dalamud.Utility;
1818

1919
namespace Craftimizer.Plugin;
2020

@@ -162,7 +162,7 @@ public static unsafe bool CanPlayerUseManipulation(this ClassJob me) =>
162162
public static string GetName(this ClassJob me)
163163
{
164164
var job = LuminaSheets.ClassJobSheet.GetRow(me.GetClassJobIndex());
165-
return job.Name.ExtractText().ToLowerInvariant();
165+
return job.Name.ExtractCleanText();
166166
}
167167

168168
public static string GetNameArticle(this ClassJob me)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using Dalamud.Utility;
2+
using Lumina.Text.ReadOnly;
3+
4+
namespace Craftimizer.Utils;
5+
6+
public static class ReadOnlySeStringExtensions
7+
{
8+
public static string ExtractCleanText(this ReadOnlySeString self)
9+
{
10+
return self.ExtractText().StripSoftHyphen();
11+
}
12+
}

Craftimizer/Windows/MacroEditor.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ private static string FormatItemBuff((uint ItemId, bool IsHQ) input)
572572
if (input.ItemId == 0)
573573
return "None";
574574

575-
var name = LuminaSheets.ItemSheet.GetRowOrDefault(input.ItemId)?.Name.ExtractText() ?? $"Unknown ({input.ItemId})";
575+
var name = LuminaSheets.ItemSheet.GetRowOrDefault(input.ItemId)?.Name.ExtractCleanText() ?? $"Unknown ({input.ItemId})";
576576
return input.IsHQ ? $"{name} (HQ)" : name;
577577
}
578578

@@ -778,11 +778,11 @@ private bool DrawRecipeParams()
778778
searchableRecipes,
779779
fontHandle,
780780
ImGui.GetContentRegionAvail().X - rightSideWidth,
781-
r => r.Recipe.ItemResult.Value.Name.ExtractText(),
781+
r => r.Recipe.ItemResult.Value.Name.ExtractCleanText(),
782782
r => r.Recipe.RowId.ToString(),
783783
r =>
784784
{
785-
ImGui.TextUnformatted($"{r.Recipe.ItemResult.Value.Name.ExtractText()}");
785+
ImGui.TextUnformatted($"{r.Recipe.ItemResult.Value.Name.ExtractCleanText()}");
786786

787787
var classJob = (ClassJob)r.Recipe.CraftType.RowId;
788788
var textLevel = SqText.LevelPrefix.ToIconChar() + SqText.ToLevelString(r.Recipe.RecipeLevelTable.Value!.ClassJobLevel);
@@ -964,10 +964,10 @@ private void DrawIngredientHQEntry(int idx)
964964
{
965965
var perItem = RecipeData.CalculateItemStartingQuality(idx, 1);
966966
var total = RecipeData.CalculateItemStartingQuality(idx, hqCount);
967-
ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractText()} {SeIconChar.HighQuality.ToIconString()}\n+{perItem} Quality/Item{(total > 0 ? $"\n+{total} Quality" : "")}");
967+
ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractCleanText()} {SeIconChar.HighQuality.ToIconString()}\n+{perItem} Quality/Item{(total > 0 ? $"\n+{total} Quality" : "")}");
968968
}
969969
else if (ingredient.Amount != 0)
970-
ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractText()}");
970+
ImGuiUtils.Tooltip($"{ingredient.Item.Name.ExtractCleanText()}");
971971
}
972972
ImGui.SameLine(0, 5);
973973
ImGui.SetNextItemWidth(ImGui.GetContentRegionAvail().X - (5 + ImGui.CalcTextSize("/").X + 5 + ImGui.CalcTextSize($"99").X));
@@ -1240,7 +1240,7 @@ void DrawCondition(DynamicBars.DrawerParams drawerParams)
12401240
{
12411241
var status = effect.Status();
12421242
using var _reset = ImRaii.DefaultFont();
1243-
ImGuiUtils.Tooltip($"{status.Name.ExtractText()}\n{status.Description.ExtractText()}");
1243+
ImGuiUtils.Tooltip($"{status.Name.ExtractCleanText()}\n{status.Description.ExtractCleanText()}");
12441244
}
12451245
ImGui.SameLine();
12461246
}

Craftimizer/Windows/RecipeNote.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Craftimizer.Simulator.Actions;
44
using Craftimizer.Solver;
55
using Craftimizer.Utils;
6+
using Dalamud.Game.ClientState.Objects.Enums;
67
using Dalamud.Game.Text;
78
using Dalamud.Game.Text.SeStringHandling.Payloads;
89
using Dalamud.Interface;
@@ -17,12 +18,12 @@
1718
using FFXIVClientStructs.FFXIV.Client.Game;
1819
using FFXIVClientStructs.FFXIV.Client.Game.UI;
1920
using FFXIVClientStructs.FFXIV.Client.System.String;
20-
using FFXIVClientStructs.FFXIV.Client.UI;
2121
using FFXIVClientStructs.FFXIV.Client.UI.Misc;
2222
using FFXIVClientStructs.FFXIV.Component.GUI;
2323
using ImGuiNET;
2424
using System;
2525
using System.Collections.Generic;
26+
using System.Globalization;
2627
using System.Linq;
2728
using System.Numerics;
2829
using System.Runtime.InteropServices;
@@ -589,7 +590,7 @@ private void DrawCharacterStats()
589590
if (ImGui.IsItemHovered())
590591
ImGuiUtils.Tooltip("Open in map");
591592

592-
ImGuiUtils.TextCentered($"{questTerritory} ({questLocation.X:0.0}, {questLocation.Y:0.0})");
593+
ImGuiUtils.TextCentered($"{questTerritory} ({GetCoordinatesString(questLocation)})");
593594
}
594595
break;
595596
case CraftableStatus.WrongClassJob:
@@ -624,13 +625,13 @@ private void DrawCharacterStats()
624625
if (ImGui.IsItemHovered())
625626
ImGuiUtils.Tooltip("Open in map");
626627

627-
ImGuiUtils.TextCentered($"{vendorTerritory} ({vendorLoation.X:0.0}, {vendorLoation.Y:0.0})");
628+
ImGuiUtils.TextCentered($"{vendorTerritory} ({GetCoordinatesString(vendorLoation)})");
628629
}
629630
break;
630631
case CraftableStatus.RequiredItem:
631632
{
632633
var item = RecipeData.Recipe.ItemRequired.Value!;
633-
var itemName = item.Name.ExtractText();
634+
var itemName = item.Name.ExtractCleanText();
634635
var imageSize = ImGui.GetFrameHeight();
635636

636637
ImGuiUtils.TextCentered($"You are missing the required equipment.");
@@ -644,7 +645,7 @@ private void DrawCharacterStats()
644645
case CraftableStatus.RequiredStatus:
645646
{
646647
var status = RecipeData.Recipe.StatusRequired.Value!;
647-
var statusName = status.Name.ExtractText();
648+
var statusName = status.Name.ExtractCleanText();
648649
var statusIcon = Service.IconManager.GetIconCached(status.Icon);
649650
var imageSize = new Vector2(ImGui.GetFrameHeight() * (statusIcon.AspectRatio ?? 1), ImGui.GetFrameHeight());
650651

@@ -1158,10 +1159,10 @@ private CraftableStatus CalculateCraftStatus(Gearsets.GearsetItem[] gearItems)
11581159
private static (string NpcName, string Territory, Vector2 MapLocation, MapLinkPayload Payload) ResolveLevelData(uint levelRowId)
11591160
{
11601161
var level = LuminaSheets.LevelSheet.GetRow(levelRowId);
1161-
var territory = level.Territory.Value.PlaceName.Value.Name.ExtractText();
1162+
var placeName = level.Territory.Value.PlaceName.Value.Name.ExtractCleanText();
11621163
var location = WorldToMap2(new(level.X, level.Z), level.Map.Value!);
11631164

1164-
return (ResolveNpcResidentName(level.Object.RowId), territory, location, new(level.Territory.RowId, level.Map.RowId, location.X, location.Y));
1165+
return (ResolveNpcResidentName(level.Object.RowId), placeName, location, new(level.Territory.RowId, level.Map.RowId, location.X, location.Y));
11651166
}
11661167

11671168
private static Vector2 WorldToMap2(Vector2 worldCoordinates, Lumina.Excel.Sheets.Map map)
@@ -1171,8 +1172,12 @@ private static Vector2 WorldToMap2(Vector2 worldCoordinates, Lumina.Excel.Sheets
11711172

11721173
private static string ResolveNpcResidentName(uint npcRowId)
11731174
{
1174-
var resident = LuminaSheets.ENpcResidentSheet.GetRow(npcRowId);
1175-
return resident.Singular.ExtractText();
1175+
return Service.SeStringEvaluator.EvaluateObjStr(ObjectKind.EventNpc, npcRowId);
1176+
}
1177+
1178+
private static string GetCoordinatesString(Vector2 pos)
1179+
{
1180+
return $"{pos.X.ToString("0.0", CultureInfo.InvariantCulture)}, {pos.Y.ToString("0.0", CultureInfo.InvariantCulture)}";
11761181
}
11771182

11781183
private static int? GetGearsetForJob(ClassJob job)

Craftimizer/Windows/SynthHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ private void DrawMacroInfo()
392392
{
393393
var status = effect.Status();
394394
using var _reset = ImRaii.DefaultFont();
395-
ImGuiUtils.Tooltip($"{status.Name.ExtractText()}\n{status.Description.ExtractText()}");
395+
ImGuiUtils.Tooltip($"{status.Name.ExtractCleanText()}\n{status.Description.ExtractCleanText()}");
396396
}
397397
ImGui.SameLine();
398398
}

0 commit comments

Comments
 (0)