diff --git a/Content.Client/Access/UI/AccessLevelControl.xaml.cs b/Content.Client/Access/UI/AccessLevelControl.xaml.cs index 34db80b7af..3ce1c7d1f2 100644 --- a/Content.Client/Access/UI/AccessLevelControl.xaml.cs +++ b/Content.Client/Access/UI/AccessLevelControl.xaml.cs @@ -13,6 +13,7 @@ namespace Content.Client.Access.UI; public sealed partial class AccessLevelControl : GridContainer { public readonly Dictionary, Button> ButtonsList = new(); + public readonly List, Button>> ButtonGroups = new (); public AccessLevelControl() { @@ -39,6 +40,61 @@ public sealed partial class AccessLevelControl : GridContainer } } + public void PopulateForConsole(List>> accessLevels, IPrototypeManager prototypeManager) + { + var departmentColors = new List // Colors from StyleNano.cs + { + "ButtonColorCommandDepartment", + "ButtonColorSecurityDepartment", + "ButtonColorMedicalDepartment", + "ButtonColorEngineeringDepartment", + "ButtonColorResearchingDepartment", + "ButtonColorCargoDepartment", + "ButtonColorServiceDepartment" + }; + var currentColorIndex = 0; + + foreach (var department in accessLevels) + { + Dictionary, Button> buttons = new(); + foreach (var access in department) + { + if (!prototypeManager.TryIndex(access, out var accessLevel)) + { + Logger.Error($"Unable to find accesslevel for {access}"); + continue; + } + + var newButton = new Button + { + Text = accessLevel.GetAccessLevelName(), + ToggleMode = true, + }; + + newButton.AddStyleClass(departmentColors[currentColorIndex]); + buttons.Add(accessLevel.ID, newButton); + } + + ButtonGroups.Add(buttons); + currentColorIndex++; + } + } + + public void UpdateStateConsole( + List> pressedList, + List>? enabledList = null) + { + foreach (var department in ButtonGroups) + { + foreach (var (accessName, button) in department) + { + button.Pressed = pressedList.Contains(accessName); + button.Disabled = !(enabledList?.Contains(accessName) ?? true); + } + } + + } + public void UpdateState( List> pressedList, List>? enabledList = null) diff --git a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs index 5bf31f631d..e5b194946f 100644 --- a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs +++ b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs @@ -23,15 +23,15 @@ namespace Content.Client.Access.UI protected override void Open() { base.Open(); - List> accessLevels; + List>> accessLevels; if (EntMan.TryGetComponent(Owner, out var idCard)) { - accessLevels = idCard.AccessLevels; + accessLevels = idCard.AccessLevelsConsole; } else { - accessLevels = new List>(); + accessLevels = new List>>(); _idCardConsoleSystem.Log.Error($"No IdCardConsole component found for {EntMan.ToPrettyString(Owner)}!"); } diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.xaml b/Content.Client/Access/UI/IdCardConsoleWindow.xaml index 04dcd44806..32363256db 100644 --- a/Content.Client/Access/UI/IdCardConsoleWindow.xaml +++ b/Content.Client/Access/UI/IdCardConsoleWindow.xaml @@ -26,16 +26,13 @@