Files
tbd-station-14/Content.Server/Interaction/Components/InteractionPopupComponent.cs
Willhelm53 cd7843028b Pettable Animals (#6530)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: mirrorcult <lunarautomaton6@gmail.com>
2022-02-13 20:20:47 -07:00

68 lines
2.6 KiB
C#

using Content.Shared.Sound;
namespace Content.Server.Interaction.Components;
[RegisterComponent, Friend(typeof(InteractionPopupSystem))]
public sealed class InteractionPopupComponent : Component
{
/// <summary>
/// Time delay between interactions to avoid spam.
/// </summary>
[DataField("interactDelay")]
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan InteractDelay = TimeSpan.FromSeconds(1.0);
/// <summary>
/// String will be used to fetch the localized message to be played if the interaction succeeds.
/// Nullable in case none is specified on the yaml prototype.
/// </summary>
[DataField("interactSuccessString")]
public string? InteractSuccessString;
/// <summary>
/// String will be used to fetch the localized message to be played if the interaction fails.
/// Nullable in case no message is specified on the yaml prototype.
/// </summary>
[DataField("interactFailureString")]
public string? InteractFailureString;
/// <summary>
/// Sound effect to be played when the interaction succeeds.
/// Nullable in case no path is specified on the yaml prototype.
/// </summary>
[DataField("interactSuccessSound")]
public SoundSpecifier? InteractSuccessSound;
/// <summary>
/// Sound effect to be played when the interaction fails.
/// Nullable in case no path is specified on the yaml prototype.
/// </summary>
[DataField("interactFailureSound")]
public SoundSpecifier? InteractFailureSound;
/// <summary>
/// Chance that an interaction attempt will succeed.
/// 1 = always play "success" popup and sound.
/// 0.5 = 50% chance to play either success or failure popup and sound.
/// 0 = always play "failure" popup and sound.
/// </summary>
[DataField("successChance")]
public float SuccessChance = 1.0f; // Always succeed, unless specified otherwise on the yaml prototype.
/// <summary>
/// Will the popup message be perceived by entities not involved in the interaction?
/// </summary>
[DataField("popupPerceivedByOthers")]
public bool PopupPerceivedByOthers = false;
/// <summary>
/// Will the sound effect be perceived by entities not involved in the interaction?
/// </summary>
[DataField("soundPerceivedByOthers")]
public bool SoundPerceivedByOthers = true;
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan LastInteractTime;
}