Merge pull request #38 from Haselnussbomber/strip-soft-hyphen
Strip soft hyphens and resolve names via SeStringEvaluator
This commit is contained in:
@@ -16,13 +16,11 @@ public static class LuminaSheets
|
||||
public static readonly ExcelSheet<ClassJob> ClassJobSheet = Module.GetSheet<ClassJob>();
|
||||
public static readonly ExcelSheet<Item> ItemSheet = Module.GetSheet<Item>();
|
||||
public static readonly ExcelSheet<Item> ItemSheetEnglish = Module.GetSheet<Item>(Language.English)!;
|
||||
public static readonly ExcelSheet<ENpcResident> ENpcResidentSheet = Module.GetSheet<ENpcResident>();
|
||||
public static readonly ExcelSheet<Level> LevelSheet = Module.GetSheet<Level>();
|
||||
public static readonly ExcelSheet<Quest> QuestSheet = Module.GetSheet<Quest>();
|
||||
public static readonly ExcelSheet<Materia> MateriaSheet = Module.GetSheet<Materia>();
|
||||
public static readonly ExcelSheet<BaseParam> BaseParamSheet = Module.GetSheet<BaseParam>();
|
||||
public static readonly ExcelSheet<ItemFood> ItemFoodSheet = Module.GetSheet<ItemFood>();
|
||||
public static readonly SubrowExcelSheet<SatisfactionSupply> SatisfactionSupplySheet = Module.GetSubrowSheet<SatisfactionSupply>();
|
||||
public static readonly ExcelSheet<WKSMissionToDoEvalutionRefin> WKSMissionToDoEvalutionRefinSheet = Module.GetSheet<WKSMissionToDoEvalutionRefin>();
|
||||
public static readonly ExcelSheet<RecipeLevelTable> RecipeLevelTableSheet = Module.GetSheet<RecipeLevelTable>();
|
||||
public static readonly ExcelSheet<GathererCrafterLvAdjustTable> GathererCrafterLvAdjustTableSheet = Module.GetSheet<GathererCrafterLvAdjustTable>();
|
||||
|
||||
@@ -9,6 +9,8 @@ using Dalamud.Storage.Assets;
|
||||
|
||||
namespace Craftimizer.Plugin;
|
||||
|
||||
#pragma warning disable SeStringEvaluator
|
||||
|
||||
public sealed class Service
|
||||
{
|
||||
#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
|
||||
[PluginService] public static IPluginLog PluginLog { get; private set; }
|
||||
[PluginService] public static IGameInteropProvider GameInteropProvider { get; private set; }
|
||||
[PluginService] public static INotificationManager NotificationManager { get; private set; }
|
||||
[PluginService] public static ISeStringEvaluator SeStringEvaluator { get; private set; }
|
||||
|
||||
public static Plugin Plugin { get; private set; }
|
||||
public static Configuration Configuration => Plugin.Configuration;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using Craftimizer.Simulator;
|
||||
using Craftimizer.Simulator.Actions;
|
||||
using Craftimizer.Solver;
|
||||
using Craftimizer.Utils;
|
||||
using Dalamud.Game.ClientState.Objects.Enums;
|
||||
using Dalamud.Game.Text;
|
||||
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
||||
using Dalamud.Interface;
|
||||
@@ -17,12 +18,12 @@ using Dalamud.Utility;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.UI;
|
||||
using FFXIVClientStructs.FFXIV.Client.System.String;
|
||||
using FFXIVClientStructs.FFXIV.Client.UI;
|
||||
using FFXIVClientStructs.FFXIV.Client.UI.Misc;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
using ImGuiNET;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Runtime.InteropServices;
|
||||
@@ -589,7 +590,7 @@ public sealed unsafe class RecipeNote : Window, IDisposable
|
||||
if (ImGui.IsItemHovered())
|
||||
ImGuiUtils.Tooltip("Open in map");
|
||||
|
||||
ImGuiUtils.TextCentered($"{questTerritory} ({questLocation.X:0.0}, {questLocation.Y:0.0})");
|
||||
ImGuiUtils.TextCentered($"{questTerritory} ({GetCoordinatesString(questLocation)})");
|
||||
}
|
||||
break;
|
||||
case CraftableStatus.WrongClassJob:
|
||||
@@ -624,13 +625,13 @@ public sealed unsafe class RecipeNote : Window, IDisposable
|
||||
if (ImGui.IsItemHovered())
|
||||
ImGuiUtils.Tooltip("Open in map");
|
||||
|
||||
ImGuiUtils.TextCentered($"{vendorTerritory} ({vendorLoation.X:0.0}, {vendorLoation.Y:0.0})");
|
||||
ImGuiUtils.TextCentered($"{vendorTerritory} ({GetCoordinatesString(vendorLoation)})");
|
||||
}
|
||||
break;
|
||||
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 +645,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,10 +1159,10 @@ 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 placeName = 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));
|
||||
return (ResolveNpcResidentName(level.Object.RowId), placeName, location, new(level.Territory.RowId, level.Map.RowId, location.X, location.Y));
|
||||
}
|
||||
|
||||
private static Vector2 WorldToMap2(Vector2 worldCoordinates, Lumina.Excel.Sheets.Map map)
|
||||
@@ -1171,8 +1172,12 @@ public sealed unsafe class RecipeNote : Window, IDisposable
|
||||
|
||||
private static string ResolveNpcResidentName(uint npcRowId)
|
||||
{
|
||||
var resident = LuminaSheets.ENpcResidentSheet.GetRow(npcRowId);
|
||||
return resident.Singular.ExtractText();
|
||||
return Service.SeStringEvaluator.EvaluateObjStr(ObjectKind.EventNpc, npcRowId);
|
||||
}
|
||||
|
||||
private static string GetCoordinatesString(Vector2 pos)
|
||||
{
|
||||
return $"{pos.X.ToString("0.0", CultureInfo.InvariantCulture)}, {pos.Y.ToString("0.0", CultureInfo.InvariantCulture)}";
|
||||
}
|
||||
|
||||
private static int? GetGearsetForJob(ClassJob job)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user