add power menu, part 1
This commit is contained in:
parent
5111bd830c
commit
18cd705626
4
macros/powerMenu.js
Normal file
4
macros/powerMenu.js
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
game.modules.get('swade-mb-helpers').api.powerEffectsMenu({
|
||||||
|
token,
|
||||||
|
targets: game.user.targets,
|
||||||
|
});
|
||||||
@ -1,6 +1,6 @@
|
|||||||
import { log, moduleHelpers } from './globals.js';
|
import { log, moduleHelpers } from './globals.js';
|
||||||
import { requestFearRollFromTokens, requestRollFromTokens } from './helpers.js';
|
import { requestFearRollFromTokens, requestRollFromTokens } from './helpers.js';
|
||||||
import { powers } from './powers/powers.js';
|
import { powers, powerEffectsMenu } from './powers/powers.js';
|
||||||
import { setSummonCosts } from './powers/summonSupport.js';
|
import { setSummonCosts } from './powers/summonSupport.js';
|
||||||
|
|
||||||
export class api {
|
export class api {
|
||||||
@ -14,6 +14,7 @@ export class api {
|
|||||||
game.modules.get(moduleName).api = {
|
game.modules.get(moduleName).api = {
|
||||||
fearTable: moduleHelpers.fearTableHelper,
|
fearTable: moduleHelpers.fearTableHelper,
|
||||||
powerEffects: powers,
|
powerEffects: powers,
|
||||||
|
powerEffectsMenu,
|
||||||
requestFearRollFromTokens,
|
requestFearRollFromTokens,
|
||||||
requestRollFromTokens,
|
requestRollFromTokens,
|
||||||
rulesVersion: moduleHelpers.rulesVersion,
|
rulesVersion: moduleHelpers.rulesVersion,
|
||||||
|
|||||||
@ -295,3 +295,48 @@ export async function powers(options = {}) {
|
|||||||
}
|
}
|
||||||
ui.notifications.error(`No power effect found for ${swid}`);
|
ui.notifications.error(`No power effect found for ${swid}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function powerEffectsMenu(options = {}) {
|
||||||
|
const powers = {};
|
||||||
|
for (const powerClass of new Set(Object.values(PowerClasses))) {
|
||||||
|
const powerInst = new powerClass();
|
||||||
|
powers[powerInst.name] = powerClass;
|
||||||
|
}
|
||||||
|
let form = `<form>
|
||||||
|
<p>Select a power.</p>
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Power:</label>
|
||||||
|
<select name="power">`;
|
||||||
|
let letter = '';
|
||||||
|
let first = true;
|
||||||
|
for (const powerName of Object.keys(powers).sort()) {
|
||||||
|
const newLetter = powerName[0].toUpperCase();
|
||||||
|
if (newLetter !== letter) {
|
||||||
|
letter = newLetter;
|
||||||
|
if (!first) {
|
||||||
|
form += '</optgroup>';
|
||||||
|
}
|
||||||
|
first = false;
|
||||||
|
form += `<optgroup label="${newLetter}">`;
|
||||||
|
}
|
||||||
|
form += `<option>${powerName}</option>`;
|
||||||
|
}
|
||||||
|
form += `</optgroup></div></form>`;
|
||||||
|
const formResult = await Dialog.wait({
|
||||||
|
title: 'Select a power',
|
||||||
|
content: form,
|
||||||
|
buttons: {
|
||||||
|
submit: {
|
||||||
|
label: 'Submit',
|
||||||
|
callback: (html) => {
|
||||||
|
const formElement = html[0].querySelector('form');
|
||||||
|
const formData = new FormDataExtended(formElement);
|
||||||
|
const formDataObject = formData.toObject();
|
||||||
|
return formDataObject;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cancel: { label: 'Cancel' },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(formResult);
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user