diff --git a/lang/en.json b/lang/en.json index 5c0c7470..354786d9 100755 --- a/lang/en.json +++ b/lang/en.json @@ -2878,6 +2878,10 @@ } }, "Keybindings": { + "partySheet": { + "name": "Toggle Party Sheet", + "hint": "Open or close the active party's sheet" + }, "spotlight": { "name": "Spotlight Combatant", "hint": "Move the spotlight to a hovered or selected token that's present in an active encounter" diff --git a/module/config/settingsConfig.mjs b/module/config/settingsConfig.mjs index 12e8536e..6dae29aa 100644 --- a/module/config/settingsConfig.mjs +++ b/module/config/settingsConfig.mjs @@ -1,5 +1,6 @@ export const keybindings = { - spotlight: 'DHSpotlight' + spotlight: 'DHSpotlight', + partySheet: 'DHPartySheet' }; export const menu = { diff --git a/module/systemRegistration/settings.mjs b/module/systemRegistration/settings.mjs index ae78e23b..69bd1730 100644 --- a/module/systemRegistration/settings.mjs +++ b/module/systemRegistration/settings.mjs @@ -52,6 +52,27 @@ export const registerKeyBindings = () => { reservedModifiers: [], precedence: CONST.KEYBINDING_PRECEDENCE.NORMAL }); + + game.keybindings.register(CONFIG.DH.id, CONFIG.DH.SETTINGS.keybindings.partySheet, { + name: _loc('DAGGERHEART.SETTINGS.Keybindings.partySheet.name'), + hint: _loc('DAGGERHEART.SETTINGS.Keybindings.partySheet.hint'), + editable: [{ key: "KeyP" }], + onDown: () => { + const controlled = canvas.ready ? canvas.tokens.controlled : []; + const selectedParty = controlled.find((c) => c.actor?.type === 'party')?.actor; + const party = selectedParty ?? game.actors.party; + if (!party) return; + + const sheet = party.sheet; + if (!sheet.rendered) { + sheet.render(true); + } else if (sheet.minimized) { + sheet.maximize(); + } else { + sheet.close(); + } + } + }); }; const registerMenuSettings = () => {