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 { requestFearRollFromTokens, requestRollFromTokens } from './helpers.js';
|
||||
import { powers } from './powers/powers.js';
|
||||
import { powers, powerEffectsMenu } from './powers/powers.js';
|
||||
import { setSummonCosts } from './powers/summonSupport.js';
|
||||
|
||||
export class api {
|
||||
@ -14,6 +14,7 @@ export class api {
|
||||
game.modules.get(moduleName).api = {
|
||||
fearTable: moduleHelpers.fearTableHelper,
|
||||
powerEffects: powers,
|
||||
powerEffectsMenu,
|
||||
requestFearRollFromTokens,
|
||||
requestRollFromTokens,
|
||||
rulesVersion: moduleHelpers.rulesVersion,
|
||||
|
||||
@ -295,3 +295,48 @@ export async function powers(options = {}) {
|
||||
}
|
||||
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