@gamepark/rules-api
Version:
API to implement the rules of a board game
31 lines • 1.31 kB
JavaScript
import { isCompetitiveRank, isCompetitiveScore } from '../Competitive';
export const rankPlayers = (rules, playerA, playerB) => {
if (isCompetitiveRank(rules)) {
return rules.rankPlayers(playerA, playerB);
}
if (isCompetitiveScore(rules)) {
const scoreA = rules.getScore(playerA);
const scoreB = rules.getScore(playerB);
if (scoreA !== scoreB) {
return rules.rankByLowerScore ? scoreA - scoreB : scoreB - scoreA;
}
if (rules.getTieBreaker) {
for (let tieBreaker = 1; tieBreaker <= 10; tieBreaker++) {
const tieBreakerA = rules.getTieBreaker(tieBreaker, playerA);
const tieBreakerB = rules.getTieBreaker(tieBreaker, playerB);
if (tieBreakerA === undefined) {
return tieBreakerB === undefined ? 0 : Infinity;
}
else if (tieBreakerB === undefined) {
return -Infinity;
}
else if (tieBreakerA !== tieBreakerB) {
return tieBreakerB - tieBreakerA;
}
}
console.error('getTieBreaker must return "undefined" after the last tie breaker is still a tie!');
}
}
return 0;
};
//# sourceMappingURL=rank.util.js.map