1
0

ActivatableUIRequiresAnchorSystem.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using Content.Shared.Popups;
  2. namespace Content.Shared.UserInterface;
  3. /// <summary>
  4. /// <see cref="ActivatableUIRequiresAnchorComponent"/>
  5. /// </summary>
  6. public sealed class ActivatableUIRequiresAnchorSystem : EntitySystem
  7. {
  8. [Dependency] private readonly SharedPopupSystem _popup = default!;
  9. public override void Initialize()
  10. {
  11. base.Initialize();
  12. SubscribeLocalEvent<ActivatableUIRequiresAnchorComponent, ActivatableUIOpenAttemptEvent>(OnActivatableUIOpenAttempt);
  13. SubscribeLocalEvent<ActivatableUIRequiresAnchorComponent, BoundUserInterfaceCheckRangeEvent>(OnUICheck);
  14. }
  15. private void OnUICheck(Entity<ActivatableUIRequiresAnchorComponent> ent, ref BoundUserInterfaceCheckRangeEvent args)
  16. {
  17. if (args.Result == BoundUserInterfaceRangeResult.Fail)
  18. return;
  19. if (!Transform(ent.Owner).Anchored)
  20. {
  21. args.Result = BoundUserInterfaceRangeResult.Fail;
  22. }
  23. }
  24. private void OnActivatableUIOpenAttempt(Entity<ActivatableUIRequiresAnchorComponent> ent, ref ActivatableUIOpenAttemptEvent args)
  25. {
  26. if (args.Cancelled)
  27. return;
  28. if (!Transform(ent.Owner).Anchored)
  29. {
  30. _popup.PopupClient(Loc.GetString("comp-gas-pump-ui-needs-anchor"), args.User);
  31. args.Cancel();
  32. }
  33. }
  34. }