Files
ss14-wl/Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs
Pieter-Jan BriersandGitHub 5168b5f3d4 IoC source gen compatibility (#43863)
* IoC source gen compatibility

Can be merged before or after https://github.com/space-wizards/RobustToolbox/pull/6549 doesn't really matter.

* Missed a spot
2026-05-09 03:29:58 +00:00

45 lines
1.6 KiB
C#

using Content.Server.DeviceLinking.Components;
using Content.Shared.DeviceLinking.Events;
using Content.Shared.Weapons.Ranged.Components;
using Content.Shared.Weapons.Ranged.Systems;
namespace Content.Server.DeviceLinking.Systems;
public sealed partial class GunSignalControlSystem : EntitySystem
{
[Dependency] private DeviceLinkSystem _signalSystem = default!;
[Dependency] private SharedGunSystem _gun = default!;
public override void Initialize()
{
SubscribeLocalEvent<GunSignalControlComponent, MapInitEvent>(OnInit);
SubscribeLocalEvent<GunSignalControlComponent, SignalReceivedEvent>(OnSignalReceived);
}
private void OnInit(Entity<GunSignalControlComponent> gunControl, ref MapInitEvent args)
{
_signalSystem.EnsureSinkPorts(gunControl, gunControl.Comp.TriggerPort, gunControl.Comp.TogglePort, gunControl.Comp.OnPort, gunControl.Comp.OffPort);
}
private void OnSignalReceived(Entity<GunSignalControlComponent> gunControl, ref SignalReceivedEvent args)
{
if (!TryComp<GunComponent>(gunControl, out var gun))
return;
if (args.Port == gunControl.Comp.TriggerPort)
_gun.AttemptShoot((gunControl, gun));
if (!TryComp<AutoShootGunComponent>(gunControl, out var autoShoot))
return;
if (args.Port == gunControl.Comp.TogglePort)
_gun.SetEnabled((gunControl, autoShoot), !autoShoot.Enabled);
if (args.Port == gunControl.Comp.OnPort)
_gun.SetEnabled((gunControl, autoShoot), true);
if (args.Port == gunControl.Comp.OffPort)
_gun.SetEnabled((gunControl, autoShoot), false);
}
}