using Content.Shared.Maps;
using Robust.Shared.Prototypes;
namespace Content.Shared.Anomaly.Effects.Components;
[RegisterComponent, Access(typeof(SharedTileAnomalySystem))]
public sealed partial class TileSpawnAnomalyComponent : Component
{
///
/// All types of floors spawns with their settings
///
[DataField]
public List Entries = new();
}
[DataDefinition, Serializable]
public partial record struct TileSpawnSettingsEntry()
{
///
/// The tile that is spawned by the anomaly's effect
///
[DataField(required: true)]
public ProtoId Floor { get; set; } = default!;
///
/// The minimum number of tiles that spawn per pulse
///
[DataField]
public int MinAmount { get; set; } = 0;
///
/// The maximum number of tiles that spawn per pulse
/// scales with severity.
///
[DataField]
public int MaxAmount { get; set; } = 1;
///
/// The distance from the anomaly in which the tiles will not appear
///
[DataField]
public float MinRange { get; set; } = 0f;
///
/// The maximum radius the tiles will spawn in.
///
[DataField]
public float MaxRange { get; set; } = 1f;
///
/// Whether or not anomaly spawns tiles on Pulse
///
[DataField]
public bool SpawnOnPulse { get; set; } = false;
///
/// Whether or not anomaly spawns tiles on SuperCritical
///
[DataField]
public bool SpawnOnSuperCritical { get; set; } = false;
///
/// Whether or not anomaly spawns tiles on StabilityChanged
///
[DataField]
public bool SpawnOnStabilityChanged { get; set; } = false;
///
/// Whether or not anomaly spawns tiles on StabilityChanged
///
[DataField]
public bool SpawnOnSeverityChanged { get; set; } = false;
}