using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.GameObjects; namespace Content.Shared._Offbrand.Surgery; public abstract class SharedSurgeryGuideTargetSystem : EntitySystem { [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent>(OnGetVerbs); Subs.BuiEvents(SurgeryGuideUiKey.Key, sub => { sub.Event(OnStartSurgery); sub.Event(OnStartCleanup); }); } private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract || !HasComp(args.Target)) return; var @event = args; args.Verbs.Add(new UtilityVerb() { Act = () => { _userInterface.OpenUi(@event.Target, SurgeryGuideUiKey.Key, @event.User); }, Text = Loc.GetString("verb-perform-surgery"), }); } protected virtual void OnStartSurgery(Entity ent, ref SurgeryGuideStartSurgeryMessage args) { _userInterface.CloseUi(ent.Owner, SurgeryGuideUiKey.Key, args.Actor); _popup.PopupPredictedCursor(Loc.GetString("surgery-examine-for-instructions"), args.Actor); } protected virtual void OnStartCleanup(Entity ent, ref SurgeryGuideStartCleanupMessage args) { _userInterface.CloseUi(ent.Owner, SurgeryGuideUiKey.Key, args.Actor); _popup.PopupPredictedCursor(Loc.GetString("surgery-examine-for-instructions"), args.Actor); } }