DetailExaminableystem.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Content.Shared.Examine;
  2. using Content.Shared.IdentityManagement;
  3. using Content.Shared.Verbs;
  4. using Robust.Shared.Utility;
  5. namespace Content.Shared.DetailExaminable;
  6. public sealed class DetailExaminableSystem : EntitySystem
  7. {
  8. [Dependency] private readonly ExamineSystemShared _examine = default!;
  9. public override void Initialize()
  10. {
  11. base.Initialize();
  12. SubscribeLocalEvent<DetailExaminableComponent, GetVerbsEvent<ExamineVerb>>(OnGetExamineVerbs);
  13. }
  14. private void OnGetExamineVerbs(Entity<DetailExaminableComponent> ent, ref GetVerbsEvent<ExamineVerb> args)
  15. {
  16. if (Identity.Name(args.Target, EntityManager) != MetaData(args.Target).EntityName)
  17. return;
  18. var detailsRange = _examine.IsInDetailsRange(args.User, ent);
  19. var user = args.User;
  20. var verb = new ExamineVerb
  21. {
  22. Act = () =>
  23. {
  24. var markup = new FormattedMessage();
  25. markup.AddMarkupPermissive(ent.Comp.Content);
  26. _examine.SendExamineTooltip(user, ent, markup, false, false);
  27. },
  28. Text = Loc.GetString("detail-examinable-verb-text"),
  29. Category = VerbCategory.Examine,
  30. Disabled = !detailsRange,
  31. Message = detailsRange ? null : Loc.GetString("detail-examinable-verb-disabled"),
  32. Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/examine.svg.192dpi.png"))
  33. };
  34. args.Verbs.Add(verb);
  35. }
  36. }