63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using System.Diagnostics;
|
|
using Content.Client.Computer;
|
|
using Content.Client.UserInterface.Controls;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Shared.Timing;
|
|
using Robust.Client.Graphics;
|
|
using Content.Client.Stylesheets;
|
|
using Content.Client.Salvage.UI;
|
|
using Content.Client.Trigger.Systems;
|
|
|
|
namespace Content.Client._DV.Salvage.UI;
|
|
|
|
/// <summary>
|
|
/// Variant of OfferingWindow featuring early release button.
|
|
/// </summary>
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class MagnetOfferingWindow : OfferingWindow
|
|
{
|
|
public TimeSpan Duration;
|
|
public float ReleaseTime;
|
|
|
|
private readonly MagnetOfferingWindowReleaseButton _releaseButton;
|
|
|
|
public MagnetOfferingWindow()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
IoCManager.InjectDependencies(this);
|
|
|
|
ProgressionBar.ForegroundStyleBoxOverride = new StyleBoxFlat(Color.FromHex("#C74EBD"));
|
|
|
|
_releaseButton = new MagnetOfferingWindowReleaseButton();
|
|
ProgressionControls.AddChild(_releaseButton);
|
|
ProgressionControls.HorizontalExpand = true;
|
|
ProgressionControls.SizeFlagsStretchRatio = 20;
|
|
}
|
|
|
|
protected override void FrameUpdate(FrameEventArgs args)
|
|
{
|
|
base.FrameUpdate(args);
|
|
|
|
if (Claimed && _progression != null)
|
|
{
|
|
var remaining = _progression.Value - _timing.CurTime;
|
|
|
|
if (remaining.TotalSeconds > Duration.TotalSeconds - 3)
|
|
_releaseButton.State = MagnetOfferingWindowReleaseButton.ButtonState.Enabling;
|
|
else if (remaining.TotalSeconds > ReleaseTime)
|
|
_releaseButton.State = MagnetOfferingWindowReleaseButton.ButtonState.Enabled;
|
|
else
|
|
_releaseButton.State = MagnetOfferingWindowReleaseButton.ButtonState.InProgress;
|
|
}
|
|
else
|
|
_releaseButton.State = MagnetOfferingWindowReleaseButton.ButtonState.Disabled;
|
|
}
|
|
|
|
public void SetButtonPressed(Action<BaseButton.ButtonEventArgs>? releasePressed)
|
|
{
|
|
_releaseButton.ReleasePressed += releasePressed;
|
|
}
|
|
}
|