More DoAfter Changes (#14609)
* DoAfters * Compact Clone() * Fix mice and cuffables * Try generalize attempt events * moves climbabledoafter event to shared, fixes issue with climbable target * Fix merge (cuffing) * Make all events netserializable * handful of doafter events moved * moves the rest of the events to their respective shared folders * Changes all mentions of server doafter to shared * stop stripping cancellation * fix merge errors * draw paused doafters * handle unpausing * missing netserializable ref * removes break on stun reference * removes cuffing state reference * Fix tools * Fix door prying. * Fix construction * Fix dumping * Fix wielding assert * fix rev * Fix test * more test fixes --------- Co-authored-by: keronshb <keronshb@live.com>
This commit is contained in:
@@ -4,11 +4,13 @@ using Content.Server.Power.Components;
|
||||
using Content.Shared.Access.Components;
|
||||
using Content.Shared.Access.Systems;
|
||||
using Content.Shared.APC;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Emag.Components;
|
||||
using Content.Shared.Emag.Systems;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Power;
|
||||
using Content.Shared.Tools;
|
||||
using Content.Shared.Tools.Components;
|
||||
using JetBrains.Annotations;
|
||||
@@ -28,6 +30,7 @@ namespace Content.Server.Power.EntitySystems
|
||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
|
||||
private const float ScrewTime = 2f;
|
||||
|
||||
@@ -43,7 +46,7 @@ namespace Content.Server.Power.EntitySystems
|
||||
SubscribeLocalEvent<ApcComponent, ApcToggleMainBreakerMessage>(OnToggleMainBreaker);
|
||||
SubscribeLocalEvent<ApcComponent, GotEmaggedEvent>(OnEmagged);
|
||||
|
||||
SubscribeLocalEvent<ApcToolFinishedEvent>(OnToolFinished);
|
||||
SubscribeLocalEvent<ApcComponent, ApcToolFinishedEvent>(OnToolFinished);
|
||||
SubscribeLocalEvent<ApcComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
SubscribeLocalEvent<ApcComponent, ExaminedEvent>(OnExamine);
|
||||
|
||||
@@ -220,27 +223,21 @@ namespace Content.Server.Power.EntitySystems
|
||||
if (!EntityManager.TryGetComponent(args.Used, out ToolComponent? tool))
|
||||
return;
|
||||
|
||||
var toolEvData = new ToolEventData(new ApcToolFinishedEvent(uid), fuel: 0f);
|
||||
|
||||
if (_toolSystem.UseTool(args.Used, args.User, uid, ScrewTime, new [] { "Screwing" }, toolEvData, toolComponent:tool))
|
||||
if (_toolSystem.UseTool(args.Used, args.User, uid, ScrewTime, "Screwing", new ApcToolFinishedEvent(), toolComponent:tool))
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnToolFinished(ApcToolFinishedEvent args)
|
||||
private void OnToolFinished(EntityUid uid, ApcComponent component, ApcToolFinishedEvent args)
|
||||
{
|
||||
if (!EntityManager.TryGetComponent(args.Target, out ApcComponent? component))
|
||||
if (!args.Cancelled)
|
||||
return;
|
||||
|
||||
component.IsApcOpen = !component.IsApcOpen;
|
||||
UpdatePanelAppearance(uid, apc: component);
|
||||
|
||||
if (TryComp(args.Target, out AppearanceComponent? appearance))
|
||||
{
|
||||
UpdatePanelAppearance(args.Target, appearance);
|
||||
}
|
||||
|
||||
if (component.IsApcOpen)
|
||||
SoundSystem.Play(component.ScrewdriverOpenSound.GetSound(), Filter.Pvs(args.Target), args.Target);
|
||||
else
|
||||
SoundSystem.Play(component.ScrewdriverCloseSound.GetSound(), Filter.Pvs(args.Target), args.Target);
|
||||
// this will play on top of the normal screw driver tool sound.
|
||||
var sound = component.IsApcOpen ? component.ScrewdriverOpenSound : component.ScrewdriverCloseSound;
|
||||
_audio.PlayPvs(sound, uid);
|
||||
}
|
||||
|
||||
private void UpdatePanelAppearance(EntityUid uid, AppearanceComponent? appearance = null, ApcComponent? apc = null)
|
||||
@@ -251,16 +248,6 @@ namespace Content.Server.Power.EntitySystems
|
||||
_appearance.SetData(uid, ApcVisuals.PanelState, GetPanelState(apc), appearance);
|
||||
}
|
||||
|
||||
private sealed class ApcToolFinishedEvent : EntityEventArgs
|
||||
{
|
||||
public EntityUid Target { get; }
|
||||
|
||||
public ApcToolFinishedEvent(EntityUid target)
|
||||
{
|
||||
Target = target;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnExamine(EntityUid uid, ApcComponent component, ExaminedEvent args)
|
||||
{
|
||||
args.PushMarkup(Loc.GetString(component.IsApcOpen
|
||||
|
||||
Reference in New Issue
Block a user