Skip to content

Commit

Permalink
refactor: do some cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
ghost91- committed Dec 12, 2021
1 parent e50cc10 commit 13bb168
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 61 deletions.
2 changes: 1 addition & 1 deletion src/module/canvasanimation.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export class FXCanvasAnimation extends CanvasAnimation {
.filter((a) => a.delta !== 0);

// Register the request function and context
context = context || canvas.stage;
context = context ?? canvas.stage;

// Dispatch the animation request and return as a Promise
return this._animatePromise(this._animateFrameSmooth(ease), context, name, attributes, duration, ontick);
Expand Down
18 changes: 9 additions & 9 deletions src/module/filterEffects/FilterManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class FilterManager {

activate() {
this.filterInfos = canvas.scene.getFlag("fxmaster", "filters");
this.filterInfos = this.filterInfos || {};
this.filterInfos = this.filterInfos ?? {};

// Creating new filters from filterInfos
this.filters = Object.keys(this.filterInfos).reduce((filters, key) => {
Expand All @@ -27,9 +27,9 @@ class FilterManager {
return filters;
}, this.filters);

this.filters = this.filters || {};
this.filters = this.filters ?? {};

this.apply_to = canvas.scene.getFlag("fxmaster", "filteredLayers") || {};
this.apply_to = canvas.scene.getFlag("fxmaster", "filteredLayers") ?? {};
Object.keys(this.apply_to).forEach((k) => {
if (this.apply_to[k]) {
canvas[k].filters = [...Object.values(this.filters)];
Expand All @@ -46,8 +46,8 @@ class FilterManager {

async update() {
this.filterInfos = canvas.scene.getFlag("fxmaster", "filters");
this.filterInfos = this.filterInfos || {};
this.apply_to = canvas.scene.getFlag("fxmaster", "filteredLayers") || {};
this.filterInfos = this.filterInfos ?? {};
this.apply_to = canvas.scene.getFlag("fxmaster", "filteredLayers") ?? {};

// Clear unused effects
const deletePromises = [];
Expand Down Expand Up @@ -79,8 +79,8 @@ class FilterManager {
this.filters[key].play();
}
}
this.filters = this.filters || {};
this.apply_to = canvas.scene.getFlag("fxmaster", "filteredLayers") || {};
this.filters = this.filters ?? {};
this.apply_to = canvas.scene.getFlag("fxmaster", "filteredLayers") ?? {};
Object.keys(this.apply_to).forEach((k) => {
if (this.apply_to[k]) {
canvas[k].filters = [...Object.values(this.filters)];
Expand All @@ -105,8 +105,8 @@ class FilterManager {
}

addFilter(name, filter, options) {
name = name || randomID();
this.filterInfos = this.filterInfos || {};
name = name ?? randomID();
this.filterInfos = this.filterInfos ?? {};
this.filterInfos[name] = {
type: filter,
options: options,
Expand Down
60 changes: 32 additions & 28 deletions src/module/filterEffects/applications/filters-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export class FiltersConfig extends FormApplication {
* @return {Object} The data provided to the template when rendering the form
*/
getData() {
const currentFilters = canvas.scene.getFlag("fxmaster", "filters") || {};
const currentFilters = canvas.scene.getFlag("fxmaster", "filters") ?? {};
const activeFilters = Object.values(currentFilters).reduce((obj, f) => {
obj[f.type] = f.options;
return obj;
Expand All @@ -36,7 +36,7 @@ export class FiltersConfig extends FormApplication {
return {
filters: CONFIG.fxmaster.filters,
activeFilters: activeFilters,
layers: filteredLayers || { background: true, foreground: true, tokens: true, drawings: true },
layers: filteredLayers ?? { background: true, foreground: true, tokens: true, drawings: true },
};
}

Expand Down Expand Up @@ -92,42 +92,46 @@ export class FiltersConfig extends FormApplication {

/**
* This method is called upon form submission after form data is validated
* @param event {Event} The initial triggering submission event
* @param formData {Object} The object of validated form data with which to update the object
* @param {Event} event The initial triggering submission event
* @param {object} formData The object of validated form data with which to update the object
* @private
*/
async _updateObject(_, formData) {
const filtersDB = CONFIG.fxmaster.filters;
const filters = {};
Object.keys(filtersDB).forEach((key) => {
const label = filtersDB[key].label;
if (formData[label]) {
const filter = {
type: key,
options: {},
};
Object.keys(filtersDB[key].parameters).forEach((k) => {
if (filtersDB[key].parameters[k].type === "color") {
filter.options[k] = { apply: formData[`${label}_${k}_apply`], value: formData[`${label}_${k}`] };
return;
}
filter.options[k] = formData[`${label}_${k}`];
});
filters[`core_${key}`] = filter;
}
});

const apply_to = {
const filters = Object.fromEntries(
Object.entries(filtersDB)
.filter(([, filterCls]) => !!formData[filterCls.label])
.map(([filterName, filterCls]) => {
const label = filterCls.label;

const options = Object.fromEntries(
Object.entries(filterCls.parameters).map(([key, parameter]) => {
const optionValue =
parameter.type === "color"
? { apply: formData[`${label}_${key}_apply`], value: formData[`${label}_${key}`] }
: formData[`${label}_${key}`];

return [key, optionValue];
}),
);

const filter = {
type: filterName,
options,
};
return [`core_${filterName}`, filter];
}),
);

const filteredLayers = {
background: formData["background"],
foreground: formData["foreground"],
drawings: formData["drawings"],
tokens: formData["tokens"],
};

canvas.scene.setFlag("fxmaster", "filteredLayers", apply_to).then(() => {
resetFlags(canvas.scene, "filters", filters);
});
await canvas.scene.setFlag("fxmaster", "filteredLayers", filteredLayers);
resetFlags(canvas.scene, "filters", filters);
}
}

FiltersConfig.CONFIG_SETTING = "filtersConfiguration";
2 changes: 1 addition & 1 deletion src/module/weatherEffects/WeatherLayer.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ export class WeatherLayer extends CanvasLayer {
}

configureEffect(id) {
const flags = canvas.scene.getFlag("fxmaster", "effects") || {};
const flags = canvas.scene.getFlag("fxmaster", "effects") ?? {};
if (!flags[id]) return;
Object.entries(flags[id].options).forEach(([key, val]) => {
const effectClass = CONFIG.fxmaster.weather[flags[id].type];
Expand Down
47 changes: 25 additions & 22 deletions src/module/weatherEffects/applications/weather-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ export class WeatherConfig extends FormApplication {
* @return {Object} The data provided to the template when rendering the form
*/
getData() {
// Return data to the template
const currentEffects = canvas.scene.getFlag("fxmaster", "effects") || {};
const currentEffects = canvas.scene.getFlag("fxmaster", "effects") ?? {};
const activeEffects = Object.values(currentEffects).reduce((obj, f) => {
obj[f.type] = f.options;
return obj;
Expand Down Expand Up @@ -99,26 +98,30 @@ export class WeatherConfig extends FormApplication {
*/
async _updateObject(_, formData) {
const weathersDB = CONFIG.fxmaster.weather;
const effects = {};
Object.keys(weathersDB).forEach((key) => {
const label = weathersDB[key].label;
if (formData[label]) {
const effect = {
type: key,
options: {},
};
Object.keys(weathersDB[key].parameters).forEach((k) => {
if (weathersDB[key].parameters[k].type === "color") {
effect.options[k] = { apply: formData[`${label}_${k}_apply`], value: formData[`${label}_${k}`] };
return;
}
effect.options[k] = formData[`${label}_${k}`];
});
effects[`core_${key}`] = effect;
}
});
const effects = Object.fromEntries(
Object.entries(weathersDB)
.filter(([, weatherCls]) => !!formData[weatherCls.label])
.map(([weatherName, weatherCls]) => {
const label = weatherCls.label;

const options = Object.fromEntries(
Object.entries(weatherCls.parameters).map(([key, parameter]) => {
const optionValue =
parameter.type === "color"
? { apply: formData[`${label}_${key}_apply`], value: formData[`${label}_${key}`] }
: formData[`${label}_${key}`];

return [key, optionValue];
}),
);

const weather = {
type: weatherName,
options,
};
return [`core_${weatherName}`, weather];
}),
);
resetFlags(canvas.scene, "effects", effects);
}
}

WeatherConfig.CONFIG_SETTING = "effectsConfiguration";

0 comments on commit 13bb168

Please sign in to comment.