Improved dependencies-only recalculations and fixed many calculation bugs

This commit is contained in:
Stefan Zermatten
2021-02-04 16:16:51 +02:00
parent 6d1e3f078c
commit 280f30dab5
16 changed files with 175 additions and 67 deletions

View File

@@ -1,5 +1,6 @@
import evaluateCalculation from '/imports/api/creature/computation/engine/evaluateCalculation.js';
import ConstantNode from '/imports/parser/parseTree/ConstantNode.js';
import { union } from 'lodash';
export default function computeEndStepProperty(prop, memo){
switch (prop.type){
@@ -35,7 +36,7 @@ function computeAction(prop, memo){
dependencies,
} = evaluateCalculation({ string: prop.uses, prop, memo});
prop.usesResult = result.value;
prop.dependencies.push(...dependencies);
prop.dependencies = union(prop.dependencies, dependencies);
if (context.errors.length){
prop.usesErrors = context.errors;
} else {
@@ -57,7 +58,13 @@ function computeAction(prop, memo){
if (available < attConsumed.quantity){
prop.insufficientResources = true;
}
if (stat) prop.dependencies.push(stat._id, ...stat.dependencies);
if (stat){
prop.dependencies = union(
prop.dependencies,
[stat._id],
stat.dependencies
);
}
}
});
// Items consumed
@@ -76,7 +83,13 @@ function computeAction(prop, memo){
if (!item || available < itemConsumed.quantity){
prop.insufficientResources = true;
}
if (item) prop.dependencies.push(item._id, ...item.dependencies);
if (item){
prop.dependencies = union(
prop.dependencies,
[item._id],
item.dependencies
);
}
});
}
@@ -91,7 +104,7 @@ function computePropertyField(prop, memo, fieldName, fn){
} else {
prop[`${fieldName}Result`] = result.toString();
}
prop.dependencies.push(...dependencies);
prop.dependencies = union(prop.dependencies, dependencies);
if (context.errors.length){
prop[`${fieldName}Errors`] = context.errors;
} else {