1.12.X - LightFinder + Bugfixes + Other fixes from 1.11.X #39

Merged
defnotken merged 85 commits from 1.12.0 into master 2025-10-05 05:48:32 +00:00
Showing only changes of commit 597a0beb91 - Show all commits

View File

@@ -90,6 +90,10 @@ internal class ContextMenu : IHostedService
if (string.IsNullOrEmpty(target.TargetName) || target.TargetObjectId == 0 || target.TargetHomeWorld.RowId == 0)
return;
IPlayerCharacter? targetData = GetPlayerFromObjectTable(target);
if (targetData == null || targetData.Address == IntPtr.Zero)
return;
var world = GetWorld(target.TargetHomeWorld.RowId);
if (!IsWorldValid(world))
return;
@@ -100,7 +104,7 @@ internal class ContextMenu : IHostedService
PrefixChar = 'L',
UseDefaultPrefix = false,
PrefixColor = 708,
OnClicked = async _ => await HandleSelection(args)
OnClicked = async _ => await HandleSelection(args).ConfigureAwait(false)
});
}
@@ -115,11 +119,7 @@ internal class ContextMenu : IHostedService
try
{
var targetData = _objectTable
.OfType<IPlayerCharacter>()
.FirstOrDefault(p =>
string.Equals(p.Name.TextValue, target.TargetName, StringComparison.OrdinalIgnoreCase) &&
p.HomeWorld.RowId == target.TargetHomeWorld.RowId);
IPlayerCharacter? targetData = GetPlayerFromObjectTable(target);
if (targetData == null || targetData.Address == IntPtr.Zero)
{
@@ -139,6 +139,15 @@ internal class ContextMenu : IHostedService
}
}
private IPlayerCharacter? GetPlayerFromObjectTable(MenuTargetDefault target)
{
return _objectTable
.OfType<IPlayerCharacter>()
.FirstOrDefault(p =>
string.Equals(p.Name.TextValue, target.TargetName, StringComparison.OrdinalIgnoreCase) &&
p.HomeWorld.RowId == target.TargetHomeWorld.RowId);
}
private World GetWorld(uint worldId)
{
var sheet = _gameData.GetExcelSheet<World>()!;
@@ -162,6 +171,7 @@ internal class ContextMenu : IHostedService
return luminaWorlds.FirstOrDefault(x => x.RowId == worldId);
}
private static bool IsChineseJapaneseKoreanString(string text) => text.All(IsChineseJapaneseKoreanCharacter);
private static bool IsChineseJapaneseKoreanCharacter(char c) => (c >= 0x4E00 && c <= 0x9FFF);