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
+19
View File
@@ -425,6 +425,25 @@ namespace HSUI.Interface
_hudElementsUsingPlayer.Add(barHud);
}
ControllerBarConfig[] controllerBarConfigs = new ControllerBarConfig[]
{
ConfigurationManager.Instance.GetConfigObject<ControllerBar1Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar2Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar3Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar4Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar5Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar6Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar7Config>(),
ConfigurationManager.Instance.GetConfigObject<ControllerBar8Config>()
};
for (int i = 0; i < controllerBarConfigs.Length; i++)
{
var barConfig = controllerBarConfigs[i];
var crossBarHud = new CrossBarHud(barConfig, $"Cross Bar {i + 1}");
_hudElements.Add(barConfig, crossBarHud);
_hudElementsUsingPlayer.Add(crossBarHud);
}
var partyCooldownsConfig = ConfigurationManager.Instance.GetConfigObject<PartyCooldownsConfig>();
var partyCooldownsHud = new PartyCooldownsHud(partyCooldownsConfig, "Party Cooldowns");
_hudElements.Add(partyCooldownsConfig, partyCooldownsHud);