using Content.Shared.Actions; using Content.Shared.Weapons.Ranged.Components; namespace Content.Shared.Weapons.Ranged.Systems; public sealed class ActionGunSystem : EntitySystem { [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedGunSystem _gun = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnShoot); } private void OnMapInit(Entity ent, ref MapInitEvent args) { if (string.IsNullOrEmpty(ent.Comp.Action)) return; _actions.AddAction(ent, ref ent.Comp.ActionEntity, ent.Comp.Action); ent.Comp.Gun = Spawn(ent.Comp.GunProto); } private void OnShutdown(Entity ent, ref ComponentShutdown args) { if (ent.Comp.Gun is {} gun) QueueDel(gun); } private void OnShoot(Entity ent, ref ActionGunShootEvent args) { if (TryComp(ent.Comp.Gun, out var gun)) _gun.AttemptShoot(ent, ent.Comp.Gun.Value, gun, args.Target); } }