Files
tbd-station-14/Content.Client/MagicMirror/MagicMirrorBoundUserInterface.cs
metalgearsloth cbf329a82d Remove some BUI boilerplate (#28399)
* Remove some BUI boilerplate

- The disposals overrides got removed due to the helper method handling it.
- Replace window creation with CreateWindow helper.
- Fixed some stinky code which would cause exceptions.

* More

* moar

* weh

* done

* More BUIs

* More updates

* weh

* moar

* look who it is

* weh

* merge

* weh

* fixes
2024-07-20 15:40:16 +10:00

68 lines
2.3 KiB
C#

using Content.Shared.Humanoid.Markings;
using Content.Shared.MagicMirror;
using Robust.Client.GameObjects;
using Robust.Client.UserInterface;
namespace Content.Client.MagicMirror;
public sealed class MagicMirrorBoundUserInterface : BoundUserInterface
{
[ViewVariables]
private MagicMirrorWindow? _window;
public MagicMirrorBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
}
protected override void Open()
{
base.Open();
_window = this.CreateWindow<MagicMirrorWindow>();
_window.OnHairSelected += tuple => SelectHair(MagicMirrorCategory.Hair, tuple.id, tuple.slot);
_window.OnHairColorChanged += args => ChangeColor(MagicMirrorCategory.Hair, args.marking, args.slot);
_window.OnHairSlotAdded += delegate () { AddSlot(MagicMirrorCategory.Hair); };
_window.OnHairSlotRemoved += args => RemoveSlot(MagicMirrorCategory.Hair, args);
_window.OnFacialHairSelected += tuple => SelectHair(MagicMirrorCategory.FacialHair, tuple.id, tuple.slot);
_window.OnFacialHairColorChanged +=
args => ChangeColor(MagicMirrorCategory.FacialHair, args.marking, args.slot);
_window.OnFacialHairSlotAdded += delegate () { AddSlot(MagicMirrorCategory.FacialHair); };
_window.OnFacialHairSlotRemoved += args => RemoveSlot(MagicMirrorCategory.FacialHair, args);
}
private void SelectHair(MagicMirrorCategory category, string marking, int slot)
{
SendMessage(new MagicMirrorSelectMessage(category, marking, slot));
}
private void ChangeColor(MagicMirrorCategory category, Marking marking, int slot)
{
SendMessage(new MagicMirrorChangeColorMessage(category, new(marking.MarkingColors), slot));
}
private void RemoveSlot(MagicMirrorCategory category, int slot)
{
SendMessage(new MagicMirrorRemoveSlotMessage(category, slot));
}
private void AddSlot(MagicMirrorCategory category)
{
SendMessage(new MagicMirrorAddSlotMessage(category));
}
protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);
if (state is not MagicMirrorUiState data || _window == null)
{
return;
}
_window.UpdateState(data);
}
}