SharedLabelSystem.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Content.Shared.Examine;
  2. using Content.Shared.Labels.Components;
  3. using Content.Shared.NameModifier.EntitySystems;
  4. using Robust.Shared.Utility;
  5. namespace Content.Shared.Labels.EntitySystems;
  6. public abstract partial class SharedLabelSystem : EntitySystem
  7. {
  8. [Dependency] protected readonly NameModifierSystem NameMod = default!;
  9. public override void Initialize()
  10. {
  11. base.Initialize();
  12. SubscribeLocalEvent<LabelComponent, MapInitEvent>(OnLabelCompMapInit);
  13. SubscribeLocalEvent<LabelComponent, ExaminedEvent>(OnExamine);
  14. SubscribeLocalEvent<LabelComponent, RefreshNameModifiersEvent>(OnRefreshNameModifiers);
  15. }
  16. private void OnLabelCompMapInit(EntityUid uid, LabelComponent component, MapInitEvent args)
  17. {
  18. if (!string.IsNullOrEmpty(component.CurrentLabel))
  19. {
  20. component.CurrentLabel = Loc.GetString(component.CurrentLabel);
  21. Dirty(uid, component);
  22. }
  23. NameMod.RefreshNameModifiers(uid);
  24. }
  25. public virtual void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null){}
  26. private void OnExamine(EntityUid uid, LabelComponent? label, ExaminedEvent args)
  27. {
  28. if (!Resolve(uid, ref label))
  29. return;
  30. if (!label.Examinable)
  31. return;
  32. if (label.CurrentLabel == null)
  33. return;
  34. var message = new FormattedMessage();
  35. message.AddText(Loc.GetString("hand-labeler-has-label", ("label", label.CurrentLabel)));
  36. args.PushMessage(message);
  37. }
  38. private void OnRefreshNameModifiers(Entity<LabelComponent> entity, ref RefreshNameModifiersEvent args)
  39. {
  40. if (!string.IsNullOrEmpty(entity.Comp.CurrentLabel))
  41. args.AddModifier("comp-label-format", extraArgs: ("label", entity.Comp.CurrentLabel));
  42. }
  43. }