From 4ea4348a025fbd4f6a72aa8e3c7ad692db8c478f Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Thu, 4 Feb 2021 16:52:26 +0200 Subject: [PATCH] Now writing partial recalculations to creature variables --- app/client/main.js | 1 + .../engine/writeCreatureVariables.js | 29 ++++++++++++------- .../computation/methods/recomputeCreature.js | 1 + app/imports/client/config.js | 2 ++ 4 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 app/imports/client/config.js diff --git a/app/client/main.js b/app/client/main.js index 7bb6b916..85626b55 100644 --- a/app/client/main.js +++ b/app/client/main.js @@ -1,2 +1,3 @@ import '/imports/ui/vueSetup.js'; import '/imports/ui/styles/stylesIndex.js'; +import '/imports/client/config.js'; diff --git a/app/imports/api/creature/computation/engine/writeCreatureVariables.js b/app/imports/api/creature/computation/engine/writeCreatureVariables.js index e49b55ef..a902004a 100644 --- a/app/imports/api/creature/computation/engine/writeCreatureVariables.js +++ b/app/imports/api/creature/computation/engine/writeCreatureVariables.js @@ -2,7 +2,7 @@ import { pick, forOwn } from 'lodash'; import Creatures from '/imports/api/creature/Creatures.js'; import VERSION from '/imports/constants/VERSION.js'; -export default function writeCreatureVariables(memo, creatureId) { +export default function writeCreatureVariables(memo, creatureId, fullRecompute = true) { const fields = [ 'name', 'attributeType', @@ -28,13 +28,22 @@ export default function writeCreatureVariables(memo, creatureId) { 'level', ]; - memo.creatureVariables = {}; - forOwn(memo.statsByVariableName, (stat, variableName) => { - let condensedStat = pick(stat, fields); - memo.creatureVariables[variableName] = condensedStat; - }); - Creatures.update(creatureId, {$set: { - variables: memo.creatureVariables, - computeVersion: VERSION, - }}); + if (fullRecompute){ + memo.creatureVariables = {}; + forOwn(memo.statsByVariableName, (stat, variableName) => { + let condensedStat = pick(stat, fields); + memo.creatureVariables[variableName] = condensedStat; + }); + Creatures.update(creatureId, {$set: { + variables: memo.creatureVariables, + computeVersion: VERSION, + }}); + } else { + let $set = {}; + forOwn(memo.statsByVariableName, (stat, variableName) => { + let condensedStat = pick(stat, fields); + $set[`variables.${variableName}`] = condensedStat; + }); + Creatures.update(creatureId, {$set}); + } } diff --git a/app/imports/api/creature/computation/methods/recomputeCreature.js b/app/imports/api/creature/computation/methods/recomputeCreature.js index 099e5578..411fbcb5 100644 --- a/app/imports/api/creature/computation/methods/recomputeCreature.js +++ b/app/imports/api/creature/computation/methods/recomputeCreature.js @@ -115,6 +115,7 @@ export function recomputeCreatureByDependencies({ let computationMemo = new ComputationMemo(props, creature); computeMemo(computationMemo); writeAlteredProperties(computationMemo); + writeCreatureVariables(computationMemo, creature._id, false) recomputeInactiveProperties(creature._id); return computationMemo; } diff --git a/app/imports/client/config.js b/app/imports/client/config.js new file mode 100644 index 00000000..3d1619b5 --- /dev/null +++ b/app/imports/client/config.js @@ -0,0 +1,2 @@ +Meteor.connection._bufferedWritesInterval = 0; +//Meteor.connection._bufferedWritesMaxAge = 500;