using Content.Shared.GameObjects.Components.Markers; using Content.Shared.Jobs; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Markers { [RegisterComponent] [ComponentReference(typeof(SharedSpawnPointComponent))] public sealed class SpawnPointComponent : SharedSpawnPointComponent { #pragma warning disable 649 [Dependency] private IPrototypeManager _prototypeManager; #pragma warning restore 649 [ViewVariables(VVAccess.ReadWrite)] private SpawnPointType _spawnType; [ViewVariables(VVAccess.ReadWrite)] private string _jobId; public SpawnPointType SpawnType => _spawnType; public JobPrototype Job => string.IsNullOrEmpty(_jobId) ? null : _prototypeManager.Index(_jobId); public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataField(ref _spawnType, "spawn_type", SpawnPointType.Unset); serializer.DataField(ref _jobId, "job_id", null); } } public enum SpawnPointType { Unset = 0, LateJoin, Job, Observer, } }