HTNSystem.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Content.Shared.NPC;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.ResourceManagement;
  4. namespace Content.Client.NPC.HTN;
  5. public sealed class HTNSystem : EntitySystem
  6. {
  7. /*
  8. * Mainly handles clientside debugging for HTN NPCs.
  9. */
  10. public bool EnableOverlay
  11. {
  12. get => _enableOverlay;
  13. set
  14. {
  15. var overlayManager = IoCManager.Resolve<IOverlayManager>();
  16. _enableOverlay = value;
  17. if (_enableOverlay)
  18. {
  19. overlayManager.AddOverlay(new HTNOverlay(EntityManager, IoCManager.Resolve<IResourceCache>()));
  20. RaiseNetworkEvent(new RequestHTNMessage()
  21. {
  22. Enabled = true,
  23. });
  24. }
  25. else
  26. {
  27. overlayManager.RemoveOverlay<HTNOverlay>();
  28. RaiseNetworkEvent(new RequestHTNMessage()
  29. {
  30. Enabled = false,
  31. });
  32. }
  33. }
  34. }
  35. private bool _enableOverlay;
  36. public override void Initialize()
  37. {
  38. base.Initialize();
  39. SubscribeNetworkEvent<HTNMessage>(OnHTNMessage);
  40. }
  41. private void OnHTNMessage(HTNMessage ev)
  42. {
  43. if (!TryComp<HTNComponent>(GetEntity(ev.Uid), out var htn))
  44. return;
  45. htn.DebugText = ev.Text;
  46. }
  47. }