2025-08-03 21:20:37 +02:00
|
|
|
using Content.Client.Trigger.Systems;
|
2023-05-13 14:18:33 -07:00
|
|
|
using Robust.Client.Animations;
|
|
|
|
|
using Robust.Shared.Audio;
|
|
|
|
|
|
2025-08-03 21:20:37 +02:00
|
|
|
namespace Content.Client.Trigger.Components;
|
2023-05-13 14:18:33 -07:00
|
|
|
|
|
|
|
|
[RegisterComponent]
|
|
|
|
|
[Access(typeof(TimerTriggerVisualizerSystem))]
|
2023-08-22 18:14:33 -07:00
|
|
|
public sealed partial class TimerTriggerVisualsComponent : Component
|
2023-05-13 14:18:33 -07:00
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The key used to index the priming animation.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[ViewVariables]
|
|
|
|
|
public const string AnimationKey = "priming_animation";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The RSI state used while the device has not been primed.
|
|
|
|
|
/// </summary>
|
2025-08-03 21:20:37 +02:00
|
|
|
[DataField]
|
2023-05-13 14:18:33 -07:00
|
|
|
public string UnprimedSprite = "icon";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The RSI state used when the device is primed.
|
|
|
|
|
/// Not VVWrite-able because it's only used at component init to construct the priming animation.
|
|
|
|
|
/// </summary>
|
2025-08-03 21:20:37 +02:00
|
|
|
[DataField]
|
2023-05-13 14:18:33 -07:00
|
|
|
public string PrimingSprite = "primed";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The sound played when the device is primed.
|
|
|
|
|
/// Not VVWrite-able because it's only used at component init to construct the priming animation.
|
|
|
|
|
/// </summary>
|
2025-08-03 21:20:37 +02:00
|
|
|
[DataField, ViewVariables]
|
2023-05-13 14:18:33 -07:00
|
|
|
public SoundSpecifier? PrimingSound;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// The actual priming animation.
|
|
|
|
|
/// Constructed at component init from the sprite and sound.
|
|
|
|
|
/// </summary>
|
2025-08-03 21:20:37 +02:00
|
|
|
[ViewVariables]
|
2023-05-13 14:18:33 -07:00
|
|
|
public Animation PrimingAnimation = default!;
|
|
|
|
|
}
|