From 059fa9ae4825993f59b56b69c5a84285b3335cb4 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 2 Nov 2021 01:12:55 +0100 Subject: [PATCH] Gravity generator rewrite (#4828) Co-authored-by: metalgearsloth --- .../Gravity/GravityGeneratorVisualizer.cs | 25 +- .../UI/GravityGeneratorBoundUserInterface.cs | 19 +- .../Gravity/UI/GravityGeneratorWindow.xaml | 45 ++- .../Gravity/UI/GravityGeneratorWindow.xaml.cs | 65 +++- Content.Client/Stylesheets/StyleNano.cs | 47 +++ Content.Client/UserInterface/FancyWindow.xaml | 20 ++ .../UserInterface/FancyWindow.xaml.cs | 30 ++ .../Tests/Gravity/WeightlessStatusTests.cs | 23 +- .../Tests/GravityGridTest.cs | 25 +- .../EntitySystems/GravityGeneratorSystem.cs | 286 ++++++++++++++++++ .../EntitySystems/GravityShakeSystem.cs | 93 ++++++ .../Gravity/EntitySystems/GravitySystem.cs | 125 +------- .../Gravity/GravityGeneratorComponent.cs | 200 ++---------- .../Components/ApcPowerReceiverComponent.cs | 13 +- .../SharedGravityGeneratorComponent.cs | 42 ++- .../gravity/gravity-generator-component.ftl | 32 +- .../Structures/Machines/gravity_generator.yml | 10 +- 17 files changed, 739 insertions(+), 361 deletions(-) create mode 100644 Content.Client/UserInterface/FancyWindow.xaml create mode 100644 Content.Client/UserInterface/FancyWindow.xaml.cs create mode 100644 Content.Server/Gravity/EntitySystems/GravityGeneratorSystem.cs create mode 100644 Content.Server/Gravity/EntitySystems/GravityShakeSystem.cs diff --git a/Content.Client/Gravity/GravityGeneratorVisualizer.cs b/Content.Client/Gravity/GravityGeneratorVisualizer.cs index 2dffc2826b..e9e5c0766e 100644 --- a/Content.Client/Gravity/GravityGeneratorVisualizer.cs +++ b/Content.Client/Gravity/GravityGeneratorVisualizer.cs @@ -63,10 +63,31 @@ namespace Content.Client.Gravity } } - if (component.TryGetData(GravityGeneratorVisuals.CoreVisible, out bool visible)) + if (component.TryGetData(GravityGeneratorVisuals.Charge, out float charge)) { var layer = sprite.LayerMapGet(GravityGeneratorVisualLayers.Core); - sprite.LayerSetVisible(layer, visible); + switch (charge) + { + case < 0.2f: + sprite.LayerSetVisible(layer, false); + break; + case >= 0.2f and < 0.4f: + sprite.LayerSetVisible(layer, true); + sprite.LayerSetState(layer, "startup"); + break; + case >= 0.4f and < 0.6f: + sprite.LayerSetVisible(layer, true); + sprite.LayerSetState(layer, "idle"); + break; + case >= 0.6f and < 0.8f: + sprite.LayerSetVisible(layer, true); + sprite.LayerSetState(layer, "activating"); + break; + default: + sprite.LayerSetVisible(layer, true); + sprite.LayerSetState(layer, "activated"); + break; + } } } diff --git a/Content.Client/Gravity/UI/GravityGeneratorBoundUserInterface.cs b/Content.Client/Gravity/UI/GravityGeneratorBoundUserInterface.cs index 0cf77a4fc5..efef226b61 100644 --- a/Content.Client/Gravity/UI/GravityGeneratorBoundUserInterface.cs +++ b/Content.Client/Gravity/UI/GravityGeneratorBoundUserInterface.cs @@ -10,28 +10,25 @@ namespace Content.Client.Gravity.UI { private GravityGeneratorWindow? _window; - public bool IsOn; - public GravityGeneratorBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base (owner, uiKey) { - SendMessage(new SharedGravityGeneratorComponent.GeneratorStatusRequestMessage()); } protected override void Open() { base.Open(); - IsOn = false; - - _window = new GravityGeneratorWindow(this); + _window = new GravityGeneratorWindow(this, Owner); + /* _window.Switch.OnPressed += _ => { SendMessage(new SharedGravityGeneratorComponent.SwitchGeneratorMessage(!IsOn)); - SendMessage(new SharedGravityGeneratorComponent.GeneratorStatusRequestMessage()); }; + */ _window.OpenCentered(); + _window.OnClose += Close; } protected override void UpdateState(BoundUserInterfaceState state) @@ -39,8 +36,7 @@ namespace Content.Client.Gravity.UI base.UpdateState(state); var castState = (SharedGravityGeneratorComponent.GeneratorState) state; - IsOn = castState.On; - _window?.UpdateButton(); + _window?.UpdateState(castState); } protected override void Dispose(bool disposing) @@ -50,5 +46,10 @@ namespace Content.Client.Gravity.UI _window?.Dispose(); } + + public void SetPowerSwitch(bool on) + { + SendMessage(new SharedGravityGeneratorComponent.SwitchGeneratorMessage(on)); + } } } diff --git a/Content.Client/Gravity/UI/GravityGeneratorWindow.xaml b/Content.Client/Gravity/UI/GravityGeneratorWindow.xaml index 29100d72a9..2b789f3be7 100644 --- a/Content.Client/Gravity/UI/GravityGeneratorWindow.xaml +++ b/Content.Client/Gravity/UI/GravityGeneratorWindow.xaml @@ -1,14 +1,35 @@ - - - - + + + + + +