|
|
- class SettingsMenuDorakoUX extends FormApplication {
- static namespace;
-
- static get defaultOptions() {
- const options = super.defaultOptions;
- options.classes.push("settings-menu");
-
- return mergeObject(options, {
- title: `pf2e-dorako-ux.settings.${this.namespace}.name`,
- id: `${this.namespace}-settings`,
- template: `modules/pf2e-dorako-ui/templates/menu.hbs`,
- width: 550,
- height: "auto",
- closeOnSubmit: false,
- });
- }
-
- static get prefix() {
- return `${this.namespace}.`;
- }
-
- get namespace() {
- return this.constructor.namespace;
- }
-
- get prefix() {
- return this.constructor.prefix;
- }
-
- static SETTINGS;
-
- /** Settings to be registered and also later referenced during user updates */
- static get settings() {
- return {};
- }
-
- static registerSettings() {
- const settings = this.settings;
- for (const setting of this.SETTINGS) {
- game.settings.register("pf2e-dorako-ux", `${this.prefix}${setting}`, {
- ...settings[setting],
- config: true,
- });
- }
- }
-
- async getData() {
- const settings = this.constructor.settings;
- const templateData = Object.entries(settings).map(([key, setting]) => {
- const value = game.settings.get("pf2e-dorako-ux", `${this.prefix}${key}`);
- return {
- ...setting,
- key,
- value,
- isSelect: !!setting.choices,
- isCheckbox: setting.type === Boolean,
- isFilepicker: setting.type === String && setting.filePicker,
- isNumber: setting.type === Number && !setting.range,
- isText: setting.type === String && !setting.filePicker,
- isRange: setting.type === Number && !!setting.range,
- };
- });
- return mergeObject(await super.getData(), {
- settings: templateData,
- instructions: `pf2e-dorako-ux.settings.${this.namespace}.hint`,
- });
- }
-
- async _updateObject(_event, data) {
- for (const key of this.constructor.SETTINGS) {
- const settingKey = `${this.prefix}${key}`;
- await game.settings.set("pf2e-dorako-ux", settingKey, data[key]);
- }
- }
- }
-
- export { SettingsMenuDorakoUX };
|