2022-01-09 20:10:36 -08:00
|
|
|
using Content.Client.VendingMachines.UI;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Content.Shared.VendingMachines;
|
2021-02-11 01:13:03 -08:00
|
|
|
using Robust.Client.GameObjects;
|
|
|
|
|
using Robust.Shared.GameObjects;
|
2021-12-03 14:17:01 +01:00
|
|
|
using Robust.Shared.IoC;
|
2019-08-14 10:49:28 +02:00
|
|
|
using Robust.Shared.ViewVariables;
|
2021-06-09 22:19:39 +02:00
|
|
|
using static Content.Shared.VendingMachines.SharedVendingMachineComponent;
|
2019-08-14 10:49:28 +02:00
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
namespace Content.Client.VendingMachines
|
2019-08-14 10:49:28 +02:00
|
|
|
{
|
2022-02-16 00:23:23 -07:00
|
|
|
public sealed class VendingMachineBoundUserInterface : BoundUserInterface
|
2019-08-14 10:49:28 +02:00
|
|
|
{
|
2021-03-10 14:48:29 +01:00
|
|
|
[ViewVariables] private VendingMachineMenu? _menu;
|
2019-08-14 10:49:28 +02:00
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
public SharedVendingMachineComponent? VendingMachine { get; private set; }
|
2019-08-14 10:49:28 +02:00
|
|
|
|
|
|
|
|
public VendingMachineBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey)
|
|
|
|
|
{
|
2021-03-10 14:48:29 +01:00
|
|
|
SendMessage(new InventorySyncRequestMessage());
|
2019-08-14 10:49:28 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void Open()
|
|
|
|
|
{
|
|
|
|
|
base.Open();
|
|
|
|
|
|
2021-12-08 12:43:38 +01:00
|
|
|
var entMan = IoCManager.Resolve<IEntityManager>();
|
|
|
|
|
if (!entMan.TryGetComponent(Owner.Owner, out SharedVendingMachineComponent? vendingMachine))
|
2019-08-14 10:49:28 +02:00
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
VendingMachine = vendingMachine;
|
|
|
|
|
|
2021-12-08 12:43:38 +01:00
|
|
|
_menu = new VendingMachineMenu(this) {Title = entMan.GetComponent<MetaDataComponent>(Owner.Owner).EntityName};
|
2019-08-14 10:49:28 +02:00
|
|
|
_menu.Populate(VendingMachine.Inventory);
|
|
|
|
|
|
|
|
|
|
_menu.OnClose += Close;
|
|
|
|
|
_menu.OpenCentered();
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-09 20:10:36 -08:00
|
|
|
public void Eject(string id)
|
2019-08-14 10:49:28 +02:00
|
|
|
{
|
2022-01-09 20:10:36 -08:00
|
|
|
SendMessage(new VendingMachineEjectMessage(id));
|
2019-08-14 10:49:28 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void ReceiveMessage(BoundUserInterfaceMessage message)
|
|
|
|
|
{
|
2021-03-10 14:48:29 +01:00
|
|
|
switch (message)
|
2019-08-14 10:49:28 +02:00
|
|
|
{
|
2021-03-10 14:48:29 +01:00
|
|
|
case VendingMachineInventoryMessage msg:
|
|
|
|
|
_menu?.Populate(msg.Inventory);
|
2019-08-14 10:49:28 +02:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void Dispose(bool disposing)
|
|
|
|
|
{
|
|
|
|
|
base.Dispose(disposing);
|
2020-10-06 10:16:42 +02:00
|
|
|
if (!disposing)
|
|
|
|
|
return;
|
|
|
|
|
|
2019-08-14 10:49:28 +02:00
|
|
|
_menu?.Dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|