* Remove some BUI boilerplate - The disposals overrides got removed due to the helper method handling it. - Replace window creation with CreateWindow helper. - Fixed some stinky code which would cause exceptions. * More * moar * weh * done * More BUIs * More updates * weh * moar * look who it is * weh * merge * weh * fixes
63 lines
2.6 KiB
C#
63 lines
2.6 KiB
C#
using Content.Client.Guidebook.Components;
|
|
using Content.Shared.Chemistry;
|
|
using Content.Shared.Containers.ItemSlots;
|
|
using JetBrains.Annotations;
|
|
using Robust.Client.GameObjects;
|
|
using Robust.Client.UserInterface;
|
|
|
|
namespace Content.Client.Chemistry.UI
|
|
{
|
|
/// <summary>
|
|
/// Initializes a <see cref="ReagentDispenserWindow"/> and updates it when new server messages are received.
|
|
/// </summary>
|
|
[UsedImplicitly]
|
|
public sealed class ReagentDispenserBoundUserInterface : BoundUserInterface
|
|
{
|
|
[ViewVariables]
|
|
private ReagentDispenserWindow? _window;
|
|
|
|
public ReagentDispenserBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called each time a dispenser UI instance is opened. Generates the dispenser window and fills it with
|
|
/// relevant info. Sets the actions for static buttons.
|
|
/// <para>Buttons which can change like reagent dispense buttons have their actions set in <see cref="UpdateReagentsList"/>.</para>
|
|
/// </summary>
|
|
protected override void Open()
|
|
{
|
|
base.Open();
|
|
|
|
// Setup window layout/elements
|
|
_window = this.CreateWindow<ReagentDispenserWindow>();
|
|
_window.Title = EntMan.GetComponent<MetaDataComponent>(Owner).EntityName;
|
|
_window.HelpGuidebookIds = EntMan.GetComponent<GuideHelpComponent>(Owner).Guides;
|
|
|
|
// Setup static button actions.
|
|
_window.EjectButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent(SharedReagentDispenser.OutputSlotName));
|
|
_window.ClearButton.OnPressed += _ => SendMessage(new ReagentDispenserClearContainerSolutionMessage());
|
|
|
|
_window.AmountGrid.OnButtonPressed += s => SendMessage(new ReagentDispenserSetDispenseAmountMessage(s));
|
|
|
|
_window.OnDispenseReagentButtonPressed += (id) => SendMessage(new ReagentDispenserDispenseReagentMessage(id));
|
|
_window.OnEjectJugButtonPressed += (id) => SendMessage(new ItemSlotButtonPressedEvent(id));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Update the UI each time new state data is sent from the server.
|
|
/// </summary>
|
|
/// <param name="state">
|
|
/// Data of the <see cref="ReagentDispenserComponent"/> that this UI represents.
|
|
/// Sent from the server.
|
|
/// </param>
|
|
protected override void UpdateState(BoundUserInterfaceState state)
|
|
{
|
|
base.UpdateState(state);
|
|
|
|
var castState = (ReagentDispenserBoundUserInterfaceState) state;
|
|
_window?.UpdateState(castState); //Update window state
|
|
}
|
|
}
|
|
}
|