Files
tbd-station-14/Content.Shared/Singularity/Components/SharedSingularityComponent.cs
Pancake 61da69ee74 Singulo/Radiation Tweaks (#6045)
Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
2022-01-11 17:30:17 +11:00

49 lines
1.4 KiB
C#

using System;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables;
namespace Content.Shared.Singularity.Components
{
[NetworkedComponent]
public abstract class SharedSingularityComponent : Component
{
public override string Name => "Singularity";
/// <summary>
/// The radiation pulse component's radsPerSecond is set to the singularity's level multiplied by this number.
/// </summary>
[DataField("radsPerLevel")]
public float RadsPerLevel = 1;
/// <summary>
/// Changed by <see cref="SharedSingularitySystem.ChangeSingularityLevel"/>
/// </summary>
[ViewVariables]
public int Level { get; set; }
public override void HandleComponentState(ComponentState? curState, ComponentState? nextState)
{
if (curState is not SingularityComponentState state)
{
return;
}
EntitySystem.Get<SharedSingularitySystem>().ChangeSingularityLevel(this, state.Level);
}
}
[Serializable, NetSerializable]
public sealed class SingularityComponentState : ComponentState
{
public int Level { get; }
public SingularityComponentState(int level)
{
Level = level;
}
}
}