| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using Content.Client.UserInterface.Fragments;
- using Content.Shared.Mech;
- using Content.Shared.Mech.Components;
- using JetBrains.Annotations;
- using Robust.Client.GameObjects;
- using Robust.Client.UserInterface;
- namespace Content.Client.Mech.Ui;
- [UsedImplicitly]
- public sealed class MechBoundUserInterface : BoundUserInterface
- {
- [ViewVariables]
- private MechMenu? _menu;
- public MechBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
- {
- }
- protected override void Open()
- {
- base.Open();
- _menu = this.CreateWindowCenteredLeft<MechMenu>();
- _menu.SetEntity(Owner);
- _menu.OnRemoveButtonPressed += uid =>
- {
- SendMessage(new MechEquipmentRemoveMessage(EntMan.GetNetEntity(uid)));
- };
- }
- protected override void UpdateState(BoundUserInterfaceState state)
- {
- base.UpdateState(state);
- if (state is not MechBoundUiState msg)
- return;
- UpdateEquipmentControls(msg);
- _menu?.UpdateMechStats();
- _menu?.UpdateEquipmentView();
- }
- public void UpdateEquipmentControls(MechBoundUiState state)
- {
- if (!EntMan.TryGetComponent<MechComponent>(Owner, out var mechComp))
- return;
- foreach (var ent in mechComp.EquipmentContainer.ContainedEntities)
- {
- var ui = GetEquipmentUi(ent);
- if (ui == null)
- continue;
- foreach (var (attached, estate) in state.EquipmentStates)
- {
- if (ent == EntMan.GetEntity(attached))
- ui.UpdateState(estate);
- }
- }
- }
- public UIFragment? GetEquipmentUi(EntityUid? uid)
- {
- var component = EntMan.GetComponentOrNull<UIFragmentComponent>(uid);
- component?.Ui?.Setup(this, uid);
- return component?.Ui;
- }
- }
|