Move some of the new singularity code into shared

Hopefully without explosions yay
This commit is contained in:
Saphire
2024-11-20 07:49:45 +06:00
parent 6e53cd98a4
commit 9c666457c2
3 changed files with 35 additions and 20 deletions

View File

@@ -1,10 +1,7 @@
using System.Diagnostics;
using Content.Server.ParticleAccelerator.Components; using Content.Server.ParticleAccelerator.Components;
using Content.Server.Popups;
using Content.Server.Singularity.Components;
using Content.Shared.Emag.Systems;
using Content.Shared.Popups; using Content.Shared.Popups;
using Content.Shared.Singularity.Components; using Content.Shared.Singularity.Components;
using Content.Shared.Singularity.EntitySystems;
using Robust.Server.GameObjects; using Robust.Server.GameObjects;
using Robust.Shared.Physics; using Robust.Shared.Physics;
using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Components;
@@ -13,7 +10,7 @@ using Robust.Shared.Timing;
namespace Content.Server.Singularity.EntitySystems; namespace Content.Server.Singularity.EntitySystems;
public sealed class SingularityGeneratorSystem : EntitySystem public sealed class SingularityGeneratorSystem : SharedSingularityGeneratorSystem
{ {
#region Dependencies #region Dependencies
[Dependency] private readonly IViewVariablesManager _vvm = default!; [Dependency] private readonly IViewVariablesManager _vvm = default!;
@@ -21,7 +18,6 @@ public sealed class SingularityGeneratorSystem : EntitySystem
[Dependency] private readonly PhysicsSystem _physics = default!; [Dependency] private readonly PhysicsSystem _physics = default!;
[Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly MetaDataSystem _metadata = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
#endregion Dependencies #endregion Dependencies
public override void Initialize() public override void Initialize()
@@ -29,7 +25,6 @@ public sealed class SingularityGeneratorSystem : EntitySystem
base.Initialize(); base.Initialize();
SubscribeLocalEvent<ParticleProjectileComponent, StartCollideEvent>(HandleParticleCollide); SubscribeLocalEvent<ParticleProjectileComponent, StartCollideEvent>(HandleParticleCollide);
SubscribeLocalEvent<SingularityGeneratorComponent, GotEmaggedEvent>(OnEmagged);
var vvHandle = _vvm.GetTypeHandler<SingularityGeneratorComponent>(); var vvHandle = _vvm.GetTypeHandler<SingularityGeneratorComponent>();
vvHandle.AddPath(nameof(SingularityGeneratorComponent.Power), (_, comp) => comp.Power, SetPower); vvHandle.AddPath(nameof(SingularityGeneratorComponent.Power), (_, comp) => comp.Power, SetPower);
@@ -138,7 +133,7 @@ public sealed class SingularityGeneratorSystem : EntitySystem
if (!contained && !generatorComp.FailsafeDisabled) if (!contained && !generatorComp.FailsafeDisabled)
{ {
generatorComp.NextFailsafe = _timing.CurTime + generatorComp.FailsafeCooldown; generatorComp.NextFailsafe = _timing.CurTime + generatorComp.FailsafeCooldown;
_popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe", ("target", args.OtherEntity)), args.OtherEntity, PopupType.LargeCaution); PopupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe", ("target", args.OtherEntity)), args.OtherEntity, PopupType.LargeCaution);
} }
else else
{ {
@@ -159,13 +154,6 @@ public sealed class SingularityGeneratorSystem : EntitySystem
EntityManager.QueueDeleteEntity(uid); EntityManager.QueueDeleteEntity(uid);
} }
private void OnEmagged(EntityUid uid, SingularityGeneratorComponent component, ref GotEmaggedEvent args)
{
_popupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe-disabled", ("target", uid)), uid);
component.FailsafeDisabled = true;
args.Handled = true;
}
#endregion Event Handlers #endregion Event Handlers
/// <summary> /// <summary>

View File

@@ -1,14 +1,12 @@
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Content.Server.Singularity.EntitySystems;
using Content.Shared.Physics; using Content.Shared.Physics;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
namespace Content.Server.Singularity.Components; namespace Content.Shared.Singularity.Components;
[RegisterComponent, AutoGenerateComponentPause] [RegisterComponent, AutoGenerateComponentPause, AutoGenerateComponentState]
[Access(typeof(SingularityGeneratorSystem))]
public sealed partial class SingularityGeneratorComponent : Component public sealed partial class SingularityGeneratorComponent : Component
{ {
/// <summary> /// <summary>
@@ -28,7 +26,7 @@ public sealed partial class SingularityGeneratorComponent : Component
/// <summary> /// <summary>
/// Allows the generator to ignore all the failsafe stuff, e.g. when emagged /// Allows the generator to ignore all the failsafe stuff, e.g. when emagged
/// </summary> /// </summary>
[DataField] [DataField, AutoNetworkedField]
public bool FailsafeDisabled = false; public bool FailsafeDisabled = false;
/// <summary> /// <summary>

View File

@@ -0,0 +1,29 @@
using Content.Shared.Emag.Systems;
using Content.Shared.Popups;
using Content.Shared.Singularity.Components;
namespace Content.Shared.Singularity.EntitySystems;
/// <summary>
/// Shared part of SingularitySingularityGeneratorSystem
/// </summary>
public abstract class SharedSingularityGeneratorSystem : EntitySystem
{
#region Dependencies
[Dependency] protected readonly SharedPopupSystem PopupSystem = default!;
#endregion Dependencies
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SingularityGeneratorComponent, GotEmaggedEvent>(OnEmagged);
}
private void OnEmagged(EntityUid uid, SingularityGeneratorComponent component, ref GotEmaggedEvent args)
{
PopupSystem.PopupEntity(Loc.GetString("comp-generator-failsafe-disabled", ("target", uid)), uid);
component.FailsafeDisabled = true;
args.Handled = true;
}
}