import { registerSettings } from "./settings.js"; export let debugEnabled = 0; export let debug = (...args) => { if (debugEnabled > 1) console.log("DEBUG: combatdetails | ", ...args); }; export let log = (...args) => console.log("monks-hotbar-expansion | ", ...args); export let warn = (...args) => { if (debugEnabled > 0) console.warn("monks-hotbar-expansion | ", ...args); }; export let error = (...args) => console.error("monks-hotbar-expansion | ", ...args); export const setDebugLevel = (debugText) => { debugEnabled = { none: 0, warn: 1, debug: 2, all: 3 }[debugText] || 0; // 0 = none, warnings = 1, debug = 2, all = 3 if (debugEnabled >= 3) CONFIG.debug.hooks = true; }; export let i18n = key => { return game.i18n.localize(key); }; export let setting = key => { return game.settings.get("monks-hotbar-expansion", key); }; const WithMonksHotbarExpansion = (Hotbar) => { class MonksHotbarExpansion extends Hotbar { constructor(...args) { super(...args); this.macrolist = []; this._pagecollapsed = setting("collapse-on-open"); } static get defaultOptions() { return mergeObject(super.defaultOptions, { id: "hotbar", template: "./modules/monks-hotbar-expansion/templates/hotbar.html", popOut: false, dragDrop: [{ dragSelector: ".macro-icon", dropSelector: ".macro-list" }] }); } async getData() { const data = await super.getData(); const numberOfRows = setting('number-rows'); this.macrolist = []; for (let i = 1; i <= numberOfRows; i++) { let macros = this._getMacrosByPage(i); this.macrolist.push({ page: i, macros: macros, selected: i == this.page }); } data.showArrows = !setting("hide-page-arrows"); data.barClass = [ (setting('hide-page-arrows') ? 'no-arrows' : ''), (this._collapsed ? 'collapsed' : '') ].filter(c => c).join(' '); data.macrolist = this.macrolist; data.pageClass = [ (setting('reverse-row-order') ? 'reverse' : ''), (setting('hide-first-row') ? 'hidefirst' : ''), (game.modules.get("custom-hotbar")?.active === true ? 'custom-hotbar' : ''), //(game.modules.get("rpg-styled-ui")?.active === true ? 'rpg-ui' : ''), (this._pagecollapsed ? 'collapsed' : '') ].filter(c => c).join(' '); return data; } activateListeners(html) { super.activateListeners(html); html.find('#hotbar-page-controls .page-number').click(this._onTogglePage.bind(this)); html.find('#hotbar-page .page-number').click(this.selectPage.bind(this)); html.find('#hotbar-page .clear-row').click(this.clearMacroRow.bind(this)); } async _onTogglePage(event) { event.preventDefault(); if (this._pagecollapsed) return this.expandPage(); else return this.collapsePage(); } async collapsePage() { if (this._pagecollapsed) return true; const page = this.element.find("#hotbar-page"); return new Promise(resolve => { page.slideUp(200, () => { page.addClass("collapsed"); this._pagecollapsed = true; resolve(true); }); }); } async expandPage() { if (!this._pagecollapsed) return true; const page = this.element.find("#hotbar-page"); return new Promise(resolve => { page.slideDown(200, () => { page.removeClass("collapsed"); page.css({"display":""}); this._pagecollapsed = false; resolve(true); }); }); } async collapse() { super.collapse(); this.element.find("#hotbar-page-controls").css("display", "none"); } async expand() { super.expand(); this.element.find("#hotbar-page-controls").css("display", ""); } selectPage(event) { let page = $(event.currentTarget).closest('.hotbar-page-row').data('page'); this.changePage(page); if (setting("collapse-on-select")) { window.setTimeout(this.collapsePage.bind(this), 100); } } changePage(page) { super.changePage(page); } async clearMacroRow(event) { return Dialog.confirm({ title: `Clearing Macro Row`, content: `

${game.i18n.localize("AreYouSure")}

You are about to remove all macros from this row

`, yes: async () => { let page = $(event.currentTarget).closest('.hotbar-page-row').data('page'); for (let i = 1; i <= 10; i++) { await game.user.assignHotbarMacro(null, ((page - 1) * 10) + i); } } }); } } const constructorName = "MonksHotbarExpansion"; Object.defineProperty(MonksHotbarExpansion.prototype.constructor, "name", { value: constructorName }); return MonksHotbarExpansion; } Hooks.on('init', () => { registerSettings(); CONFIG.ui.hotbar = WithMonksHotbarExpansion(CONFIG.ui.hotbar); game.keybindings.register('monks-hotbar-expansion', 'toggle-key', { name: 'MonksHotbarExpansion.toggle-key.name', hint: 'MonksHotbarExpansion.toggle-key.hint', editable: [{ key: '`', modifiers: [KeyboardManager.MODIFIER_KEYS?.SHIFT] }], onDown: (data) => { ui.hotbar._onTogglePage(data.event); }, }); game.keybindings.register('monks-hotbar-expansion', 'switch-1', { name: 'MonksHotbarExpansion.switch-row.name', editable: [{ key: 'Key1', modifiers: [KeyboardManager.MODIFIER_KEYS?.SHIFT] }], onDown: (data) => { ui.hotbar.changePage(1); }, }); game.keybindings.register('monks-hotbar-expansion', 'switch-2', { name: 'MonksHotbarExpansion.switch-row.name', editable: [{ key: 'Key2', modifiers: [KeyboardManager.MODIFIER_KEYS?.SHIFT] }], onDown: (data) => { ui.hotbar.changePage(2); }, }); game.keybindings.register('monks-hotbar-expansion', 'switch-3', { name: 'MonksHotbarExpansion.switch-row.name', editable: [{ key: 'Key3', modifiers: [KeyboardManager.MODIFIER_KEYS?.SHIFT] }], onDown: (data) => { ui.hotbar.changePage(3); }, }); game.keybindings.register('monks-hotbar-expansion', 'switch-4', { name: 'MonksHotbarExpansion.switch-row.name', editable: [{ key: 'Key4', modifiers: [KeyboardManager.MODIFIER_KEYS?.SHIFT] }], onDown: (data) => { ui.hotbar.changePage(4); }, }); game.keybindings.register('monks-hotbar-expansion', 'switch-5', { name: 'MonksHotbarExpansion.switch-row.name', editable: [{ key: 'Key5', modifiers: [KeyboardManager.MODIFIER_KEYS?.SHIFT] }], onDown: (data) => { ui.hotbar.changePage(5); }, }); });