UNPKG

fifarating

Version:

Utils for Fifa Soccer Game player rating

86 lines (85 loc) 3.58 kB
"use strict"; 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AttributesUtils = void 0; var calculate_1 = require("./calculate"); var config_1 = require("./config"); var interface_1 = require("./interface"); var random_1 = require("./random"); var AttributesUtils = /** @class */ (function () { function AttributesUtils() { } AttributesUtils.init = function (defaultValue) { if (defaultValue === void 0) { defaultValue = 50; } return Object.values(interface_1.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(interface_1.Attribute); } return attributes .map(function (attr) { var _a; return (_a = {}, _a[attr] = random_1.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 = config_1.ConfigUtils.fifaPosition(fifa, position); var keys = Object.keys(config); var index = 0; var calcOverall = calculate_1.CalculateUtils.rawOverall(attributes, fifa, position); while (calcOverall !== targetRawOverall) { var diff = targetRawOverall - calcOverall; var sign = diff >= 0 ? 1 : -1; attributes[keys[index]] += sign; calcOverall = calculate_1.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 = config_1.ConfigUtils.fifaPosition(fifa, position); var attrBase = AttributesUtils.generateSelected(0.2 * rawOverall, 7.5); var attrUniversal = AttributesUtils.generateSelected(0.7 * rawOverall, 10, [ interface_1.Attribute.acceleration, interface_1.Attribute.aggression, interface_1.Attribute.agility, interface_1.Attribute.balance, interface_1.Attribute.jumping, interface_1.Attribute.reactions, interface_1.Attribute.sprintspeed, interface_1.Attribute.stamina, interface_1.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; }()); exports.AttributesUtils = AttributesUtils;