From e911c9e516dd0ccbc1ff9e4adb8e73a9b7bc87d7 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Wed, 11 Oct 2023 07:34:51 +0100 Subject: [PATCH] Rename SmokeDissipateSpawnComponent to SpawnOnDespawnComponent (#20782) --- .../SmokeDissipateSpawnComponent.cs | 16 -------------- .../Fluids/EntitySystems/SmokeSystem.cs | 11 ---------- .../Components/SpawnOnDespawnComponent.cs | 18 +++++++++++++++ .../EntitySystems/SpawnOnDespawnSystem.cs | 22 +++++++++++++++++++ .../Entities/Effects/chemistry_effects.yml | 4 ++-- 5 files changed, 42 insertions(+), 29 deletions(-) delete mode 100644 Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs create mode 100644 Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs create mode 100644 Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs diff --git a/Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs b/Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs deleted file mode 100644 index 068ac432b6..0000000000 --- a/Content.Server/Chemistry/Components/SmokeDissipateSpawnComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Server.Fluids.EntitySystems; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Chemistry.Components; - - -/// -/// When a despawns this will spawn another entity in its place. -/// -[RegisterComponent, Access(typeof(SmokeSystem))] -public sealed partial class SmokeDissipateSpawnComponent : Component -{ - [DataField("prototype", required: true, customTypeSerializer:typeof(PrototypeIdSerializer))] - public string Prototype = string.Empty; -} diff --git a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs index b3590fec40..2f62f54fd1 100644 --- a/Content.Server/Fluids/EntitySystems/SmokeSystem.cs +++ b/Content.Server/Fluids/EntitySystems/SmokeSystem.cs @@ -38,17 +38,6 @@ public sealed class SmokeSystem : EntitySystem SubscribeLocalEvent(OnSmokeUnpaused); SubscribeLocalEvent(OnReactionAttempt); SubscribeLocalEvent(OnSmokeSpread); - SubscribeLocalEvent(OnSmokeDissipate); - } - - private void OnSmokeDissipate(EntityUid uid, SmokeDissipateSpawnComponent component, ref TimedDespawnEvent args) - { - if (!TryComp(uid, out var xform)) - { - return; - } - - Spawn(component.Prototype, xform.Coordinates); } private void OnSmokeSpread(EntityUid uid, SmokeComponent component, ref SpreadNeighborsEvent args) diff --git a/Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs b/Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs new file mode 100644 index 0000000000..24b57a4b1c --- /dev/null +++ b/Content.Server/Spawners/Components/SpawnOnDespawnComponent.cs @@ -0,0 +1,18 @@ +using Content.Server.Spawners.EntitySystems; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Spawners.Components; + +/// +/// When a TimedDespawnComponent" despawns, another one will be spawned in its place. +/// +[RegisterComponent, Access(typeof(SpawnOnDespawnSystem))] +public sealed partial class SpawnOnDespawnComponent : Component +{ + /// + /// Entity prototype to spawn. + /// + [DataField(required: true)] + public EntProtoId Prototype = string.Empty; +} diff --git a/Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs b/Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs new file mode 100644 index 0000000000..77927c9bba --- /dev/null +++ b/Content.Server/Spawners/EntitySystems/SpawnOnDespawnSystem.cs @@ -0,0 +1,22 @@ +using Content.Server.Spawners.Components; +using Robust.Shared.Spawners; + +namespace Content.Server.Spawners.EntitySystems; + +public sealed class SpawnOnDespawnSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnDespawn); + } + + private void OnDespawn(EntityUid uid, SpawnOnDespawnComponent comp, ref TimedDespawnEvent args) + { + if (!TryComp(uid, out var xform)) + return; + + Spawn(comp.Prototype, xform.Coordinates); + } +} diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 10e2f1f7db..415ecd4a98 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -89,7 +89,7 @@ animationTime: 0.6 animationState: mfoam-dissolve - type: Smoke - - type: SmokeDissipateSpawn + - type: SpawnOnDespawn prototype: FoamedIronMetal - type: entity @@ -109,7 +109,7 @@ animationTime: 0.6 animationState: mfoam-dissolve - type: Smoke - - type: SmokeDissipateSpawn + - type: SpawnOnDespawn prototype: FoamedAluminiumMetal - type: entity