fish-station/Content.Client/_Sunrise/InteractionsPanel/InteractionsUIWindowBoundUserInterface.cs
2025-07-24 21:34:39 +05:00

65 lines
1.8 KiB
C#

using System.Numerics;
using Content.Shared._Sunrise.InteractionsPanel.Data.UI;
using Robust.Client.UserInterface;
using Robust.Shared.Configuration;
namespace Content.Client._Sunrise.InteractionsPanel;
public sealed class InteractionsWindowBoundUserInterface : BoundUserInterface
{
[Dependency] private readonly IConfigurationManager _cfg = default!;
private InteractionsUIWindow? _slave;
public InteractionsWindowBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
IoCManager.InjectDependencies(this);
_slave = this.CreateWindow<InteractionsUIWindow>();
_slave.SetOwner(this);
}
protected override void Open()
{
base.Open();
var savedPosX = _cfg.GetCVar(InteractionsCVars.WindowPosX);
var savedPosY = _cfg.GetCVar(InteractionsCVars.WindowPosY);
var savedPosVector = new Vector2(savedPosX, savedPosY);
if (!savedPosVector.Equals(Vector2.Zero))
{
_slave?.Open(savedPosVector);
}
else
{
_slave?.OpenCentered();
}
}
protected override void ReceiveMessage(BoundUserInterfaceMessage message)
{
if (message is RequestSavePosAndCloseMessage save)
{
_slave?.Close();
}
}
protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);
if (state is InteractionWindowBoundUserInterfaceState interactionsState && _slave != null)
{
_slave.UpdateState(
interactionsState.UserEntity,
interactionsState.TargetEntity,
interactionsState.AvailableInteractionIds
);
}
}
public void SendBoundUserInterfaceMessage(BoundUserInterfaceMessage message)
{
SendMessage(message);
}
}