]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Adding an AccessReader to a particle accelerator with engineering access (#30394)
authorchavonadelal <156101927+chavonadelal@users.noreply.github.com>
Tue, 30 Jul 2024 11:29:32 +0000 (14:29 +0300)
committerGitHub <noreply@github.com>
Tue, 30 Jul 2024 11:29:32 +0000 (14:29 +0300)
Adding an AccessReader to a particle accelerator

Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.xaml.cs
Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml

index 9c2b51dcaed39249345c0f1e63c3278ddcfb0c29..8b21e7d94bd5bfdf0151db480e770d23d75bee48 100644 (file)
@@ -3,6 +3,7 @@ using Content.Client.Message;
 using Content.Client.Resources;
 using Content.Client.UserInterface.Controls;
 using Content.Shared.Singularity.Components;
+using Content.Shared.Access.Systems;
 using Robust.Client.Animations;
 using Robust.Client.AutoGenerated;
 using Robust.Client.Graphics;
@@ -13,6 +14,7 @@ using Robust.Client.UserInterface.XAML;
 using Robust.Shared.Noise;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Timing;
+using Robust.Client.Player;
 
 namespace Content.Client.ParticleAccelerator.UI;
 
@@ -21,6 +23,11 @@ public sealed partial class ParticleAcceleratorControlMenu : FancyWindow
 {
     [Dependency] private readonly IResourceCache _cache = default!;
 
+    [Dependency] private readonly IEntityManager _entityManager = default!;
+    [Dependency] private readonly IPlayerManager _player = default!;
+
+    private readonly AccessReaderSystem _accessReader;
+
     private readonly FastNoiseLite _drawNoiseGenerator;
 
     private readonly Animation _alarmControlAnimation;
@@ -44,6 +51,7 @@ public sealed partial class ParticleAcceleratorControlMenu : FancyWindow
         RobustXamlLoader.Load(this);
         IoCManager.InjectDependencies(this);
 
+        _accessReader = _entityManager.System<AccessReaderSystem>();
         _drawNoiseGenerator = new();
         _drawNoiseGenerator.SetFractalType(FastNoiseLite.FractalType.FBm);
         _drawNoiseGenerator.SetFrequency(0.5f);
@@ -150,7 +158,7 @@ public sealed partial class ParticleAcceleratorControlMenu : FancyWindow
 
     private bool StrengthSpinBoxValid(int n)
     {
-        return n >= 0 && n <= _maxStrength ;
+        return n >= 0 && n <= _maxStrength;
     }
 
     protected override DragMode GetDragModeFor(Vector2 relativeMousePos)
@@ -201,13 +209,16 @@ public sealed partial class ParticleAcceleratorControlMenu : FancyWindow
 
     private void UpdateUI(bool assembled, bool blocked, bool enabled, bool powerBlock)
     {
+        bool hasAccess = _player.LocalSession?.AttachedEntity is {} player
+            && _accessReader.IsAllowed(player, _entity);
+
         OnButton.Pressed = enabled;
         OffButton.Pressed = !enabled;
 
-        var cantUse = !assembled || blocked || powerBlock;
+        var cantUse = !assembled || blocked || powerBlock || !hasAccess;
         OnButton.Disabled = cantUse;
         OffButton.Disabled = cantUse;
-        ScanButton.Disabled = blocked;
+        ScanButton.Disabled = blocked || !hasAccess;
 
         var cantChangeLevel = !assembled || blocked || !enabled || cantUse;
         StateSpinBox.SetButtonDisabled(cantChangeLevel);
index 96392ecd0050071aa0894d733ff8d9f4c709c17d..ae3fc9677429f68b09f2dd64e72af0f277f6b166 100644 (file)
@@ -25,6 +25,8 @@
   - type: Wires
     boardName: wires-board-name-pa
     layoutId: ParticleAccelerator
+  - type: AccessReader
+    access: [["Engineering"]]
 
 # Unfinished