UNPKG

fifarating

Version:

Utils for Fifa Soccer Game player rating

83 lines (82 loc) 3.28 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { CalculateUtils } from './calculate'; import { ConfigUtils } from './config'; import { Attribute } from './interface'; import { RandomUtils } from './random'; var AttributesUtils = /** @class */ (function () { function AttributesUtils() { } AttributesUtils.init = function (defaultValue) { if (defaultValue === void 0) { defaultValue = 50; } return Object.values(Attribute) .map(function (attr) { var _a; return (_a = {}, _a[attr] = defaultValue, _a); }) .reduce(function (acc, cur) { acc = __assign(__assign({}, acc), cur); return acc; }, {}); }; AttributesUtils.generateSelected = function (mean, stdDev, attributes) { if (attributes === void 0) { attributes = Object.values(Attribute); } return attributes .map(function (attr) { var _a; return (_a = {}, _a[attr] = RandomUtils.gaussianNumberInRange(mean, stdDev), _a); }) .reduce(function (acc, cur) { acc = __assign(__assign({}, acc), cur); return acc; }, {}); }; AttributesUtils.setRawOverall = function (attributes, fifa, position, targetRawOverall) { var config = ConfigUtils.fifaPosition(fifa, position); var keys = Object.keys(config); var index = 0; var calcOverall = CalculateUtils.rawOverall(attributes, fifa, position); while (calcOverall !== targetRawOverall) { var diff = targetRawOverall - calcOverall; var sign = diff >= 0 ? 1 : -1; attributes[keys[index]] += sign; calcOverall = CalculateUtils.rawOverall(attributes, fifa, position); if (Math.abs(keys.length - index) > 1) { index++; } else { index = 0; } } return attributes; }; AttributesUtils.generateRawOverall = function (fifa, position, rawOverall) { var config = ConfigUtils.fifaPosition(fifa, position); var attrBase = AttributesUtils.generateSelected(0.2 * rawOverall, 7.5); var attrUniversal = AttributesUtils.generateSelected(0.7 * rawOverall, 10, [ Attribute.acceleration, Attribute.aggression, Attribute.agility, Attribute.balance, Attribute.jumping, Attribute.reactions, Attribute.sprintspeed, Attribute.stamina, Attribute.strength ]); var attrMain = AttributesUtils.generateSelected(1 * rawOverall, 5, Object.keys(config)); var attrCombined = __assign(__assign(__assign({}, attrBase), attrUniversal), attrMain); return AttributesUtils.setRawOverall(attrCombined, fifa, position, rawOverall); }; return AttributesUtils; }()); export { AttributesUtils };