All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.wakingrufus.elo.PlayerUtil.kt Maven / Gradle / Ivy

package com.github.wakingrufus.elo


fun calculateTeamRating(players: Collection): Int {
    return players.sumBy { it.currentRating }.div(players.size)
}

fun calculateTeamGamesPlayed(players: Collection): Int {
    return players.sumBy { it.gamesPlayed }.div(players.size)
}

fun buildTeam(allPlayers: Map, teamIds: List): Collection {
 if(teamIds.any { !allPlayers.containsKey(it) }) {
     throw RuntimeException("playerId list contains ids which no player has")
 }
  return allPlayers.filterKeys { teamIds.contains(it) }.values
}

fun addNewPlayers(existingPlayers: Map, game: Game, startingRating: Int): Map {
    var newPlayerMap = existingPlayers
    val allPlayerIds = game.team1PlayerIds + game.team2PlayerIds
    allPlayerIds.forEach { playerId ->
        if (!newPlayerMap.containsKey(playerId)) {
            newPlayerMap += Pair(playerId, Player(
                    id = playerId,
                    currentRating = startingRating
            ))
        }
    }
    return newPlayerMap
}

fun updatePlayer(player: Player, ratingAdjustment: Int, games: Int, wins: Int, losses: Int): Player {
    return player.copy(
            currentRating = player.currentRating + ratingAdjustment,
            gamesPlayed = player.gamesPlayed + games,
            wins = player.wins + wins,
            losses = player.losses + losses)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy