UNPKG

@gamepark/rules-api

Version:

API to implement the rules of a board game

31 lines 1.31 kB
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