HumanoidMarkingModifierBoundUserInterface.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Content.Shared.Humanoid;
  2. using Content.Shared.Humanoid.Markings;
  3. using Robust.Client.UserInterface;
  4. namespace Content.Client.Humanoid;
  5. // Marking BUI.
  6. // Do not use this in any non-privileged instance. This just replaces an entire marking set
  7. // with the set sent over.
  8. public sealed class HumanoidMarkingModifierBoundUserInterface : BoundUserInterface
  9. {
  10. [ViewVariables]
  11. private HumanoidMarkingModifierWindow? _window;
  12. public HumanoidMarkingModifierBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  13. {
  14. }
  15. protected override void Open()
  16. {
  17. base.Open();
  18. _window = this.CreateWindowCenteredLeft<HumanoidMarkingModifierWindow>();
  19. _window.OnMarkingAdded += SendMarkingSet;
  20. _window.OnMarkingRemoved += SendMarkingSet;
  21. _window.OnMarkingColorChange += SendMarkingSetNoResend;
  22. _window.OnMarkingRankChange += SendMarkingSet;
  23. _window.OnLayerInfoModified += SendBaseLayer;
  24. }
  25. protected override void UpdateState(BoundUserInterfaceState state)
  26. {
  27. base.UpdateState(state);
  28. if (_window == null || state is not HumanoidMarkingModifierState cast)
  29. {
  30. return;
  31. }
  32. _window.SetState(cast.MarkingSet, cast.Species, cast.Sex, cast.SkinColor, cast.CustomBaseLayers);
  33. }
  34. private void SendMarkingSet(MarkingSet set)
  35. {
  36. SendMessage(new HumanoidMarkingModifierMarkingSetMessage(set, true));
  37. }
  38. private void SendMarkingSetNoResend(MarkingSet set)
  39. {
  40. SendMessage(new HumanoidMarkingModifierMarkingSetMessage(set, false));
  41. }
  42. private void SendBaseLayer(HumanoidVisualLayers layer, CustomBaseLayerInfo? info)
  43. {
  44. SendMessage(new HumanoidMarkingModifierBaseLayersSetMessage(layer, info, true));
  45. }
  46. }