From ce794c4dacb48a8d0fffb12d039c1a0e971975cb Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sun, 19 Jan 2020 18:29:49 +0100 Subject: [PATCH] Move access levels to prototypes. Also adds captain & ID computer access levels. Fixes ID computer not saving access changes correctly. --- .../Access/IdCardConsoleBoundUserInterface.cs | 4 +++- .../Components/Access/IdCardConsoleWindow.cs | 12 +++++++----- .../Components/Access/IdCardConsoleComponent.cs | 5 +++-- Content.Shared/Access/SharedAccess.cs | 16 ---------------- Resources/Prototypes/AccessLevels/Cargo.yml | 2 ++ Resources/Prototypes/AccessLevels/Command.yml | 9 +++++++++ .../Prototypes/AccessLevels/Engineering.yml | 2 ++ .../Prototypes/AccessLevels/Maintenance.yml | 2 ++ Resources/Prototypes/AccessLevels/Medical.yml | 2 ++ Resources/Prototypes/AccessLevels/Research.yml | 2 ++ Resources/Prototypes/AccessLevels/Security.yml | 2 ++ Resources/Prototypes/AccessLevels/Service.yml | 2 ++ .../Prototypes/Entities/buildings/computers.yml | 2 +- 13 files changed, 37 insertions(+), 25 deletions(-) delete mode 100644 Content.Shared/Access/SharedAccess.cs create mode 100644 Resources/Prototypes/AccessLevels/Cargo.yml create mode 100644 Resources/Prototypes/AccessLevels/Command.yml create mode 100644 Resources/Prototypes/AccessLevels/Engineering.yml create mode 100644 Resources/Prototypes/AccessLevels/Maintenance.yml create mode 100644 Resources/Prototypes/AccessLevels/Medical.yml create mode 100644 Resources/Prototypes/AccessLevels/Research.yml create mode 100644 Resources/Prototypes/AccessLevels/Security.yml create mode 100644 Resources/Prototypes/AccessLevels/Service.yml diff --git a/Content.Client/GameObjects/Components/Access/IdCardConsoleBoundUserInterface.cs b/Content.Client/GameObjects/Components/Access/IdCardConsoleBoundUserInterface.cs index 9efddf6230..9df2ab0d16 100644 --- a/Content.Client/GameObjects/Components/Access/IdCardConsoleBoundUserInterface.cs +++ b/Content.Client/GameObjects/Components/Access/IdCardConsoleBoundUserInterface.cs @@ -3,6 +3,7 @@ using Robust.Client.GameObjects.Components.UserInterface; using Robust.Shared.GameObjects.Components.UserInterface; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Prototypes; using static Content.Shared.GameObjects.Components.Access.SharedIdCardConsoleComponent; namespace Content.Client.GameObjects.Components.Access @@ -11,6 +12,7 @@ namespace Content.Client.GameObjects.Components.Access { #pragma warning disable 649 [Dependency] private readonly ILocalizationManager _localizationManager; + [Dependency] private readonly IPrototypeManager _prototypeManager; #pragma warning restore 649 public IdCardConsoleBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey) { @@ -22,7 +24,7 @@ namespace Content.Client.GameObjects.Components.Access { base.Open(); - _window = new IdCardConsoleWindow(this, _localizationManager); + _window = new IdCardConsoleWindow(this, _localizationManager, _prototypeManager); _window.Title = Owner.Owner.Name; _window.OnClose += Close; _window.OpenCentered(); diff --git a/Content.Client/GameObjects/Components/Access/IdCardConsoleWindow.cs b/Content.Client/GameObjects/Components/Access/IdCardConsoleWindow.cs index 39418747ba..370ff786ba 100644 --- a/Content.Client/GameObjects/Components/Access/IdCardConsoleWindow.cs +++ b/Content.Client/GameObjects/Components/Access/IdCardConsoleWindow.cs @@ -9,6 +9,7 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Localization; using Robust.Shared.Maths; +using Robust.Shared.Prototypes; using static Content.Shared.GameObjects.Components.Access.SharedIdCardConsoleComponent; namespace Content.Client.GameObjects.Components.Access @@ -40,7 +41,7 @@ namespace Content.Client.GameObjects.Components.Access protected override Vector2? CustomSize => (650, 270); - public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, ILocalizationManager loc) + public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, ILocalizationManager loc, IPrototypeManager prototypeManager) { _loc = loc; _owner = owner; @@ -126,20 +127,21 @@ namespace Content.Client.GameObjects.Components.Access { var grid = new GridContainer { - Columns = 4, + Columns = 5, SizeFlagsHorizontal = SizeFlags.ShrinkCenter }; vBox.AddChild(grid); - foreach (var accessName in SharedAccess.AllAccess) + foreach (var accessLevel in prototypeManager.EnumeratePrototypes()) { var newButton = new Button { - Text = accessName, + Text = accessLevel.Name, ToggleMode = true, }; grid.AddChild(newButton); - _accessButtons.Add(accessName, newButton); + _accessButtons.Add(accessLevel.ID, newButton); + newButton.OnPressed += _ => SubmitData(); } } diff --git a/Content.Server/GameObjects/Components/Access/IdCardConsoleComponent.cs b/Content.Server/GameObjects/Components/Access/IdCardConsoleComponent.cs index 08bf51f017..a3436adcce 100644 --- a/Content.Server/GameObjects/Components/Access/IdCardConsoleComponent.cs +++ b/Content.Server/GameObjects/Components/Access/IdCardConsoleComponent.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using Content.Server.GameObjects.EntitySystems; using Content.Server.Interfaces; using Content.Server.Interfaces.GameObjects; @@ -13,6 +12,7 @@ using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Log; +using Robust.Shared.Prototypes; namespace Content.Server.GameObjects.Components.Access { @@ -23,6 +23,7 @@ namespace Content.Server.GameObjects.Components.Access #pragma warning disable 649 [Dependency] private readonly IServerNotifyManager _notifyManager; [Dependency] private readonly ILocalizationManager _localizationManager; + [Dependency] private readonly IPrototypeManager _prototypeManager; #pragma warning restore 649 private BoundUserInterface _userInterface; @@ -93,7 +94,7 @@ namespace Content.Server.GameObjects.Components.Access targetIdComponent.FullName = newFullName; targetIdComponent.JobTitle = newJobTitle; - if (!newAccessList.TrueForAll(x => SharedAccess.AllAccess.Contains(x))) + if (!newAccessList.TrueForAll(x => _prototypeManager.HasIndex(x))) { Logger.Warning($"Tried to write unknown access tag."); return; diff --git a/Content.Shared/Access/SharedAccess.cs b/Content.Shared/Access/SharedAccess.cs deleted file mode 100644 index b705c26b19..0000000000 --- a/Content.Shared/Access/SharedAccess.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Content.Shared.Access -{ - public static class SharedAccess - { - public static readonly string[] AllAccess = { - "command", - "security", - "engineering", - "medical", - "cargo", - "research", - "service", - "maintenance", - }; - } -} diff --git a/Resources/Prototypes/AccessLevels/Cargo.yml b/Resources/Prototypes/AccessLevels/Cargo.yml new file mode 100644 index 0000000000..4c34ce92ac --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Cargo.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: cargo diff --git a/Resources/Prototypes/AccessLevels/Command.yml b/Resources/Prototypes/AccessLevels/Command.yml new file mode 100644 index 0000000000..37e805e811 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Command.yml @@ -0,0 +1,9 @@ +- type: accessLevel + id: command + +- type: accessLevel + id: captain + +- type: accessLevel + id: idCard + name: ID modification diff --git a/Resources/Prototypes/AccessLevels/Engineering.yml b/Resources/Prototypes/AccessLevels/Engineering.yml new file mode 100644 index 0000000000..8dec154032 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Engineering.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: engineering diff --git a/Resources/Prototypes/AccessLevels/Maintenance.yml b/Resources/Prototypes/AccessLevels/Maintenance.yml new file mode 100644 index 0000000000..01b013dba9 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Maintenance.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: maintenance diff --git a/Resources/Prototypes/AccessLevels/Medical.yml b/Resources/Prototypes/AccessLevels/Medical.yml new file mode 100644 index 0000000000..2684eb2bd3 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Medical.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: medical diff --git a/Resources/Prototypes/AccessLevels/Research.yml b/Resources/Prototypes/AccessLevels/Research.yml new file mode 100644 index 0000000000..1e9f039668 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Research.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: research diff --git a/Resources/Prototypes/AccessLevels/Security.yml b/Resources/Prototypes/AccessLevels/Security.yml new file mode 100644 index 0000000000..2d885a3778 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Security.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: security diff --git a/Resources/Prototypes/AccessLevels/Service.yml b/Resources/Prototypes/AccessLevels/Service.yml new file mode 100644 index 0000000000..80f8a59aa4 --- /dev/null +++ b/Resources/Prototypes/AccessLevels/Service.yml @@ -0,0 +1,2 @@ +- type: accessLevel + id: service diff --git a/Resources/Prototypes/Entities/buildings/computers.yml b/Resources/Prototypes/Entities/buildings/computers.yml index 44b8a4ed72..b82ac456f4 100644 --- a/Resources/Prototypes/Entities/buildings/computers.yml +++ b/Resources/Prototypes/Entities/buildings/computers.yml @@ -144,7 +144,7 @@ name: ID Card Computer components: - type: AccessReader - necessary: ["command"] + necessary: ["idCard"] - type: IdCardConsole - type: UserInterface interfaces: