added world name to syncshell broadcaster info

This commit is contained in:
choco
2025-09-28 19:41:19 +02:00
parent 08e3c8678f
commit 0cc7181e98
2 changed files with 22 additions and 5 deletions

View File

@@ -1,4 +1,4 @@
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.ClientState.Objects;
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.ClientState.Objects.Types;
@@ -541,7 +541,6 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
curWaitTime += tick;
Thread.Sleep(tick);
}
Thread.Sleep(tick * 2);
}
@@ -557,6 +556,18 @@ public class DalamudUtilService : IHostedService, IMediatorSubscriber
return result;
}
public string? GetWorldNameFromPlayerAddress(nint address)
{
if (address == nint.Zero) return null;
EnsureIsOnFramework();
var playerCharacter = _objectTable.OfType<IPlayerCharacter>().FirstOrDefault(p => p.Address == address);
if (playerCharacter == null) return null;
var worldId = (ushort)playerCharacter.HomeWorld.RowId;
return WorldData.Value.TryGetValue(worldId, out var worldName) ? worldName : null;
}
private unsafe void CheckCharacterForDrawing(nint address, string characterName)
{
var gameObj = (GameObject*)address;

View File

@@ -119,13 +119,18 @@ public class SyncshellFinderUI : WindowMediatorSubscriberBase
ImGui.TextUnformatted(displayName);
ImGui.TableNextColumn();
var broadcasts = _broadcastScannerService.GetActiveSyncshellBroadcasts();
var broadcast = broadcasts.FirstOrDefault(b => string.Equals(b.GID, shell.Group.GID, StringComparison.Ordinal));
var broadcasterName = "Unknown";
var broadcast = _broadcastScannerService.GetActiveSyncshellBroadcasts()
.FirstOrDefault(b => string.Equals(b.GID, shell.Group.GID, StringComparison.Ordinal));
if (broadcast != null)
{
var playerInfo = _dalamudUtilService.FindPlayerByNameHash(broadcast.HashedCID);
broadcasterName = !string.IsNullOrEmpty(playerInfo.Name) ? playerInfo.Name : "Unknown Player";
if (!string.IsNullOrEmpty(playerInfo.Name))
{
var worldName = _dalamudUtilService.GetWorldNameFromPlayerAddress(playerInfo.Address);
broadcasterName = !string.IsNullOrEmpty(worldName) ? $"{playerInfo.Name} ({worldName})" : playerInfo.Name;
}
}
ImGui.TextUnformatted(broadcasterName);
@@ -317,4 +322,5 @@ public class SyncshellFinderUI : WindowMediatorSubscriberBase
return _nearbySyncshells[_selectedNearbyIndex].Group.GID;
}
}