PartStatusControl.xaml.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // SPDX-FileCopyrightText: 2024 Piras314 <p1r4s@proton.me>
  2. // SPDX-FileCopyrightText: 2024 gluesniffler <159397573+gluesniffler@users.noreply.github.com>
  3. // SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
  4. //
  5. // SPDX-License-Identifier: AGPL-3.0-or-later
  6. using Content.Shared._Shitmed.Targeting;
  7. using Robust.Client.AutoGenerated;
  8. using Robust.Client.UserInterface.Controls;
  9. using Robust.Client.UserInterface.XAML;
  10. using Robust.Shared.Utility;
  11. namespace Content.Client._Shitmed.UserInterface.Systems.PartStatus.Widgets;
  12. [GenerateTypedNameReferences]
  13. public sealed partial class PartStatusControl : UIWidget
  14. {
  15. private readonly Dictionary<TargetBodyPart, TextureRect> _partStatusControls;
  16. private readonly PartStatusUIController _controller;
  17. public PartStatusControl()
  18. {
  19. RobustXamlLoader.Load(this);
  20. _controller = UserInterfaceManager.GetUIController<PartStatusUIController>();
  21. _partStatusControls = new Dictionary<TargetBodyPart, TextureRect>
  22. {
  23. { TargetBodyPart.Head, DollHead },
  24. { TargetBodyPart.Torso, DollTorso },
  25. { TargetBodyPart.Groin, DollGroin },
  26. { TargetBodyPart.LeftArm, DollLeftArm },
  27. { TargetBodyPart.LeftHand, DollLeftHand },
  28. { TargetBodyPart.RightArm, DollRightArm },
  29. { TargetBodyPart.RightHand, DollRightHand },
  30. { TargetBodyPart.LeftLeg, DollLeftLeg },
  31. { TargetBodyPart.LeftFoot, DollLeftFoot },
  32. { TargetBodyPart.RightLeg, DollRightLeg },
  33. { TargetBodyPart.RightFoot, DollRightFoot }
  34. };
  35. }
  36. public void SetTextures(Dictionary<TargetBodyPart, TargetIntegrity> state)
  37. {
  38. foreach (var (bodyPart, integrity) in state)
  39. {
  40. string enumName = Enum.GetName(typeof(TargetBodyPart), bodyPart) ?? "Unknown";
  41. int enumValue = (int) integrity;
  42. var texture = new SpriteSpecifier.Rsi(new ResPath($"/Textures/_Shitmed/Interface/Targeting/Status/{enumName.ToLowerInvariant()}.rsi"), $"{enumName.ToLowerInvariant()}_{enumValue}");
  43. _partStatusControls[bodyPart].Texture = _controller.GetTexture(texture);
  44. }
  45. }
  46. public void SetVisible(bool visible) => this.Visible = visible;
  47. }