Reworked toggles, again, to try and catch more edge cases. Made toggles set the inactive status of their property children in the compute step instead of the inactive denormalisation step
This commit is contained in:
@@ -256,7 +256,6 @@ const propDetailsByType = {
|
||||
default(){
|
||||
return {
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
};
|
||||
},
|
||||
toggle(){
|
||||
@@ -264,7 +263,6 @@ const propDetailsByType = {
|
||||
computed: false,
|
||||
busyComputing: false,
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
};
|
||||
},
|
||||
attribute(){
|
||||
@@ -273,7 +271,6 @@ const propDetailsByType = {
|
||||
busyComputing: false,
|
||||
effects: [],
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
idsOfSameName: [],
|
||||
};
|
||||
},
|
||||
@@ -284,7 +281,6 @@ const propDetailsByType = {
|
||||
effects: [],
|
||||
proficiencies: [],
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
idsOfSameName: [],
|
||||
};
|
||||
},
|
||||
@@ -293,26 +289,22 @@ const propDetailsByType = {
|
||||
computed: false,
|
||||
busyComputing: false,
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
};
|
||||
},
|
||||
classLevel(){
|
||||
return {
|
||||
computed: true,
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
};
|
||||
},
|
||||
proficiency(){
|
||||
return {
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
};
|
||||
},
|
||||
denormalizedStat(){
|
||||
return {
|
||||
toggleAncestors: [],
|
||||
disabledByToggle: false,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,9 @@ export default function applyToggles(prop, memo){
|
||||
toggle.dependencies,
|
||||
);
|
||||
if (!toggle.toggleResult){
|
||||
prop.computationDetails.disabledByToggle = true;
|
||||
prop.inactive = true;
|
||||
prop.deactivatedByAncestor = true;
|
||||
prop.deactivatedByToggle = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ function combineSkill(stat, aggregator, memo){
|
||||
let prof = stat.computationDetails.proficiencies[i];
|
||||
applyToggles(prof, memo);
|
||||
if (
|
||||
!prof.computationDetails.disabledByToggle &&
|
||||
!prof.deactivatedByToggle &&
|
||||
prof.value > stat.proficiency
|
||||
){
|
||||
stat.proficiency = prof.value;
|
||||
|
||||
@@ -22,7 +22,7 @@ export default function computeStat(stat, memo){
|
||||
// Apply any toggles
|
||||
applyToggles(stat, memo);
|
||||
|
||||
if (!stat.computationDetails.disabledByToggle){
|
||||
if (!stat.deactivatedByToggle){
|
||||
// Compute and aggregate all the effects
|
||||
let aggregator = new EffectAggregator(stat, memo)
|
||||
each(stat.computationDetails.effects, (effect) => {
|
||||
@@ -37,7 +37,7 @@ export default function computeStat(stat, memo){
|
||||
stat.dependencies,
|
||||
effect.dependencies
|
||||
)
|
||||
if (!effect.computationDetails.disabledByToggle){
|
||||
if (!effect.deactivatedByToggle){
|
||||
aggregator.addEffect(effect);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import evaluateCalculation from '/imports/api/creature/computation/engine/evaluateCalculation.js';
|
||||
import applyToggles from '/imports/api/creature/computation/engine/applyToggles.js';
|
||||
import { union } from 'lodash';
|
||||
|
||||
export default function computeToggle(toggle, memo){
|
||||
@@ -16,6 +17,9 @@ export default function computeToggle(toggle, memo){
|
||||
// Before doing any work, mark this toggle as busy
|
||||
toggle.computationDetails.busyComputing = true;
|
||||
|
||||
// Apply any parent toggles
|
||||
applyToggles(toggle, memo);
|
||||
|
||||
// Do work
|
||||
delete toggle.errors;
|
||||
if (toggle.enabled){
|
||||
@@ -41,6 +45,11 @@ export default function computeToggle(toggle, memo){
|
||||
toggle.errors = context.errors;
|
||||
}
|
||||
}
|
||||
if (!toggle.toggleResult){
|
||||
toggle.inactive = true;
|
||||
toggle.deactivatedBySelf = true;
|
||||
toggle.deactivatedByToggle = true;
|
||||
}
|
||||
toggle.computationDetails.computed = true;
|
||||
toggle.computationDetails.busyComputing = false;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,14 @@ export default function writeAlteredProperties(memo){
|
||||
ids.forEach(id => {
|
||||
let op = undefined;
|
||||
let original = memo.originalPropsById[id];
|
||||
let keys = ['dependencies', ...schema.objectKeys()];
|
||||
let keys = [
|
||||
'dependencies',
|
||||
'inactive',
|
||||
'deactivatedBySelf',
|
||||
'deactivatedByAncestor',
|
||||
'deactivatedByToggle',
|
||||
...schema.objectKeys(),
|
||||
];
|
||||
op = addChangedKeysToOp(op, keys, original, changed);
|
||||
if (op){
|
||||
bulkWriteOperations.push(op);
|
||||
|
||||
Reference in New Issue
Block a user