]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
add fuel indicator to ame fuel jar, minor refactor (#14590)
authordeltanedas <39013340+deltanedas@users.noreply.github.com>
Sun, 12 Mar 2023 12:39:10 +0000 (12:39 +0000)
committerGitHub <noreply@github.com>
Sun, 12 Mar 2023 12:39:10 +0000 (23:39 +1100)
Co-authored-by: deltanedas <@deltanedas:kde.org>
Content.Server/AME/AMESystem.Fuel.cs [new file with mode: 0644]
Content.Server/AME/AMESystem.cs [moved from Content.Server/AME/AntimatterEngineSystem.cs with 98% similarity]
Content.Server/AME/Components/AMEFuelContainerComponent.cs
Resources/Locale/en-US/ame/components/ame-fuel-container-component.ftl [new file with mode: 0644]

diff --git a/Content.Server/AME/AMESystem.Fuel.cs b/Content.Server/AME/AMESystem.Fuel.cs
new file mode 100644 (file)
index 0000000..e2b7cd0
--- /dev/null
@@ -0,0 +1,28 @@
+using Content.Server.AME.Components;
+using Content.Shared.Examine;
+
+namespace Content.Server.AME;
+
+/// <summary>
+/// Adds fuel level info to examine on fuel jars and handles network state.
+/// </summary>
+public sealed partial class AMESystem
+{
+    private void InitializeFuel()
+    {
+        SubscribeLocalEvent<AMEFuelContainerComponent, ExaminedEvent>(OnFuelExamined);
+    }
+
+    private void OnFuelExamined(EntityUid uid, AMEFuelContainerComponent comp, ExaminedEvent args)
+    {
+        if (!args.IsInDetailsRange)
+            return;
+
+        // less than 25%: amount < capacity / 4 = amount * 4 < capacity
+        var low = comp.FuelAmount * 4 < comp.FuelCapacity;
+        args.PushMarkup(Loc.GetString("ame-fuel-container-component-on-examine-detailed-message",
+            ("colorName", low ? "darkorange" : "orange"),
+            ("amount", comp.FuelAmount),
+            ("capacity", comp.FuelCapacity)));
+    }
+}
similarity index 98%
rename from Content.Server/AME/AntimatterEngineSystem.cs
rename to Content.Server/AME/AMESystem.cs
index 3a2bec9751a21578b612ad912a258bf7fac86d8e..f2853863a1954aa3431e841b2bbfa60e4101e375 100644 (file)
@@ -16,7 +16,7 @@ using JetBrains.Annotations;
 namespace Content.Server.AME
 {
     [UsedImplicitly]
-    public sealed class AntimatterEngineSystem : EntitySystem
+    public sealed partial class AMESystem : EntitySystem
     {
         [Dependency] private readonly IMapManager _mapManager = default!;
         [Dependency] private readonly PopupSystem _popupSystem = default!;
@@ -29,9 +29,12 @@ namespace Content.Server.AME
         public override void Initialize()
         {
             base.Initialize();
+
             SubscribeLocalEvent<AMEControllerComponent, PowerChangedEvent>(OnAMEPowerChange);
             SubscribeLocalEvent<AMEControllerComponent, InteractUsingEvent>(OnInteractUsing);
             SubscribeLocalEvent<AMEPartComponent, InteractUsingEvent>(OnPartInteractUsing);
+
+            InitializeFuel();
         }
 
         public override void Update(float frameTime)
index bdebf37cd3e303abb6c583fd6a61cbfdaf42cd0d..e3ef04fb26efae6f28513032a0c6118da063035d 100644 (file)
@@ -1,37 +1,18 @@
-namespace Content.Server.AME.Components
-{
-    [RegisterComponent]
-    public sealed class AMEFuelContainerComponent : Component
-    {
-        private int _fuelAmount;
-        private int _maxFuelAmount;
-
-        /// <summary>
-        ///     The amount of fuel in the jar.
-        /// </summary>
-        [ViewVariables(VVAccess.ReadWrite)]
-        public int FuelAmount
-        {
-            get => _fuelAmount;
-            set => _fuelAmount = value;
-        }
+namespace Content.Server.AME.Components;
 
-        /// <summary>
-        ///     The maximum fuel capacity of the jar.
-        /// </summary>
-        [ViewVariables(VVAccess.ReadWrite)]
-        public int MaxFuelAmount
-        {
-            get => _maxFuelAmount;
-            set => _maxFuelAmount = value;
-        }
-
-        protected override void Initialize()
-        {
-            base.Initialize();
-            _maxFuelAmount = 1000;
-            _fuelAmount = 1000;
-        }
+// TODO: network and put in shared
+[RegisterComponent]
+public sealed class AMEFuelContainerComponent : Component
+{
+    /// <summary>
+    /// The amount of fuel in the jar.
+    /// </summary>
+    [ViewVariables(VVAccess.ReadWrite), DataField("fuelAmount")]
+    public int FuelAmount = 1000;
 
-    }
+    /// <summary>
+    /// The maximum fuel capacity of the jar.
+    /// </summary>
+    [ViewVariables(VVAccess.ReadWrite), DataField("fuelCapacity")]
+    public int FuelCapacity = 1000;
 }
diff --git a/Resources/Locale/en-US/ame/components/ame-fuel-container-component.ftl b/Resources/Locale/en-US/ame/components/ame-fuel-container-component.ftl
new file mode 100644 (file)
index 0000000..c82b086
--- /dev/null
@@ -0,0 +1 @@
+ame-fuel-container-component-on-examine-detailed-message = Fuel: [color={$colorName}]{$amount}/{$capacity}[/color]