ShowHealthBarsCommand.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Content.Shared.Damage.Prototypes;
  2. using Content.Shared.Overlays;
  3. using Robust.Client.Player;
  4. using Robust.Shared.Console;
  5. using Robust.Shared.Prototypes;
  6. using System.Linq;
  7. namespace Content.Client.Commands;
  8. public sealed class ShowHealthBarsCommand : LocalizedCommands
  9. {
  10. [Dependency] private readonly IPlayerManager _playerManager = default!;
  11. [Dependency] private readonly IEntityManager _entityManager = default!;
  12. public override string Command => "showhealthbars";
  13. public override string Help => LocalizationManager.GetString($"cmd-{Command}-help", ("command", Command));
  14. public override void Execute(IConsoleShell shell, string argStr, string[] args)
  15. {
  16. var player = _playerManager.LocalSession;
  17. if (player == null)
  18. {
  19. shell.WriteError(LocalizationManager.GetString($"cmd-{Command}-error-not-player"));
  20. return;
  21. }
  22. var playerEntity = player?.AttachedEntity;
  23. if (!playerEntity.HasValue)
  24. {
  25. shell.WriteError(LocalizationManager.GetString($"cmd-{Command}-error-no-entity"));
  26. return;
  27. }
  28. if (!_entityManager.HasComponent<ShowHealthBarsComponent>(playerEntity))
  29. {
  30. var showHealthBarsComponent = new ShowHealthBarsComponent
  31. {
  32. DamageContainers = args.Select(arg => new ProtoId<DamageContainerPrototype>(arg)).ToList(),
  33. HealthStatusIcon = null,
  34. NetSyncEnabled = false
  35. };
  36. _entityManager.AddComponent(playerEntity.Value, showHealthBarsComponent, true);
  37. shell.WriteLine(LocalizationManager.GetString($"cmd-{Command}-notify-enabled", ("args", string.Join(", ", args))));
  38. return;
  39. }
  40. else
  41. {
  42. _entityManager.RemoveComponentDeferred<ShowHealthBarsComponent>(playerEntity.Value);
  43. shell.WriteLine(LocalizationManager.GetString($"cmd-{Command}-notify-disabled"));
  44. }
  45. return;
  46. }
  47. }