mirror of
https://github.com/wega-team/ss14-wega.git
synced 2026-02-14 19:30:01 +01:00
64 lines
2.1 KiB
C#
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();
|
|
}
|
|
}
|