using System; using Robust.Shared.GameObjects; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components { public abstract class SharedRadiationPulseComponent : Component { public override string Name => "RadiationPulse"; public override uint? NetID => ContentNetIDs.RADIATION_PULSE; public virtual float RadsPerSecond { get; set; } /// /// Radius of the pulse from its position /// public virtual float Range { get; set; } public virtual bool Decay { get; set; } public virtual bool Draw { get; set; } public virtual TimeSpan EndTime { get; } } /// /// For syncing the pulse's lifespan between client and server for the overlay /// [Serializable, NetSerializable] public class RadiationPulseState : ComponentState { public readonly float RadsPerSecond; public readonly float Range; public readonly bool Draw; public readonly bool Decay; public readonly TimeSpan EndTime; public RadiationPulseState(float radsPerSecond, float range, bool draw, bool decay, TimeSpan endTime) : base(ContentNetIDs.RADIATION_PULSE) { RadsPerSecond = radsPerSecond; Range = range; Draw = draw; Decay = decay; EndTime = endTime; } } }