Computation engine rewrite continues
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
|
||||
/**
|
||||
* Iterate through all the defining properties and choose the highest
|
||||
* `baseValue.value`
|
||||
*/
|
||||
export default function aggregateBaseValue({node, linkedNode, link}){
|
||||
if (link.data !== 'definition') return;
|
||||
const propBaseValue = linkedNode.data.baseValue?.value;
|
||||
if (propBaseValue === undefined) return;
|
||||
if (node.baseValue === undefined || propBaseValue > node.baseValue){
|
||||
node.baseValue = propBaseValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
export default function aggregateDefinitions({node, linkedNode, link}){
|
||||
// Look at all definition links
|
||||
if (link.data !== 'definition') return;
|
||||
const prop = linkedNode.data;
|
||||
// get current defining prop
|
||||
const definingProp = node.data.definingProp;
|
||||
// Find the last defining prop
|
||||
if (!definingProp || prop.order > definingProp.order){
|
||||
// override the current defining prop
|
||||
overrideProp(definingProp, node);
|
||||
// set this prop as the new defining prop
|
||||
node.data.definingProp = prop;
|
||||
} else {
|
||||
overrideProp(prop, node);
|
||||
}
|
||||
}
|
||||
|
||||
function overrideProp(prop, node){
|
||||
if (!prop) return;
|
||||
prop.overriden = true;
|
||||
if (!node.data.overridenProps) node.data.overridenProps = [];
|
||||
node.data.overridenProp.push(prop);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import definitions from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateDefinitions.js';
|
||||
import baseValue from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateBaseValue.js';
|
||||
import damageMultipliers from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateDamageMultipliers.js';
|
||||
import effects from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateEffects.js';
|
||||
import proficiencies from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateProficiencies.js';
|
||||
import skills from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateProficiencies.js';
|
||||
import toggles from '/imports/api/creature/computation/newEngine/computeComputation/aggregateProps/aggregateToggles.js';
|
||||
|
||||
export default Object.freeze({
|
||||
definitions,
|
||||
baseValue,
|
||||
damageMultipliers,
|
||||
effects,
|
||||
proficiencies,
|
||||
skills,
|
||||
toggles,
|
||||
});
|
||||
Reference in New Issue
Block a user