From dc9f9b55eed9107bc83c65d7d383711c47ee24a1 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sun, 22 Oct 2023 07:05:48 +0100 Subject: [PATCH] ignition source refactor (#21044) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../IgnitionSource/IgniteOnTriggerSystem.cs | 16 +++++----- .../IgnitionSource/IgnitionSourceComponent.cs | 11 +++---- .../IgnitionSource/IgnitionSourceSystem.cs | 31 +++++++++---------- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs b/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs index 1e42588699..256a857864 100644 --- a/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs +++ b/Content.Server/IgnitionSource/IgniteOnTriggerSystem.cs @@ -35,21 +35,21 @@ public sealed class IgniteOnTriggerSystem : EntitySystem if (_timing.CurTime < comp.IgnitedUntil) continue; - _source.SetIgnited(uid, false, source); + _source.SetIgnited((uid, source), false); } } - private void OnTrigger(EntityUid uid, IgniteOnTriggerComponent comp, TriggerEvent args) + private void OnTrigger(Entity ent, ref TriggerEvent args) { // prevent spamming sound and ignition - TryComp(uid, out var delay); - if (_useDelay.ActiveDelay(uid, delay)) + TryComp(ent, out var delay); + if (_useDelay.ActiveDelay(ent, delay)) return; - _source.SetIgnited(uid); - _audio.PlayPvs(comp.IgniteSound, uid); + _source.SetIgnited(ent.Owner); + _audio.PlayPvs(ent.Comp.IgniteSound, ent); - _useDelay.BeginDelay(uid, delay); - comp.IgnitedUntil = _timing.CurTime + comp.IgnitedTime; + _useDelay.BeginDelay(ent, delay); + ent.Comp.IgnitedUntil = _timing.CurTime + ent.Comp.IgnitedTime; } } diff --git a/Content.Server/IgnitionSource/IgnitionSourceComponent.cs b/Content.Server/IgnitionSource/IgnitionSourceComponent.cs index d5a53c6ddb..6b6a16000f 100644 --- a/Content.Server/IgnitionSource/IgnitionSourceComponent.cs +++ b/Content.Server/IgnitionSource/IgnitionSourceComponent.cs @@ -1,15 +1,14 @@ namespace Content.Server.IgnitionSource; /// -/// This is used for... +/// This is used for creating atmosphere hotspots while ignited to start reactions such as fire. /// -[RegisterComponent] -[Access(typeof(IgnitionSourceSystem))] +[RegisterComponent, Access(typeof(IgnitionSourceSystem))] public sealed partial class IgnitionSourceComponent : Component { - [DataField("ignited")] - public bool Ignited = false; + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool Ignited; - [DataField("temperature", required: true)] + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] public int Temperature; } diff --git a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs index b70cf7a9a7..0a714063f4 100644 --- a/Content.Server/IgnitionSource/IgnitionSourceSystem.cs +++ b/Content.Server/IgnitionSource/IgnitionSourceSystem.cs @@ -7,34 +7,32 @@ namespace Content.Server.IgnitionSource; /// /// This handles ignition, Jez basically coded this. /// -/// public sealed class IgnitionSourceSystem : EntitySystem { - /// - /// - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly TransformSystem _transformSystem = default!; + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + [Dependency] private readonly TransformSystem _transform = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnIsHot); + + SubscribeLocalEvent(OnIsHot); } - private void OnIsHot(EntityUid uid, IgnitionSourceComponent component, IsHotEvent args) + private void OnIsHot(Entity ent, ref IsHotEvent args) { - SetIgnited(uid, args.IsHot, component); + SetIgnited((ent.Owner, ent.Comp), args.IsHot); } /// /// Simply sets the ignited field to the ignited param. /// - public void SetIgnited(EntityUid uid, bool ignited = true, IgnitionSourceComponent? comp = null) + public void SetIgnited(Entity ent, bool ignited = true) { - if (!Resolve(uid, ref comp)) + if (!Resolve(ent, ref ent.Comp)) return; - comp.Ignited = ignited; + ent.Comp.Ignited = ignited; } public override void Update(float frameTime) @@ -42,17 +40,16 @@ public sealed class IgnitionSourceSystem : EntitySystem base.Update(frameTime); var query = EntityQueryEnumerator(); - while (query.MoveNext(out var source, out var component, out var transform)) + while (query.MoveNext(out var uid, out var comp, out var xform)) { - if (!component.Ignited) + if (!comp.Ignited) continue; - if (transform.GridUid is { } gridUid) + if (xform.GridUid is { } gridUid) { - var position = _transformSystem.GetGridOrMapTilePosition(source, transform); - _atmosphereSystem.HotspotExpose(gridUid, position, component.Temperature, 50, source, true); + var position = _transform.GetGridOrMapTilePosition(uid, xform); + _atmosphere.HotspotExpose(gridUid, position, comp.Temperature, 50, uid, true); } } - } }