Files
crystall-punk-14/Content.Client/_CP14/IdentityRecognition/CP14IdentityRecognitionBoundUserInterface.cs
Red ad46932d11 Balance tweaks (#1741)
* disable lurker pulling

* fix pack

* fix pack

* fak pix

* vampire objective tweak

* buff vampire search

* Update air_saturation.yml

* fix

* fix

* Update EntityTest.cs

* Update EntityTest.cs

* tick

* Update EntityTest.cs

* remove forkfiltered filter

* Update EntityTest.cs
2025-09-07 14:22:30 +03:00

94 lines
2.5 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;
break;
}
}
}