1
0

FillGasWindow.xaml.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Content.Client.Atmos.EntitySystems;
  4. using Content.Shared.Atmos.Prototypes;
  5. using JetBrains.Annotations;
  6. using Robust.Client.AutoGenerated;
  7. using Robust.Client.Console;
  8. using Robust.Client.Player;
  9. using Robust.Client.UserInterface.Controls;
  10. using Robust.Client.UserInterface.CustomControls;
  11. using Robust.Shared.GameObjects;
  12. using Robust.Shared.IoC;
  13. using Robust.Shared.Map;
  14. using Robust.Shared.Map.Components;
  15. namespace Content.Client.Administration.UI.Tabs.AtmosTab
  16. {
  17. [GenerateTypedNameReferences]
  18. [UsedImplicitly]
  19. public sealed partial class FillGasWindow : DefaultWindow
  20. {
  21. private List<NetEntity>? _gridData;
  22. private IEnumerable<GasPrototype>? _gasData;
  23. protected override void EnteredTree()
  24. {
  25. // Fill out grids
  26. var entManager = IoCManager.Resolve<IEntityManager>();
  27. var playerManager = IoCManager.Resolve<IPlayerManager>();
  28. var gridQuery = entManager.AllEntityQueryEnumerator<MapGridComponent>();
  29. _gridData ??= new List<NetEntity>();
  30. _gridData.Clear();
  31. while (gridQuery.MoveNext(out var uid, out _))
  32. {
  33. var player = playerManager.LocalEntity;
  34. var playerGrid = entManager.GetComponentOrNull<TransformComponent>(player)?.GridUid;
  35. GridOptions.AddItem($"{uid} {(playerGrid == uid ? Loc.GetString($"admin-ui-atmos-grid-current") : "")}");
  36. _gridData.Add(entManager.GetNetEntity(uid));
  37. }
  38. GridOptions.OnItemSelected += eventArgs => GridOptions.SelectId(eventArgs.Id);
  39. // Fill out gases
  40. _gasData = entManager.System<AtmosphereSystem>().Gases;
  41. foreach (var gas in _gasData)
  42. {
  43. var gasName = Loc.GetString(gas.Name);
  44. GasOptions.AddItem($"{gasName} ({gas.ID})");
  45. }
  46. GasOptions.OnItemSelected += eventArgs => GasOptions.SelectId(eventArgs.Id);
  47. SubmitButton.OnPressed += SubmitButtonOnOnPressed;
  48. }
  49. private void SubmitButtonOnOnPressed(BaseButton.ButtonEventArgs obj)
  50. {
  51. if (_gridData == null || _gasData == null)
  52. return;
  53. var gridIndex = _gridData[GridOptions.SelectedId];
  54. var gasList = _gasData.ToList();
  55. var gasId = gasList[GasOptions.SelectedId].ID;
  56. IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
  57. $"fillgas {gridIndex} {gasId} {AmountSpin.Value}");
  58. }
  59. }
  60. }