6
2025-11-07 12:32:48 +03:00

82 lines
2.2 KiB
C#

using Robust.Shared.Serialization;
using Robust.Shared.Audio;
namespace Content.Shared.Paper;
/// <summary>
/// Set of required information to draw a stamp in UIs, where
/// representing the state of the stamp at the point in time
/// when it was applied to a paper. These fields mirror the
/// equivalent in the component.
/// </summary>
[DataDefinition, Serializable, NetSerializable]
public partial struct StampDisplayInfo
{
StampDisplayInfo(string s)
{
StampedName = s;
}
[DataField("stampedName")]
public string StampedName;
[DataField("stampedColor")]
public Color StampedColor;
[DataField("stampType")]
public StampType Type = StampType.RubberStamp;
[DataField("reapply")] // Frontier: allow reapplying stamps
public bool Reapply = false; // Frontier: allow reapplying stamps
};
// FRONTIER - Stamp types, put it into an enum for modularity purposes.
public enum StampType
{
RubberStamp,
Signature
}
[RegisterComponent]
public sealed partial class StampComponent : Component
{
/// <summary>
/// The loc string name that will be stamped to the piece of paper on examine.
/// </summary>
[DataField("stampedName")]
public string StampedName { get; set; } = "stamp-component-stamped-name-default";
/// <summary>
/// The sprite state of the stamp to display on the paper from paper Sprite path.
/// </summary>
[DataField("stampState")]
public string StampState { get; set; } = "paper_stamp-generic";
/// <summary>
/// The color of the ink used by the stamp in UIs
/// </summary>
[DataField("stampedColor")]
public Color StampedColor = Color.FromHex("#BB3232"); // StyleNano.DangerousRedFore
/// <summary>
/// The sound when stamp stamped
/// </summary>
[DataField("sound")]
public SoundSpecifier? Sound = null;
// Frontier: allow reapplying stamps, protected stamps
/// <summary>
/// Whether or not a stamp can be reapplied
/// </summary>
[DataField("reapply")]
public bool Reapply { get; set; } = false;
/// <summary>
/// When true, stamped papers are marked as protected
/// </summary>
[DataField]
public bool Protected = false;
// End Frontier
}