using Content.Shared.Disposal.Components;
using JetBrains.Annotations;
using Robust.Client.UserInterface;
using System.Collections.Generic;
namespace Content.Client.Disposal.Router
{
///
/// Initializes a and updates it when new server messages are received.
///
[UsedImplicitly]
public sealed class DisposalRouterBoundUserInterface : BoundUserInterface
{
private DisposalRouterWindow? _window;
private const int TagLimit = 150;
public DisposalRouterBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
}
protected override void Open()
{
base.Open();
_window = this.CreateWindow();
_window.Confirm.OnPressed += _ => AcceptButtonPressed(_window.TagInput.Text);
_window.TagInput.OnTextEntered += args => AcceptButtonPressed(args.Text);
if (EntMan.TryGetComponent(Owner, out var router) &&
router.Tags.Count > 0)
{
_window.TagInput.Text = string.Join(",", router.Tags);
}
}
private void AcceptButtonPressed(string tag)
{
SendMessage(new DisposalRouterUiActionMessage(tag, TagLimit));
Close();
}
protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);
if (state is not DisposalRouterUserInterfaceState cast)
{
return;
}
_window?.UpdateState(cast);
}
}
}