mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-17 07:36:26 +01:00
Bug/fixed character attack (#192)
* Fixed weapon useage in Character * Added DHContextMenu to pass on the event from clicking a contextmenuitem
This commit is contained in:
parent
e3b9dcad2a
commit
1f5b5f9915
5 changed files with 40 additions and 15 deletions
|
|
@ -112,6 +112,7 @@ Hooks.once('init', () => {
|
||||||
CONFIG.Token.rulerClass = DhpTokenRuler;
|
CONFIG.Token.rulerClass = DhpTokenRuler;
|
||||||
|
|
||||||
CONFIG.ui.resources = Resources;
|
CONFIG.ui.resources = Resources;
|
||||||
|
CONFIG.ux.ContextMenu = applications.DhContextMenu;
|
||||||
|
|
||||||
game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent);
|
game.socket.on(`system.${SYSTEM.id}`, handleSocketEvent);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,5 +13,6 @@ export { default as DhpArmor } from './sheets/items/armor.mjs';
|
||||||
export { default as DhpChatMessage } from './chatMessage.mjs';
|
export { default as DhpChatMessage } from './chatMessage.mjs';
|
||||||
export { default as DhpEnvironment } from './sheets/environment.mjs';
|
export { default as DhpEnvironment } from './sheets/environment.mjs';
|
||||||
export { default as DhActiveEffectConfig } from './sheets/activeEffectConfig.mjs';
|
export { default as DhActiveEffectConfig } from './sheets/activeEffectConfig.mjs';
|
||||||
|
export { default as DhContextMenu } from './contextMenu.mjs';
|
||||||
|
|
||||||
export * as api from './sheets/api/_modules.mjs';
|
export * as api from './sheets/api/_modules.mjs';
|
||||||
|
|
|
||||||
24
module/applications/contextMenu.mjs
Normal file
24
module/applications/contextMenu.mjs
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
export default class DhContextMenu extends ContextMenu {
|
||||||
|
constructor(container, selector, menuItems, options) {
|
||||||
|
super(container, selector, menuItems, options);
|
||||||
|
|
||||||
|
/** @deprecated since v13 until v15 */
|
||||||
|
this.#jQuery = options.jQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
#jQuery;
|
||||||
|
|
||||||
|
activateListeners(menu) {
|
||||||
|
menu.addEventListener('click', this.#onClickItem.bind(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
#onClickItem(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
const element = event.target.closest('.context-item');
|
||||||
|
if (!element) return;
|
||||||
|
const item = this.menuItems.find(i => i.element === element);
|
||||||
|
item?.callback(this.#jQuery ? $(this.target) : this.target, event);
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -48,8 +48,8 @@ class Countdowns extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||||
super._attachPartListeners(partId, htmlElement, options);
|
super._attachPartListeners(partId, htmlElement, options);
|
||||||
|
|
||||||
htmlElement.querySelectorAll('.mini-countdown-container').forEach(element => {
|
htmlElement.querySelectorAll('.mini-countdown-container').forEach(element => {
|
||||||
element.addEventListener('click', event => this.updateCountdownValue.bind(this)(event, true));
|
element.addEventListener('click', event => this.updateCountdownValue.bind(this)(event, false));
|
||||||
element.addEventListener('contextmenu', event => this.updateCountdownValue.bind(this)(event, false));
|
element.addEventListener('contextmenu', event => this.updateCountdownValue.bind(this)(event, true));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
toggleStress: this.toggleStress,
|
toggleStress: this.toggleStress,
|
||||||
toggleHope: this.toggleHope,
|
toggleHope: this.toggleHope,
|
||||||
toggleGold: this.toggleGold,
|
toggleGold: this.toggleGold,
|
||||||
attackRoll: this.attackRoll,
|
toggleLoadoutView: this.toggleLoadoutView,
|
||||||
useDomainCard: this.useDomainCard,
|
useDomainCard: this.useDomainCard,
|
||||||
removeCard: this.removeDomainCard,
|
removeCard: this.removeDomainCard,
|
||||||
selectClass: this.selectClass,
|
selectClass: this.selectClass,
|
||||||
|
|
@ -222,7 +222,7 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
useItem: {
|
useItem: {
|
||||||
name: 'DAGGERHEART.Sheets.PC.ContextMenu.UseItem',
|
name: 'DAGGERHEART.Sheets.PC.ContextMenu.UseItem',
|
||||||
icon: '<i class="fa-solid fa-burst"></i>',
|
icon: '<i class="fa-solid fa-burst"></i>',
|
||||||
callback: this.constructor.useItem.bind(this)
|
callback: (element, event) => this.constructor.useItem.bind(this)(event, element)
|
||||||
},
|
},
|
||||||
equip: {
|
equip: {
|
||||||
name: 'DAGGERHEART.Sheets.PC.ContextMenu.Equip',
|
name: 'DAGGERHEART.Sheets.PC.ContextMenu.Equip',
|
||||||
|
|
@ -547,14 +547,10 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
await this.document.update({ [update]: newValue });
|
await this.document.update({ [update]: newValue });
|
||||||
}
|
}
|
||||||
|
|
||||||
static async attackRoll(event, button) {
|
static async toggleLoadoutView(_, button) {
|
||||||
const weapon = await fromUuid(button.dataset.weapon);
|
const newAbilityView = !(button.dataset.value === 'true');
|
||||||
if (!weapon) return;
|
await game.user.setFlag(SYSTEM.id, SYSTEM.FLAGS.displayDomainCardsAsList, newAbilityView);
|
||||||
|
this.render();
|
||||||
const wasUsed = await weapon.use(event);
|
|
||||||
if (wasUsed) {
|
|
||||||
Hooks.callAll(SYSTEM.HOOKS.characterAttack, {});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static levelManagement() {
|
static levelManagement() {
|
||||||
|
|
@ -644,10 +640,13 @@ export default class CharacterSheet extends DaggerheartSheet(ActorSheetV2) {
|
||||||
(await game.packs.get('daggerheart.communities'))?.render(true);
|
(await game.packs.get('daggerheart.communities'))?.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static useItem(element, button) {
|
static async useItem(event, button) {
|
||||||
const id = (button ?? element).closest('a').id,
|
const id = button.closest('a').id,
|
||||||
item = this.document.items.get(id);
|
item = this.document.items.get(id);
|
||||||
item.use({});
|
const wasUsed = await item.use(event);
|
||||||
|
if (wasUsed && item.type === 'weapon') {
|
||||||
|
Hooks.callAll(SYSTEM.HOOKS.characterAttack, {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static async viewObject(element, button) {
|
static async viewObject(element, button) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue