fifarating
Version:
Utils for Fifa Soccer Game player rating
83 lines (82 loc) • 3.28 kB
JavaScript
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 };