2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.Message;
|
|
|
|
|
using Content.Shared.PDA;
|
2020-12-08 11:56:10 +01:00
|
|
|
using JetBrains.Annotations;
|
2021-02-11 01:13:03 -08:00
|
|
|
using Robust.Client.GameObjects;
|
2020-05-28 06:22:47 -05:00
|
|
|
using Robust.Client.UserInterface.Controls;
|
|
|
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
|
|
|
using Robust.Shared.GameObjects;
|
|
|
|
|
using Robust.Shared.IoC;
|
|
|
|
|
using Robust.Shared.Localization;
|
|
|
|
|
using Robust.Shared.Prototypes;
|
2021-07-18 18:39:31 +02:00
|
|
|
using static Robust.Client.UserInterface.Controls.BoxContainer;
|
2020-05-28 06:22:47 -05:00
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
namespace Content.Client.PDA
|
2020-05-28 06:22:47 -05:00
|
|
|
{
|
2020-12-08 11:56:10 +01:00
|
|
|
[UsedImplicitly]
|
2022-02-16 00:23:23 -07:00
|
|
|
public sealed class PDABoundUserInterface : BoundUserInterface
|
2020-05-28 06:22:47 -05:00
|
|
|
{
|
2021-03-10 14:48:29 +01:00
|
|
|
private PDAMenu? _menu;
|
2020-05-28 06:22:47 -05:00
|
|
|
|
|
|
|
|
public PDABoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void Open()
|
|
|
|
|
{
|
|
|
|
|
base.Open();
|
|
|
|
|
SendMessage(new PDARequestUpdateInterfaceMessage());
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu = new PDAMenu();
|
2020-05-28 06:22:47 -05:00
|
|
|
_menu.OpenToLeft();
|
|
|
|
|
_menu.OnClose += Close;
|
2021-03-10 14:48:29 +01:00
|
|
|
_menu.FlashLightToggleButton.OnToggled += _ =>
|
2020-05-28 06:22:47 -05:00
|
|
|
{
|
|
|
|
|
SendMessage(new PDAToggleFlashlightMessage());
|
|
|
|
|
};
|
|
|
|
|
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.EjectIdButton.OnPressed += _ =>
|
2020-05-28 06:22:47 -05:00
|
|
|
{
|
|
|
|
|
SendMessage(new PDAEjectIDMessage());
|
|
|
|
|
};
|
|
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
_menu.EjectPenButton.OnPressed += _ =>
|
2020-11-08 13:43:13 +01:00
|
|
|
{
|
|
|
|
|
SendMessage(new PDAEjectPenMessage());
|
|
|
|
|
};
|
|
|
|
|
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.ActivateUplinkButton.OnPressed += _ =>
|
2020-05-28 06:22:47 -05:00
|
|
|
{
|
2021-10-03 07:05:52 +03:00
|
|
|
SendMessage(new PDAShowUplinkMessage());
|
2020-05-28 06:22:47 -05:00
|
|
|
};
|
|
|
|
|
|
2022-03-07 14:41:50 +03:00
|
|
|
_menu.ActivateMusicButton.OnPressed += _ =>
|
|
|
|
|
{
|
|
|
|
|
SendMessage(new PDAShowMusicMessage());
|
|
|
|
|
};
|
|
|
|
|
|
2022-02-08 04:39:23 -05:00
|
|
|
_menu.AccessRingtoneButton.OnPressed += _ =>
|
|
|
|
|
{
|
|
|
|
|
SendMessage(new PDAShowRingtoneMessage());
|
|
|
|
|
};
|
|
|
|
|
|
2020-05-28 06:22:47 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void UpdateState(BoundUserInterfaceState state)
|
|
|
|
|
{
|
|
|
|
|
base.UpdateState(state);
|
2021-03-10 14:48:29 +01:00
|
|
|
|
|
|
|
|
if (_menu == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
2020-05-28 06:22:47 -05:00
|
|
|
|
|
|
|
|
switch (state)
|
|
|
|
|
{
|
|
|
|
|
case PDAUpdateState msg:
|
|
|
|
|
{
|
|
|
|
|
_menu.FlashLightToggleButton.Pressed = msg.FlashlightEnabled;
|
2021-03-10 14:48:29 +01:00
|
|
|
|
|
|
|
|
if (msg.PDAOwnerInfo.ActualOwnerName != null)
|
|
|
|
|
{
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.PdaOwnerLabel.SetMarkup(Loc.GetString("comp-pda-ui-owner",
|
2021-03-31 07:29:57 -06:00
|
|
|
("ActualOwnerName", msg.PDAOwnerInfo.ActualOwnerName)));
|
2021-03-10 14:48:29 +01:00
|
|
|
}
|
2020-05-28 06:22:47 -05:00
|
|
|
|
2021-06-21 02:13:54 +02:00
|
|
|
|
2021-03-31 07:29:57 -06:00
|
|
|
if (msg.PDAOwnerInfo.IdOwner != null || msg.PDAOwnerInfo.JobTitle != null)
|
2020-05-28 06:22:47 -05:00
|
|
|
{
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.IdInfoLabel.SetMarkup(Loc.GetString("comp-pda-ui",
|
2021-03-31 07:29:57 -06:00
|
|
|
("Owner",msg.PDAOwnerInfo.IdOwner ?? "Unknown"),
|
|
|
|
|
("JobTitle",msg.PDAOwnerInfo.JobTitle ?? "Unassigned")));
|
2020-05-28 06:22:47 -05:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.IdInfoLabel.SetMarkup(Loc.GetString("comp-pda-ui-blank"));
|
2020-05-28 06:22:47 -05:00
|
|
|
}
|
|
|
|
|
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.EjectIdButton.Visible = msg.PDAOwnerInfo.IdOwner != null || msg.PDAOwnerInfo.JobTitle != null;
|
2020-11-08 13:43:13 +01:00
|
|
|
_menu.EjectPenButton.Visible = msg.HasPen;
|
2021-10-03 07:05:52 +03:00
|
|
|
_menu.ActivateUplinkButton.Visible = msg.HasUplink;
|
2022-03-07 14:41:50 +03:00
|
|
|
_menu.ActivateMusicButton.Visible = msg.CanPlayMusic;
|
2021-03-10 14:48:29 +01:00
|
|
|
|
2020-05-28 06:22:47 -05:00
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-05 11:44:25 -05:00
|
|
|
|
2020-05-28 06:22:47 -05:00
|
|
|
protected override void Dispose(bool disposing)
|
|
|
|
|
{
|
|
|
|
|
base.Dispose(disposing);
|
2020-10-06 10:16:42 +02:00
|
|
|
if (!disposing)
|
|
|
|
|
return;
|
|
|
|
|
|
2020-05-28 06:22:47 -05:00
|
|
|
_menu?.Dispose();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|