60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.CustomControls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Content.Shared._NF.CryoSleep.Events;
|
|
|
|
namespace Content.Client._NF.CryoSleep;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class CryosleepWakeupWindow : DefaultWindow, IEntityEventSubscriber
|
|
{
|
|
[Dependency] private readonly EntityManager _entityManager = default!;
|
|
|
|
public CryosleepWakeupWindow()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
_entityManager.EventBus.SubscribeEvent<WakeupRequestMessage.Response>(EventSource.Network, this, OnWakeupResponse);
|
|
DenyButton.OnPressed += _ => Close();
|
|
AcceptButton.OnPressed += _ => OnAccept();
|
|
}
|
|
|
|
protected override void Opened()
|
|
{
|
|
Label.SetMessage(Loc.GetString("cryo-wakeup-window-rules"));
|
|
DenyButton.Disabled = false;
|
|
AcceptButton.Disabled = false;
|
|
}
|
|
|
|
private void OnAccept()
|
|
{
|
|
var message = new WakeupRequestMessage();
|
|
_entityManager.EntityNetManager?.SendSystemNetworkMessage(message);
|
|
|
|
// Disable the buttons to make the user wait for a response
|
|
AcceptButton.Disabled = true;
|
|
DenyButton.Disabled = true;
|
|
}
|
|
|
|
private void OnWakeupResponse(WakeupRequestMessage.Response response)
|
|
{
|
|
if (response.Status == ReturnToBodyStatus.Success)
|
|
{
|
|
Close();
|
|
return;
|
|
}
|
|
|
|
// Failure
|
|
DenyButton.Disabled = false;
|
|
if (response.Status == ReturnToBodyStatus.Occupied)
|
|
Label.SetMessage(Loc.GetString("cryo-wakeup-result-occupied"));
|
|
else if (response.Status == ReturnToBodyStatus.NoCryopodAvailable)
|
|
Label.SetMessage(Loc.GetString("cryo-wakeup-result-no-cryopod"));
|
|
else if (response.Status == ReturnToBodyStatus.BodyMissing)
|
|
Label.SetMessage(Loc.GetString("cryo-wakeup-result-no-body"));
|
|
else if (response.Status == ReturnToBodyStatus.Disabled)
|
|
Label.SetMessage(Loc.GetString("cryo-wakeup-result-disabled"));
|
|
}
|
|
}
|