26 lines
924 B
JavaScript
26 lines
924 B
JavaScript
import computeToggle from '/imports/api/creature/computation/engine/computeToggle.js';
|
|
import { union } from 'lodash';
|
|
|
|
export default function applyToggles(prop, memo){
|
|
// If it used to be inactive delete those fields
|
|
if (prop.inactive) prop.inactive = undefined;
|
|
if (prop.deactivatedByAncestor) prop.deactivatedByAncestor = undefined;
|
|
if (prop.deactivatedByToggle) prop.deactivatedByToggle = undefined;
|
|
// Iterate through the toggle ancestors from oldest to nearest
|
|
prop.computationDetails.toggleAncestors.forEach(toggleId => {
|
|
let toggle = memo.togglesById[toggleId];
|
|
computeToggle(toggle, memo);
|
|
prop.dependencies = union(
|
|
prop.dependencies,
|
|
[toggle._id],
|
|
toggle.dependencies,
|
|
);
|
|
// Deactivate if the toggle is false
|
|
if (!toggle.toggleResult){
|
|
prop.inactive = true;
|
|
prop.deactivatedByAncestor = true;
|
|
prop.deactivatedByToggle = true;
|
|
}
|
|
});
|
|
}
|