1
0

MechMenu.xaml.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Content.Client.UserInterface.Controls;
  2. using Content.Client.UserInterface.Fragments;
  3. using Content.Shared.Mech.Components;
  4. using Robust.Client.AutoGenerated;
  5. using Robust.Client.GameObjects;
  6. using Robust.Client.UserInterface.XAML;
  7. namespace Content.Client.Mech.Ui;
  8. [GenerateTypedNameReferences]
  9. public sealed partial class MechMenu : FancyWindow
  10. {
  11. [Dependency] private readonly IEntityManager _ent = default!;
  12. private EntityUid _mech;
  13. public event Action<EntityUid>? OnRemoveButtonPressed;
  14. public MechMenu()
  15. {
  16. RobustXamlLoader.Load(this);
  17. IoCManager.InjectDependencies(this);
  18. }
  19. public void SetEntity(EntityUid uid)
  20. {
  21. MechView.SetEntity(uid);
  22. _mech = uid;
  23. }
  24. public void UpdateMechStats()
  25. {
  26. if (!_ent.TryGetComponent<MechComponent>(_mech, out var mechComp))
  27. return;
  28. var integrityPercent = mechComp.Integrity / mechComp.MaxIntegrity;
  29. IntegrityDisplayBar.Value = integrityPercent.Float();
  30. IntegrityDisplay.Text = Loc.GetString("mech-integrity-display", ("amount", (integrityPercent*100).Int()));
  31. if (mechComp.MaxEnergy != 0f)
  32. {
  33. var energyPercent = mechComp.Energy / mechComp.MaxEnergy;
  34. EnergyDisplayBar.Value = energyPercent.Float();
  35. EnergyDisplay.Text = Loc.GetString("mech-energy-display", ("amount", (energyPercent*100).Int()));
  36. }
  37. else
  38. {
  39. EnergyDisplayBar.Value = 0f;
  40. EnergyDisplay.Text = Loc.GetString("mech-energy-missing");
  41. }
  42. SlotDisplay.Text = Loc.GetString("mech-slot-display",
  43. ("amount", mechComp.MaxEquipmentAmount - mechComp.EquipmentContainer.ContainedEntities.Count));
  44. }
  45. public void UpdateEquipmentView()
  46. {
  47. if (!_ent.TryGetComponent<MechComponent>(_mech, out var mechComp))
  48. return;
  49. EquipmentControlContainer.Children.Clear();
  50. foreach (var ent in mechComp.EquipmentContainer.ContainedEntities)
  51. {
  52. if (!_ent.TryGetComponent<MetaDataComponent>(ent, out var metaData))
  53. continue;
  54. var uicomp = _ent.GetComponentOrNull<UIFragmentComponent>(ent);
  55. var ui = uicomp?.Ui?.GetUIFragmentRoot();
  56. var control = new MechEquipmentControl(ent, metaData.EntityName, ui);
  57. control.OnRemoveButtonPressed += () => OnRemoveButtonPressed?.Invoke(ent);
  58. EquipmentControlContainer.AddChild(control);
  59. }
  60. }
  61. }