Files
ss14-wega/Content.Client/_Wega/Genetics/Ui/MindCommunicationPanel.cs
Zekins 603098e292 Чистка сборки (#237)
* buildcleanup

* resourcescleanup

* fixlinter

* fixlinter2

* final
2025-11-03 23:52:18 +03:00

64 lines
2.1 KiB
C#

using System.Numerics;
using Content.Shared.Genetics;
using Content.Shared.Humanoid;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Player;
namespace Content.Client._Wega.Genetics.Ui;
[GenerateTypedNameReferences]
public sealed partial class MindCommunicationPanel : DefaultWindow
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IEntityNetworkManager _entityNetworkManager = default!;
[Dependency] private readonly ISharedPlayerManager _playerManager = default!;
public MindCommunicationPanel()
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
InitializeTargets();
}
private void InitializeTargets()
{
var actorQuery = _entityManager.EntityQueryEnumerator<ActorComponent, MetaDataComponent, HumanoidAppearanceComponent>();
while (actorQuery.MoveNext(out var uid, out _, out var metaData, out _))
{
var entityName = metaData.EntityName;
AddTargetButton(entityName, uid);
}
}
private void AddTargetButton(string targetName, EntityUid targetUid)
{
var button = new Button
{
Text = targetName,
HorizontalAlignment = HAlignment.Center,
VerticalAlignment = VAlignment.Center,
MinSize = new Vector2(300, 32),
MaxSize = new Vector2(300, 32)
};
button.OnPressed += _ => HandleTargetSelection(targetUid);
TargetsContainer.AddChild(button);
}
private void HandleTargetSelection(EntityUid targetUid)
{
var netTargetEntity = _entityManager.GetNetEntity(targetUid);
var netEntity = _entityManager.GetNetEntity(_playerManager.LocalSession?.AttachedEntity ?? EntityUid.Invalid);
_entityNetworkManager.SendSystemNetworkMessage(
new MindCommunicationTargetSelectedEvent(netEntity, netTargetEntity));
Close();
}
}