From 6af9246ad10549815dd524d28f61788de4302817 Mon Sep 17 00:00:00 2001 From: ThaumRystra <9525416+ThaumRystra@users.noreply.github.com> Date: Thu, 9 Nov 2023 23:25:18 +0200 Subject: [PATCH] Added roll and reduce calculation utility --- .../shared/recalculateCalculation.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/imports/api/engine/actions/applyPropertyByType/shared/recalculateCalculation.js b/app/imports/api/engine/actions/applyPropertyByType/shared/recalculateCalculation.js index 512183f7..83997120 100644 --- a/app/imports/api/engine/actions/applyPropertyByType/shared/recalculateCalculation.js +++ b/app/imports/api/engine/actions/applyPropertyByType/shared/recalculateCalculation.js @@ -6,6 +6,7 @@ import { resolveCalculationNode, } from '/imports/api/engine/computation/computeComputation/computeByType/computeCalculation.js'; import { getSingleProperty } from '/imports/api/engine/loadCreatures'; +import resolve from '/imports/parser/resolve.js'; // Redo the work of imports/api/engine/computation/computeComputation/computeByType/computeCalculation.js // But in the action scope @@ -36,3 +37,23 @@ export default function recalculateCalculation(calcObj, actionContext, context, logErrors(calcObj.errors, actionContext); } + +export function rollAndReduceCalculation(calcObj, actionContext, context) { + // Compile + recalculateCalculation(calcObj, actionContext, context, 'compile'); + const compiled = calcObj.valueNode; + const compileErrors = context.errors; + + // Roll + context.errors = []; + const { result: rolled } = resolve('roll', calcObj.valueNode, actionContext.scope, context); + const rollErrors = context.errors; + + // Reduce + context.errors = []; + const { result: reduced } = resolve('reduce', rolled, actionContext.scope, context); + const reduceErrors = context.errors; + + // Return + return { compiled, compileErrors, rolled, rollErrors, reduced, reduceErrors }; +}