|
|
- class AutomatedEvocationsCustomBindings extends FormApplication {
- constructor() {
- super();
- }
-
- static get defaultOptions() {
- return {
- ...super.defaultOptions,
- title: game.i18n.localize("AE.custombindings.bindingstitle"),
- id: "companionManager-custombindings",
- template: `modules/automated-evocations/templates/custombindings.hbs`,
- resizable: true,
- width: 300,
- height: window.innerHeight > 400 ? 400 : window.innerHeight - 100,
- dragDrop: [{ dragSelector: null, dropSelector: null }],
- };
- }
-
- getData() {
- return {
- customautospells: game.settings.get(AECONSTS.MN, "customautospells")
- }
- }
-
- activateListeners(html) {
- html.on("click", ".fa-trash", async (event) => {
- const binding = event.currentTarget.closest("li").dataset.binding;
- const customautospells = game.settings.get(AECONSTS.MN, "customautospells");
- delete customautospells[binding];
- await game.settings.set(AECONSTS.MN, "customautospells", customautospells);
- this.render(true);
- });
- html.on("click", ".fa-edit", async (event) => {
- const binding = event.currentTarget.closest("li").dataset.binding;
- new AutomatedEvocationsCustomBindingsConfig(binding).render(true);
-
- });
- html.on("click", ".add-binding", async (event) => {
- const binding = "New Binding";
- const customautospells = game.settings.get(AECONSTS.MN, "customautospells");
- customautospells[binding] = [];
- await game.settings.set(AECONSTS.MN, "customautospells", customautospells);
- this.render(true);
- });
- html.on("change submit", "input", async (event) => {
- const binding = event.currentTarget.closest("li").dataset.binding;
- const customautospells = game.settings.get(AECONSTS.MN, "customautospells");
- customautospells[event.currentTarget.value] = customautospells[binding];
- delete customautospells[binding];
- await game.settings.set(AECONSTS.MN, "customautospells", customautospells);
- this.render(true);
- });
- }
- }
-
- class AutomatedEvocationsCustomBindingsConfig extends FormApplication {
- constructor(binding) {
- super();
- this._binding = binding;
- }
-
- static get defaultOptions() {
- return {
- ...super.defaultOptions,
- title: game.i18n.localize("AE.custombindings.bindingtitle"),
- id: "companionManager-custombinding-config",
- template: `modules/automated-evocations/templates/custombindingconfig.hbs`,
- resizable: true,
- width: 300,
- height: window.innerHeight > 400 ? 400 : window.innerHeight - 100,
- dragDrop: [{ dragSelector: null, dropSelector: null }],
- };
- }
-
- getData() {
- const animations = {};
- for(let [key, value] of Object.entries(AECONSTS.animations)) {
- animations[key] = {};
- for(let a of value) {
- const aKey = a.key;
- animations[key][aKey] = a.name;
- }
- }
-
- return {
- binding: game.settings.get(AECONSTS.MN, "customautospells")[this._binding],
- animations
- }
- }
-
- activateListeners(html) {
- html.on("click", ".fa-trash", async (event) => {
- const binding = game.settings.get(AECONSTS.MN, "customautospells")[this._binding];
- const index = event.currentTarget.closest("li").dataset.index;
- binding.splice(index, 1);
- const newBindings = game.settings.get(AECONSTS.MN, "customautospells");
- newBindings[this._binding] = binding;
- await game.settings.set(AECONSTS.MN, "customautospells",newBindings);
- this.render(true);
- });
- html.on("click", ".add-binding", async (event) => {
- const binding = game.settings.get(AECONSTS.MN, "customautospells")[this._binding];
- binding.push({creature: "Creature Name" ,number: 1});
- const newBindings = game.settings.get(AECONSTS.MN, "customautospells");
- newBindings[this._binding] = binding;
- await game.settings.set(AECONSTS.MN, "customautospells", newBindings);
- this.render(true);
- });
- html.on("change submit", "input, select", async (event) => {
- this.saveData(true);
- });
- }
-
- async saveData(render = true) {
- const newBinding = [];
- for(let li of this.element.find("li")) {
- if(li.className === "add-binding") continue;
- const creature = li.querySelector("input[type=text]").value;
- const animation = li.querySelector("select").value;
- const number = parseInt(li.querySelector("input[type=number]").value);
- newBinding.push({creature, number, animation});
- }
- const newBindings = game.settings.get(AECONSTS.MN, "customautospells");
- newBindings[this._binding] = newBinding;
- await game.settings.set(AECONSTS.MN, "customautospells", newBindings);
- if(render) this.render(true);
- }
-
- async close() {
- await this.saveData(false);
- await super.close();
- Object.values(ui.windows).forEach((window) => {
- if (window instanceof AutomatedEvocationsCustomBindings) {
- window.render(true);
- }
- });
- }
- }
|