using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Utility;
namespace Content.Server._NF.Smuggling.Components;
///
/// Store all bounty contracts information.
///
[RegisterComponent]
[Access(typeof(DeadDropSystem))]
public sealed partial class DeadDropComponent : Component
{
///
/// The name for the deaddrop pod
///
[DataField]
public LocId Name = "deaddrop-shuttle-name";
///
/// When the next drop will occur. Used internally.
///
[DataField, ViewVariables(VVAccess.ReadOnly)]
public TimeSpan? NextDrop;
///
/// A non-nullable proxy to overwrite NextDrop
///
[ViewVariables(VVAccess.ReadWrite)]
public TimeSpan NextDropVV
{
get { return NextDrop ?? TimeSpan.Zero; }
set { NextDrop = value; }
}
///
/// Minimum wait time in seconds to wait for the next dead drop.
///
[DataField]
//Use 10 seconds for testing
public int MinimumCoolDown = 900; // 900 / 60 = 15 minutes
///
/// Max wait time in seconds to wait for the next dead drop.
///
[DataField]
//Use 15 seconds for testing
public int MaximumCoolDown = 5400; // 5400 / 60 = 90 minutes
///
/// Minimum distance to spawn the drop.
///
[DataField]
public int MinimumDistance = 4500;
///
/// Max distance to spawn the drop.
///
[DataField]
public int MaximumDistance = 6500;
///
/// The paper prototype to spawn.
///
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer))]
public string HintPaper = "PaperCargoInvoice";
///
/// Whether or not a drop pod has been called for this dead drop.
///
[DataField]
public bool DeadDropCalled = false;
///
/// Location of the grid to spawn in as the dead drop.
///
[DataField]
public ResPath DropGrid = new("/Maps/_NF/DeadDrop/deaddrop.yml");
///
/// The color of your grid. the name should be set by the mapper when mapping.
///
[DataField]
public Color Color = new(225, 15, 155);
}