feat: Controller hotbars with cross layout, separate storage, and sync with game

- Add controller hotbars: 8 cross bars (L2/R2 style), separate from normal hotbars 1-8
- Controller bar slot data stored in config (not game StandardHotbars) so layouts can differ per mode
- Drag-and-drop on controller bars: from game, shift+drag rearrange, release outside to clear
- Independent controller bar keybinds with modifier+trigger combinations (e.g. L2+South)
- Optional 'Sync bar mode with game client': follow Character Config Mouse/Gamepad toggle (PadMode)
- Clone/copy actions: normal hotbars ↔ controller bars
- Restore controller bar layout button; deploy to devPlugins on Release build

Made-with: Cursor
This commit is contained in:
Jorg
2026-02-26 22:18:40 -06:00
parent 369a770162
commit f3e10f27d2
13 changed files with 1706 additions and 21 deletions
+18
View File
@@ -45,6 +45,7 @@ namespace HSUI.Config
private MainConfigWindow _mainConfigWindow;
private ChangelogWindow _changelogWindow;
private GridWindow _gridWindow;
private ControllerBarKeybindsWindow _controllerBarKeybindsWindow;
public bool IsConfigWindowOpened => _mainConfigWindow.IsOpen;
public bool IsChangelogWindowOpened => _changelogWindow.IsOpen;
@@ -145,11 +146,13 @@ namespace HSUI.Config
string changelog = LoadChangelog();
_changelogWindow = new ChangelogWindow("HSUI Changelog v" + Plugin.Version, changelog);
_gridWindow = new GridWindow("Grid ##HSUI");
_controllerBarKeybindsWindow = new ControllerBarKeybindsWindow();
_windowSystem = new WindowSystem("HSUI_Windows");
_windowSystem.AddWindow(_mainConfigWindow);
_windowSystem.AddWindow(_changelogWindow);
_windowSystem.AddWindow(_gridWindow);
_windowSystem.AddWindow(_controllerBarKeybindsWindow);
CheckVersion();
@@ -336,6 +339,11 @@ namespace HSUI.Config
_changelogWindow.IsOpen = true;
}
public void OpenControllerBarKeybindsWindow()
{
_controllerBarKeybindsWindow.IsOpen = true;
}
public void Draw()
{
_windowSystem.Draw();
@@ -687,6 +695,16 @@ namespace HSUI.Config
typeof(Hotbar8BarConfig),
typeof(Hotbar9BarConfig),
typeof(Hotbar10BarConfig),
typeof(ControllerHotbarsConfig),
typeof(ControllerBar1Config),
typeof(ControllerBar2Config),
typeof(ControllerBar3Config),
typeof(ControllerBar4Config),
typeof(ControllerBar5Config),
typeof(ControllerBar6Config),
typeof(ControllerBar7Config),
typeof(ControllerBar8Config),
typeof(ControllerBarKeybindsConfig),
typeof(PullTimerConfig),
typeof(LimitBreakConfig),
typeof(MPTickerConfig),