From 7283a27727bab34f4ac732ab74e4bddf15fbc247 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Mon, 1 Mar 2021 11:42:23 +0200 Subject: [PATCH] Constants should now respect toggles --- .../api/creature/computation/engine/computeConstant.js | 6 ++++++ app/imports/api/creature/computation/engine/computeMemo.js | 5 +++++ .../api/creature/computation/engine/evaluateCalculation.js | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 app/imports/api/creature/computation/engine/computeConstant.js diff --git a/app/imports/api/creature/computation/engine/computeConstant.js b/app/imports/api/creature/computation/engine/computeConstant.js new file mode 100644 index 00000000..bacece4c --- /dev/null +++ b/app/imports/api/creature/computation/engine/computeConstant.js @@ -0,0 +1,6 @@ +import applyToggles from '/imports/api/creature/computation/engine/applyToggles.js'; + +export default function computeConstant(constant, memo){ + // Apply any toggles + applyToggles(constant, memo); +} diff --git a/app/imports/api/creature/computation/engine/computeMemo.js b/app/imports/api/creature/computation/engine/computeMemo.js index ef466c6f..39a4c555 100644 --- a/app/imports/api/creature/computation/engine/computeMemo.js +++ b/app/imports/api/creature/computation/engine/computeMemo.js @@ -5,8 +5,13 @@ import computeEffect from '/imports/api/creature/computation/engine/computeEffec import computeToggle from '/imports/api/creature/computation/engine/computeToggle.js'; import computeEndStepProperty from '/imports/api/creature/computation/engine/computeEndStepProperty.js'; import computeInlineCalculations from '/imports/api/creature/computation/engine/computeInlineCalculations.js'; +import computeConstant from '/imports/api/creature/computation/engine/computeConstant.js'; export default function computeMemo(memo){ + // Compute all constants that could be used + forOwn(memo.constantsByVariableName, constant => { + computeConstant (constant, memo); + }); // Compute level computeLevels(memo); // Compute all stats, even if they are overriden diff --git a/app/imports/api/creature/computation/engine/evaluateCalculation.js b/app/imports/api/creature/computation/engine/evaluateCalculation.js index dafe6a2d..9266efd3 100644 --- a/app/imports/api/creature/computation/engine/evaluateCalculation.js +++ b/app/imports/api/creature/computation/engine/evaluateCalculation.js @@ -71,8 +71,8 @@ function replaceConstants({calc, memo, prop, dependencies, context}){ } else if (node.name === '#constant'){ constant = findAncestorByType({type: 'constant', prop, memo}); } - // replace constants that aren't overridden by stats - if (constant && !stat){ + // replace constants that aren't overridden by stats or disabled by a toggle + if (constant && !constant.deactivatedByToggle && !stat){ dependencies = union(dependencies, [ constant._id, ...constant.dependencies