Files
tbd-station-14/Content.Shared/_Offbrand/Surgery/SharedSurgeryGuideTargetSystem.cs
Janet Blackquill 5fa17e22a1 De-MPL Offbrand
2025-09-27 22:43:24 -04:00

54 lines
1.9 KiB
C#

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<SurgeryToolComponent, GetVerbsEvent<UtilityVerb>>(OnGetVerbs);
Subs.BuiEvents<SurgeryGuideTargetComponent>(SurgeryGuideUiKey.Key,
sub =>
{
sub.Event<SurgeryGuideStartSurgeryMessage>(OnStartSurgery);
sub.Event<SurgeryGuideStartCleanupMessage>(OnStartCleanup);
});
}
private void OnGetVerbs(Entity<SurgeryToolComponent> ent, ref GetVerbsEvent<UtilityVerb> args)
{
if (!args.CanAccess || !args.CanInteract || !HasComp<SurgeryGuideTargetComponent>(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<SurgeryGuideTargetComponent> 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<SurgeryGuideTargetComponent> ent, ref SurgeryGuideStartCleanupMessage args)
{
_userInterface.CloseUi(ent.Owner, SurgeryGuideUiKey.Key, args.Actor);
_popup.PopupPredictedCursor(Loc.GetString("surgery-examine-for-instructions"), args.Actor);
}
}