1
0

HTNOverlay.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System.Numerics;
  2. using Robust.Client.Graphics;
  3. using Robust.Client.ResourceManagement;
  4. using Robust.Shared.Enums;
  5. namespace Content.Client.NPC.HTN;
  6. public sealed class HTNOverlay : Overlay
  7. {
  8. private readonly IEntityManager _entManager = default!;
  9. private readonly Font _font = default!;
  10. private readonly SharedTransformSystem _transformSystem;
  11. public override OverlaySpace Space => OverlaySpace.ScreenSpace;
  12. public HTNOverlay(IEntityManager entManager, IResourceCache resourceCache)
  13. {
  14. _entManager = entManager;
  15. _font = new VectorFont(resourceCache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10);
  16. _transformSystem = _entManager.System<SharedTransformSystem>();
  17. }
  18. protected override void Draw(in OverlayDrawArgs args)
  19. {
  20. if (args.ViewportControl == null)
  21. return;
  22. var handle = args.ScreenHandle;
  23. foreach (var (comp, xform) in _entManager.EntityQuery<HTNComponent, TransformComponent>(true))
  24. {
  25. if (string.IsNullOrEmpty(comp.DebugText) || xform.MapID != args.MapId)
  26. continue;
  27. var worldPos = _transformSystem.GetWorldPosition(xform);
  28. if (!args.WorldAABB.Contains(worldPos))
  29. continue;
  30. var screenPos = args.ViewportControl.WorldToScreen(worldPos);
  31. handle.DrawString(_font, screenPos + new Vector2(0, 10f), comp.DebugText, Color.White);
  32. }
  33. }
  34. }