@coorpacademy/progression-engine
Version:
45 lines (44 loc) • 1.28 kB
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
var _update2 = _interopRequireDefault(require("lodash/fp/update"));
var _set2 = _interopRequireDefault(require("lodash/fp/set"));
var _reduce2 = _interopRequireDefault(require("lodash/fp/reduce"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const apply = (variables, instruction) => {
const {
type,
value,
field
} = instruction;
switch (type) {
case 'set':
return (0, _set2.default)(field, value, variables);
case 'add':
return (0, _update2.default)(field, v => {
if (typeof v === typeof value && (typeof v === 'number' || typeof v === 'string') && (typeof value === 'number' || typeof value === 'string')) return v + value;
return v;
}, variables);
default:
return variables;
}
};
const updateVariables = instructions => fromState => {
const {
lives,
stars,
...variables
} = (0, _reduce2.default)(apply, {
lives: fromState.lives,
stars: fromState.stars,
...fromState.variables
}, instructions);
return {
...fromState,
lives,
stars,
variables
};
};
var _default = exports.default = updateVariables;
//# sourceMappingURL=apply-instructions.js.map