genshin-manager
Version:
<div align="center"> <p> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https://img.shields.io/npm/v/genshin-manager.svg?maxAge=3600" alt="npm version" /></a> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https:
28 lines (27 loc) • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculatePromoteLevel = calculatePromoteLevel;
const OutOfRangeError_1 = require("../errors/OutOfRangeError");
/**
* Calculate promote level
* @param promotesJson Promotes json
* @param level Level (1-90)
* @param isAscended Is ascended
* @returns Promote level (0-6)
*/
function calculatePromoteLevel(promotesJson, level, isAscended) {
if (level < 1 || level > 90)
throw new OutOfRangeError_1.OutOfRangeError('level', level, 1, 90);
const maxPromoteLevel = Math.max(...Object.values(promotesJson).map((promote) => { var _a; return ((_a = promote.promoteLevel) !== null && _a !== void 0 ? _a : 0); }));
const beforePromoteLevels = Object.values(promotesJson)
.filter((promote) => promote.unlockMaxLevel < level)
.map((promote) => { var _a; return ((_a = promote.promoteLevel) !== null && _a !== void 0 ? _a : 0) + 1; });
const afterPromoteLevels = Object.values(promotesJson)
.filter((promote) => promote.unlockMaxLevel <= level)
.map((promote) => { var _a; return ((_a = promote.promoteLevel) !== null && _a !== void 0 ? _a : 0) + 1; });
const beforePromoteLevelByLevel = Math.max(...beforePromoteLevels, 0);
const afterPromoteLevelByLevel = Math.max(...afterPromoteLevels, 0);
return isAscended
? Math.min(afterPromoteLevelByLevel, maxPromoteLevel)
: beforePromoteLevelByLevel;
}