diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs index 8efd977b20690d..ba8b72788e65a2 100644 --- a/Content.Client/Input/ContentContexts.cs +++ b/Content.Client/Input/ContentContexts.cs @@ -80,11 +80,6 @@ public static void SetupContexts(IInputContextContainer contexts) common.AddFunction(boundKey); } - foreach (var boundKey in ContentKeyFunctions.GetLoadoutBoundKeys()) - { - common.AddFunction(boundKey); - } - var aghost = contexts.New("aghost", "common"); aghost.AddFunction(EngineKeyFunctions.MoveUp); aghost.AddFunction(EngineKeyFunctions.MoveDown); diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs index c68e7f3af95ee2..87b1f10352f585 100644 --- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs @@ -224,10 +224,6 @@ void AddCheckBox(string checkBoxName, bool currentState, Action + - diff --git a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs index c35d831035e01a..a8a53e83c78693 100644 --- a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs +++ b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs @@ -17,7 +17,6 @@ public DefaultGameScreen() SetAnchorPreset(MainViewport, LayoutPreset.Wide); SetAnchorPreset(ViewportContainer, LayoutPreset.Wide); SetAnchorAndMarginPreset(TopLeft, LayoutPreset.TopLeft, margin: 10); - SetAnchorAndMarginPreset(Actions, LayoutPreset.BottomLeft, margin: 10); SetAnchorAndMarginPreset(Ghost, LayoutPreset.BottomWide, margin: 80); SetAnchorAndMarginPreset(Hotbar, LayoutPreset.BottomWide, margin: 5); SetAnchorAndMarginPreset(Chat, LayoutPreset.TopRight, margin: 10); @@ -25,6 +24,7 @@ public DefaultGameScreen() Chat.OnResized += ChatOnResized; Chat.OnChatResizeFinish += ChatOnResizeFinish; + Actions.ActionsContainer.Columns = 1; } private void ChatOnResizeFinish(Vector2 _) diff --git a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs index 41c4a85e7eecdb..e0c66b7a8bb43a 100644 --- a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs +++ b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs @@ -19,7 +19,7 @@ public SeparatedChatGameScreen() SetAnchorPreset(ViewportContainer, LayoutPreset.Wide); SetAnchorPreset(MainViewport, LayoutPreset.Wide); SetAnchorAndMarginPreset(VoteMenu, LayoutPreset.TopLeft, margin: 10); - SetAnchorAndMarginPreset(Actions, LayoutPreset.BottomLeft, margin: 10); + SetAnchorAndMarginPreset(Actions, LayoutPreset.TopLeft, margin: 10); SetAnchorAndMarginPreset(Ghost, LayoutPreset.BottomWide, margin: 80); SetAnchorAndMarginPreset(Hotbar, LayoutPreset.BottomWide, margin: 5); SetAnchorAndMarginPreset(Alerts, LayoutPreset.CenterRight, margin: 10); diff --git a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs index 340aa5447ddea6..5a992786a29ba0 100644 --- a/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs +++ b/Content.Client/UserInterface/Systems/Actions/ActionUIController.cs @@ -1,6 +1,5 @@ using System.Linq; using System.Numerics; -using System.Runtime.InteropServices; using Content.Client.Actions; using Content.Client.Construction; using Content.Client.Gameplay; @@ -49,17 +48,14 @@ public sealed class ActionUIController : UIController, IOnStateChanged _pages = new(); - private int _currentPageIndex = DefaultPageIndex; + private readonly List _actions = new(); private readonly DragDropHelper _menuDragHelper; private readonly TextureRect _dragShadow; private ActionsWindow? _window; private ActionsBar? ActionsBar => UIManager.GetActiveUIWidgetOrNull(); private MenuButton? ActionButton => UIManager.GetActiveUIWidgetOrNull()?.ActionButton; - private ActionPage CurrentPage => _pages[_currentPageIndex]; public bool IsDragging => _menuDragHelper.IsDragging; @@ -79,14 +75,6 @@ public ActionUIController() SetSize = new Vector2(64, 64), MouseFilter = MouseFilterMode.Ignore }; - - var pageCount = ContentKeyFunctions.GetLoadoutBoundKeys().Length; - var buttonCount = ContentKeyFunctions.GetHotbarBoundKeys().Length; - for (var i = 0; i < pageCount; i++) - { - var page = new ActionPage(buttonCount); - _pages.Add(page); - } } public override void Initialize() @@ -139,15 +127,6 @@ public void OnStateEntered(GameplayState state) }, false, true)); } - var loadoutKeys = ContentKeyFunctions.GetLoadoutBoundKeys(); - for (var i = 0; i < loadoutKeys.Length; i++) - { - var boundId = i; // This is needed, because the lambda captures it. - var boundKey = loadoutKeys[i]; - builder = builder.Bind(boundKey, - InputCmdHandler.FromDelegate(_ => ChangePage(boundId))); - } - builder .Bind(ContentKeyFunctions.OpenActionsMenu, InputCmdHandler.FromDelegate(_ => ToggleWindow())) @@ -178,7 +157,7 @@ private bool TargetingOnUse(in PointerInputCmdArgs args) if (!_timing.IsFirstTimePredicted || _actionsSystem == null || SelectingTargetFor is not { } actionId) return false; - if (_playerManager.LocalPlayer?.ControlledEntity is not { } user) + if (_playerManager.LocalEntity is not { } user) return false; if (!EntityManager.TryGetComponent(user, out ActionsComponent? comp)) @@ -332,76 +311,16 @@ public void OnStateExited(GameplayState state) private void TriggerAction(int index) { if (_actionsSystem == null || - CurrentPage[index] is not { } actionId || + !_actions.TryGetValue(index, out var actionId) || !_actionsSystem.TryGetActionData(actionId, out var baseAction)) { return; } if (baseAction is BaseTargetActionComponent action) - ToggleTargeting(actionId, action); + ToggleTargeting(actionId.Value, action); else - _actionsSystem?.TriggerAction(actionId, baseAction); - } - - private void ChangePage(int index) - { - if (_actionsSystem == null) - return; - - var lastPage = _pages.Count - 1; - if (index < 0) - { - index = lastPage; - } - else if (index > lastPage) - { - index = 0; - } - - _currentPageIndex = index; - var page = _pages[_currentPageIndex]; - _container?.SetActionData(_actionsSystem, page); - - ActionsBar!.PageButtons.Label.Text = $"{_currentPageIndex + 1}"; - } - - private void OnLeftArrowPressed(ButtonEventArgs args) - { - ChangePage(_currentPageIndex - 1); - } - - private void OnRightArrowPressed(ButtonEventArgs args) - { - ChangePage(_currentPageIndex + 1); - } - - private void AppendAction(EntityUid action) - { - if (_container == null) - return; - - foreach (var button in _container.GetButtons()) - { - if (button.ActionId != null) - continue; - - SetAction(button, action); - return; - } - - foreach (var page in _pages) - { - for (var i = 0; i < page.Size; i++) - { - var pageAction = page[i]; - if (pageAction != null) - continue; - - page[i] = action; - return; - } - } + _actionsSystem?.TriggerAction(actionId.Value, baseAction); } private void OnActionAdded(EntityUid actionId) @@ -416,18 +335,10 @@ private void OnActionAdded(EntityUid actionId) if (action is BaseTargetActionComponent targetAction && action.Toggled) StartTargeting(actionId, targetAction); - foreach (var page in _pages) - { - for (var i = 0; i < page.Size; i++) - { - if (page[i] == actionId) - { - return; - } - } - } + if (_actions.Contains(actionId)) + return; - AppendAction(actionId); + _actions.Add(actionId); } private void OnActionRemoved(EntityUid actionId) @@ -435,40 +346,18 @@ private void OnActionRemoved(EntityUid actionId) if (_container == null) return; - // stop targeting if the action is removed if (actionId == SelectingTargetFor) StopTargeting(); - foreach (var button in _container.GetButtons()) - { - if (button.ActionId == actionId) - { - SetAction(button, null); - } - } - - foreach (var page in _pages) - { - for (var i = 0; i < page.Size; i++) - { - if (page[i] == actionId) - { - page[i] = null; - } - } - } + _actions.RemoveAll(x => x == actionId); } private void OnActionsUpdated() { QueueWindowUpdate(); - if (_container == null) - return; - foreach (var button in _container.GetButtons()) - { - button.UpdateIcons(); - } + if (_actionsSystem != null) + _container?.SetActionData(_actionsSystem, _actions.ToArray()); } private void ActionButtonPressed(ButtonEventArgs args) @@ -512,8 +401,8 @@ private bool MatchesFilter(BaseActionComponent action, Filters filter) return filter switch { Filters.Enabled => action.Enabled, - Filters.Item => action.Container != null && action.Container != _playerManager.LocalPlayer?.ControlledEntity, - Filters.Innate => action.Container == null || action.Container == _playerManager.LocalPlayer?.ControlledEntity, + Filters.Item => action.Container != null && action.Container != _playerManager.LocalEntity, + Filters.Innate => action.Container == null || action.Container == _playerManager.LocalEntity, Filters.Instant => action is InstantActionComponent, Filters.Targeted => action is BaseTargetActionComponent, _ => throw new ArgumentOutOfRangeException(nameof(filter), filter, null) @@ -580,7 +469,7 @@ private void SearchAndDisplay() if (_actionsSystem == null) return; - if (_playerManager.LocalPlayer?.ControlledEntity is not { } player) + if (_playerManager.LocalEntity is not { } player) return; var search = _window.SearchBar.Text; @@ -615,7 +504,7 @@ private void SearchAndDisplay() PopulateActions(actions); } - private void SetAction(ActionButton button, EntityUid? actionId) + private void SetAction(ActionButton button, EntityUid? actionId, bool updateSlots = true) { if (_actionsSystem == null) return; @@ -627,22 +516,30 @@ private void SetAction(ActionButton button, EntityUid? actionId) button.ClearData(); if (_container?.TryGetButtonIndex(button, out position) ?? false) { - CurrentPage[position] = actionId; + _actions.RemoveAt(position); } - - return; } - - if (button.TryReplaceWith(actionId.Value, _actionsSystem) && + else if (button.TryReplaceWith(actionId.Value, _actionsSystem) && _container != null && _container.TryGetButtonIndex(button, out position)) { - CurrentPage[position] = actionId; + if (position >= _actions.Count) + { + _actions.Add(actionId); + } + else + { + _actions[position] = actionId; + } } + + if (updateSlots) + _container?.SetActionData(_actionsSystem, _actions.ToArray()); } private void DragAction() { + EntityUid? swapAction = null; if (UIManager.CurrentlyHovered is ActionButton button) { if (!_menuDragHelper.IsDragging || _menuDragHelper.Dragged?.ActionId is not { } type) @@ -651,14 +548,18 @@ private void DragAction() return; } - SetAction(button, type); + swapAction = button.ActionId; + SetAction(button, type, false); } if (_menuDragHelper.Dragged is {Parent: ActionButtonContainer} old) { - SetAction(old, null); + SetAction(old, swapAction, false); } + if (_actionsSystem != null) + _container?.SetActionData(_actionsSystem, _actions.ToArray()); + _menuDragHelper.EndDrag(); } @@ -737,6 +638,7 @@ private void OnActionUnpressed(GUIBoundKeyEventArgs args, ActionButton button) if (args.Function != EngineKeyFunctions.UIClick || _actionsSystem == null) return; + //todo: make dragging onto the same spot NOT trigger again if (UIManager.CurrentlyHovered == button) { _menuDragHelper.EndDrag(); @@ -813,9 +715,6 @@ private void UnloadGui() return; } - ActionsBar.PageButtons.LeftArrow.OnPressed -= OnLeftArrowPressed; - ActionsBar.PageButtons.RightArrow.OnPressed -= OnRightArrowPressed; - if (_window != null) { _window.OnOpen -= OnWindowOpened; @@ -846,9 +745,6 @@ private void LoadGui() return; } - ActionsBar.PageButtons.LeftArrow.OnPressed += OnLeftArrowPressed; - ActionsBar.PageButtons.RightArrow.OnPressed += OnRightArrowPressed; - RegisterActionContainer(ActionsBar.ActionsContainer); _actionsSystem?.LinkAllActions(); @@ -856,12 +752,6 @@ private void LoadGui() public void RegisterActionContainer(ActionButtonContainer container) { - if (_container != null) - { - _container.ActionPressed -= OnActionPressed; - _container.ActionUnpressed -= OnActionPressed; - } - _container = container; _container.ActionPressed += OnActionPressed; _container.ActionUnpressed += OnActionUnpressed; @@ -877,12 +767,12 @@ private void AssignSlots(List assignments) if (_actionsSystem == null) return; - foreach (ref var assignment in CollectionsMarshal.AsSpan(assignments)) + for (var i = 0; i < assignments.Count; i++) { - _pages[assignment.Hotbar][assignment.Slot] = assignment.ActionId; + _actions[i] = assignments[i].ActionId; } - _container?.SetActionData(_actionsSystem, _pages[_currentPageIndex]); + _container?.SetActionData(_actionsSystem, _actions.ToArray()); } public void RemoveActionContainer() @@ -918,8 +808,8 @@ private void OnComponentLinked(ActionsComponent component) if (_actionsSystem == null) return; - LoadDefaultActions(component); - _container?.SetActionData(_actionsSystem, _pages[DefaultPageIndex]); + LoadDefaultActions(); + _container?.SetActionData(_actionsSystem, _actions.ToArray()); QueueWindowUpdate(); } @@ -930,7 +820,7 @@ private void OnComponentUnlinked() StopTargeting(); } - private void LoadDefaultActions(ActionsComponent component) + private void LoadDefaultActions() { if (_actionsSystem == null) return; @@ -938,36 +828,11 @@ private void LoadDefaultActions(ActionsComponent component) var actions = _actionsSystem.GetClientActions().Where(action => action.Comp.AutoPopulate).ToList(); actions.Sort(ActionComparer); - var offset = 0; - var totalPages = _pages.Count; - var pagesLeft = totalPages; - var currentPage = DefaultPageIndex; - while (pagesLeft > 0) + _actions.Clear(); + foreach (var (action, _) in actions) { - var page = _pages[currentPage]; - var pageSize = page.Size; - - for (var slot = 0; slot < pageSize; slot++) - { - var actionIndex = slot + offset; - if (actionIndex < actions.Count) - { - page[slot] = actions[slot + offset].Id; - } - else - { - page[slot] = null; - } - } - - offset += pageSize; - currentPage++; - if (currentPage == totalPages) - { - currentPage = 0; - } - - pagesLeft--; + if (!_actions.Contains(action)) + _actions.Add(action); } } @@ -1078,34 +943,4 @@ private void StopTargeting() handOverlay.IconOverride = null; handOverlay.EntityOverride = null; } - - - //TODO: Serialize this shit - private sealed class ActionPage - { - private readonly EntityUid?[] _data; - - public ActionPage(int size) - { - _data = new EntityUid?[size]; - } - - public EntityUid? this[int index] - { - get => _data[index]; - set => _data[index] = value; - } - - public static implicit operator EntityUid?[](ActionPage p) - { - return p._data.ToArray(); - } - - public void Clear() - { - Array.Fill(_data, null); - } - - public int Size => _data.Length; - } } diff --git a/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs b/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs index 31c5a28e520cad..6b2033e78c0e4e 100644 --- a/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs +++ b/Content.Client/UserInterface/Systems/Actions/Controls/ActionButton.cs @@ -49,6 +49,8 @@ public BoundKeyFunction? KeyBind private readonly SpriteView _smallItemSpriteView; private readonly SpriteView _bigItemSpriteView; + private Texture? _buttonBackgroundTexture; + public EntityUid? ActionId { get; private set; } private BaseActionComponent? _action; public bool Locked { get; set; } @@ -138,9 +140,9 @@ public ActionButton(IEntityManager entities, SpriteSystem? spriteSys = null, Act }); Cooldown = new CooldownGraphic {Visible = false}; + AddChild(Button); AddChild(_bigActionIcon); AddChild(_bigItemSpriteView); - AddChild(Button); AddChild(HighlightRect); AddChild(Label); AddChild(Cooldown); @@ -167,7 +169,7 @@ public ActionButton(IEntityManager entities, SpriteSystem? spriteSys = null, Act protected override void OnThemeUpdated() { base.OnThemeUpdated(); - Button.Texture = Theme.ResolveTexture("SlotBackground"); + _buttonBackgroundTexture = Theme.ResolveTexture("SlotBackground"); Label.FontColorOverride = Theme.ResolveColorOrSpecified("whiteText"); } @@ -263,6 +265,7 @@ private void SetActionIcon(Texture? texture) public void UpdateIcons() { UpdateItemIcon(); + UpdateBackground(); if (_action == null) { @@ -278,6 +281,18 @@ public void UpdateIcons() SetActionIcon(_action.Icon != null ? _spriteSys.Frame0(_action.Icon) : null); } + public void UpdateBackground() + { + if (_action == null) + { + Button.Texture = null; + } + else + { + Button.Texture = _buttonBackgroundTexture; + } + } + public bool TryReplaceWith(EntityUid actionId, ActionsSystem system) { if (Locked) @@ -363,7 +378,8 @@ public void Depress(GUIBoundKeyEventArgs args, bool depress) public void DrawModeChanged() { - HighlightRect.Visible = _beingHovered; + _controller ??= UserInterfaceManager.GetUIController(); + HighlightRect.Visible = _beingHovered && (_action != null || _controller.IsDragging); // always show the normal empty button style if no action in this slot if (_action == null) @@ -373,8 +389,7 @@ public void DrawModeChanged() } // show a hover only if the action is usable or another action is being dragged on top of this - _controller ??= UserInterfaceManager.GetUIController(); - if (_beingHovered && (_controller.IsDragging || _action.Enabled)) + if (_beingHovered && (_controller.IsDragging || _action!.Enabled)) { SetOnlyStylePseudoClass(ContainerButton.StylePseudoClassHover); } diff --git a/Content.Client/UserInterface/Systems/Actions/Controls/ActionButtonContainer.cs b/Content.Client/UserInterface/Systems/Actions/Controls/ActionButtonContainer.cs index 9986c61ad63677..5e26c192d7c06d 100644 --- a/Content.Client/UserInterface/Systems/Actions/Controls/ActionButtonContainer.cs +++ b/Content.Client/UserInterface/Systems/Actions/Controls/ActionButtonContainer.cs @@ -1,12 +1,19 @@ +using System.Linq; using Content.Client.Actions; +using Content.Shared.Input; +using Robust.Client.Input; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Utility; namespace Content.Client.UserInterface.Systems.Actions.Controls; [Virtual] public class ActionButtonContainer : GridContainer { + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IInputManager _input = default!; + public event Action? ActionPressed; public event Action? ActionUnpressed; public event Action? ActionFocusExited; @@ -14,7 +21,6 @@ public class ActionButtonContainer : GridContainer public ActionButtonContainer() { IoCManager.InjectDependencies(this); - UserInterfaceManager.GetUIController().RegisterActionContainer(this); } public ActionButton this[int index] @@ -22,17 +28,42 @@ public ActionButton this[int index] get => (ActionButton) GetChild(index); } - public void SetActionData(ActionsSystem system, params EntityUid?[] actionTypes) + private void BuildActionButtons(int count) { - ClearActionData(); + var keys = ContentKeyFunctions.GetHotbarBoundKeys(); - for (var i = 0; i < actionTypes.Length; i++) + Children.Clear(); + for (var index = 0; index < count; index++) { - var action = actionTypes[i]; - if (action == null) - continue; + Children.Add(MakeButton(index)); + } + + ActionButton MakeButton(int index) + { + var button = new ActionButton(_entity); + + if (keys.TryGetValue(index, out var boundKey)) + { + button.KeyBind = boundKey; + + var binding = _input.GetKeyBinding(boundKey); + button.Label.Text = binding.GetKeyString(); + } - ((ActionButton) GetChild(i)).UpdateData(action.Value, system); + return button; + } + } + + public void SetActionData(ActionsSystem system, params EntityUid?[] actionTypes) + { + var uniqueCount = Math.Min(system.GetClientActions().Count(), actionTypes.Length + 1); + BuildActionButtons(uniqueCount); + + for (var i = 0; i < uniqueCount; i++) + { + if (!actionTypes.TryGetValue(i, out var action)) + action = null; + ((ActionButton) GetChild(i)).UpdateData(action, system); } } diff --git a/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml b/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml index 7e4d60a0571ea6..1d317f6155d506 100644 --- a/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml +++ b/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml @@ -13,7 +13,7 @@ VerticalAlignment="Center" MaxSize="64 9999" Name="ActionsContainer" - Access="Public"/> - + Access="Public" + Rows="1"/> diff --git a/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs b/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs index ff3c32cc0e6bee..8e95992ff646a7 100644 --- a/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs +++ b/Content.Client/UserInterface/Systems/Actions/Widgets/ActionsBar.xaml.cs @@ -1,6 +1,4 @@ -using Content.Client.UserInterface.Systems.Actions.Controls; -using Content.Shared.Input; -using Robust.Client.AutoGenerated; +using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; @@ -9,28 +7,9 @@ namespace Content.Client.UserInterface.Systems.Actions.Widgets; [GenerateTypedNameReferences] public sealed partial class ActionsBar : UIWidget { - [Dependency] private readonly IEntityManager _entity = default!; - public ActionsBar() { RobustXamlLoader.Load(this); - IoCManager.InjectDependencies(this); - - var keys = ContentKeyFunctions.GetHotbarBoundKeys(); - for (var index = 1; index < keys.Length; index++) - { - ActionsContainer.Children.Add(MakeButton(index)); - } - ActionsContainer.Children.Add(MakeButton(0)); - - ActionButton MakeButton(int index) - { - var boundKey = keys[index]; - var button = new ActionButton(_entity); - button.KeyBind = boundKey; - button.Label.Text = index.ToString(); - return button; - } } } diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index 840320b0d3b89f..f4307cd058c5d5 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -84,23 +84,6 @@ public static BoundKeyFunction[] GetHotbarBoundKeys() => Hotbar1, Hotbar2, Hotbar3, Hotbar4, Hotbar5, Hotbar6, Hotbar7, Hotbar8, Hotbar9, Hotbar0 }; - public static readonly BoundKeyFunction Loadout0 = "Loadout0"; - public static readonly BoundKeyFunction Loadout1 = "Loadout1"; - public static readonly BoundKeyFunction Loadout2 = "Loadout2"; - public static readonly BoundKeyFunction Loadout3 = "Loadout3"; - public static readonly BoundKeyFunction Loadout4 = "Loadout4"; - public static readonly BoundKeyFunction Loadout5 = "Loadout5"; - public static readonly BoundKeyFunction Loadout6 = "Loadout6"; - public static readonly BoundKeyFunction Loadout7 = "Loadout7"; - public static readonly BoundKeyFunction Loadout8 = "Loadout8"; - public static readonly BoundKeyFunction Loadout9 = "Loadout9"; - - public static BoundKeyFunction[] GetLoadoutBoundKeys() => - new[] - { - Loadout1, Loadout2, Loadout3, Loadout4, Loadout5, Loadout6, Loadout7, Loadout8, Loadout9, Loadout0 - }; - public static readonly BoundKeyFunction Vote0 = "Vote0"; public static readonly BoundKeyFunction Vote1 = "Vote1"; public static readonly BoundKeyFunction Vote2 = "Vote2"; diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 1b82435861aa65..b3ba05def2628e 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -510,43 +510,3 @@ binds: - function: Hotbar9 type: State key: Num9 -- function: Loadout0 - type: State - key: Num0 - mod1: Shift -- function: Loadout1 - type: State - key: Num1 - mod1: Shift -- function: Loadout2 - type: State - key: Num2 - mod1: Shift -- function: Loadout3 - type: State - key: Num3 - mod1: Shift -- function: Loadout4 - type: State - key: Num4 - mod1: Shift -- function: Loadout5 - type: State - key: Num5 - mod1: Shift -- function: Loadout6 - type: State - key: Num6 - mod1: Shift -- function: Loadout7 - type: State - key: Num7 - mod1: Shift -- function: Loadout8 - type: State - key: Num8 - mod1: Shift -- function: Loadout9 - type: State - key: Num9 - mod1: Shift