@coorpacademy/progression-engine
Version:
55 lines (40 loc) • 1.88 kB
JavaScript
;
exports.__esModule = true;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _reduce2 = require('lodash/fp/reduce');
var _reduce3 = _interopRequireDefault(_reduce2);
var _set = require('lodash/fp/set');
var _set2 = _interopRequireDefault(_set);
var _update = require('lodash/fp/update');
var _update2 = _interopRequireDefault(_update);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
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 _reduce = (0, _reduce3.default)(apply, _extends({
lives: fromState.lives,
stars: fromState.stars
}, fromState.variables), instructions),
{ lives, stars } = _reduce,
variables = _objectWithoutProperties(_reduce, ['lives', 'stars']);
return _extends({}, fromState, {
lives,
stars,
variables
});
};
exports.default = updateVariables;
//# sourceMappingURL=apply-instructions.js.map