Files
crystall-punk-14/Content.Client/_CP14/IdentityRecognition/CP14IdentityRecognitionBoundUserInterface.cs
Red 1eead99543 You are surrounded by unknown suspicious individuals, my lord. (#1710)
* base identity hide

* ui

* Better UI

* store data in Mind

* disable arrivals an leave announcement

* tips updated

* Enhance identity recognition and examination feedback

Added logic to display remembered character names during examination and improved the process for remembering character names on map initialization. Also updated localization files to include new examination feedback strings. Minor refactoring and bug fixes in identity recognition systems.

* Update CP14SharedIdentityRecognitionSystem.cs

* fix
2025-08-27 17:34:10 +03:00

98 lines
2.7 KiB
C#

using Content.Shared._CP14.IdentityRecognition;
using Content.Shared.Labels.Components;
using Content.Shared.Mind.Components;
using Robust.Client.Player;
using Robust.Client.UserInterface;
namespace Content.Client._CP14.IdentityRecognition;
public sealed class CP14IdentityRecognitionBoundUserInterface : BoundUserInterface
{
[Dependency] private readonly IEntityManager _entManager = default!;
[Dependency] private readonly IPlayerManager _player = default!;
[ViewVariables]
private CP14RememberNameWindow? _window;
private NetEntity? _rememberedTarget;
public CP14IdentityRecognitionBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
IoCManager.InjectDependencies(this);
}
protected override void Open()
{
base.Open();
_window = this.CreateWindow<CP14RememberNameWindow>();
if (_entManager.TryGetComponent(Owner, out HandLabelerComponent? labeler))
{
_window.SetMaxLabelLength(labeler!.MaxLabelChars);
}
_window.OnRememberedNameChanged += OnLabelChanged;
Reload();
}
private void OnLabelChanged(string newLabel)
{
if (_rememberedTarget is null)
return;
// Focus moment
var currentName = CurrentName();
if (currentName is not null && currentName.Equals(newLabel))
return;
SendPredictedMessage(new CP14RememberedNameChangedMessage(newLabel, _rememberedTarget.Value));
}
public void Reload()
{
if (_window is null)
return;
var currentName = CurrentName();
if (currentName is null)
return;
_window.SetCurrentLabel(currentName);
}
private string? CurrentName()
{
if (_rememberedTarget is null)
return null;
if (!_entManager.TryGetComponent<MindContainerComponent>(_player.LocalEntity, out var mindContainer))
return null;
if (!_entManager.TryGetComponent<CP14RememberedNamesComponent>(mindContainer.Mind, out var knownNames))
return null;
var netId = _rememberedTarget.Value.Id;
return knownNames.Names.GetValueOrDefault(netId);
}
protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);
if (_window is null)
return;
switch (state)
{
case CP14RememberNameUiState rememberNameUiState:
_rememberedTarget = rememberNameUiState.Target;
var currentName = CurrentName();
if (currentName is not null)
_window.SetCurrentLabel(currentName);
break;
}
}
}