24 lines
939 B
JavaScript
24 lines
939 B
JavaScript
import applyToggles from '/imports/api/creature/computation/engine/applyToggles.js';
|
|
|
|
export default function computeEffect(proficiency, memo){
|
|
if (proficiency.computationDetails.computed) return;
|
|
if (proficiency.computationDetails.busyComputing){
|
|
// Trying to compute this proficiency again while it is already computing.
|
|
// We must be in a dependency loop.
|
|
proficiency.computationDetails.computed = true;
|
|
proficiency.result = NaN;
|
|
proficiency.computationDetails.busyComputing = false;
|
|
proficiency.computationDetails.error = 'dependencyLoop';
|
|
if (Meteor.isClient) console.warn('dependencyLoop', proficiency);
|
|
return;
|
|
}
|
|
// Before doing any work, mark this proficiency as busy
|
|
proficiency.computationDetails.busyComputing = true;
|
|
|
|
// Apply any toggles
|
|
applyToggles(proficiency, memo);
|
|
|
|
proficiency.computationDetails.computed = true;
|
|
proficiency.computationDetails.busyComputing = false;
|
|
}
|