Search in sources :

Example 1 with Team

use of jskills.Team in project faf-java-server by FAForever.

the class RatingService method calculateQuality.

public double calculateQuality(Rating left, Rating right) {
    jskills.Rating leftRating = ofNullable(left).map(rating -> new jskills.Rating(left.getMean(), left.getDeviation())).orElse(gameInfo.getDefaultRating());
    jskills.Rating rightRating = ofNullable(left).map(rating -> new jskills.Rating(right.getMean(), right.getDeviation())).orElse(gameInfo.getDefaultRating());
    Collection<ITeam> teams = Arrays.asList(new Team(new Player<>(1), leftRating), new Team(new Player<>(2), rightRating));
    return TrueSkillCalculator.calculateMatchQuality(gameInfo, teams);
}
Also used : Player(jskills.Player) Arrays(java.util.Arrays) ProgrammingError(com.faforever.server.error.ProgrammingError) Getter(lombok.Getter) TrueSkillCalculator(jskills.TrueSkillCalculator) HashMap(java.util.HashMap) Function(java.util.function.Function) ArrayList(java.util.ArrayList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Service(org.springframework.stereotype.Service) Map(java.util.Map) ServerProperties(com.faforever.server.config.ServerProperties) IPlayer(jskills.IPlayer) Rating(com.faforever.server.entity.Rating) GameInfo(jskills.GameInfo) Team(jskills.Team) Optional.ofNullable(java.util.Optional.ofNullable) Collection(java.util.Collection) Collectors(java.util.stream.Collectors) Ladder1v1Rating(com.faforever.server.entity.Ladder1v1Rating) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) GlobalRating(com.faforever.server.entity.GlobalRating) Entry(java.util.Map.Entry) GamePlayerStats(com.faforever.server.entity.GamePlayerStats) AllArgsConstructor(lombok.AllArgsConstructor) Comparator(java.util.Comparator) ITeam(jskills.ITeam) Assert(org.springframework.util.Assert) Player(jskills.Player) IPlayer(jskills.IPlayer) Rating(com.faforever.server.entity.Rating) Ladder1v1Rating(com.faforever.server.entity.Ladder1v1Rating) GlobalRating(com.faforever.server.entity.GlobalRating) ITeam(jskills.ITeam) Team(jskills.Team) ITeam(jskills.ITeam)

Example 2 with Team

use of jskills.Team in project faf-java-server by FAForever.

the class RatingService method updateRatings.

/**
 * Updates the ratings of all players in {@code playerStats} as well as their global/ladder1v1 rating,
 * according to the outcome of the game <strong> without persisting the results</strong>.
 *
 * @param noTeamId ID of the "no team" team
 */
@SuppressWarnings("unchecked")
public void updateRatings(Collection<GamePlayerStats> playerStats, int noTeamId, RatingType ratingType) {
    Map<Integer, GamePlayerStats> playerStatsByPlayerId = playerStats.stream().collect(Collectors.toMap(stats -> stats.getPlayer().getId(), Function.identity()));
    Map<Integer, ScoredTeam> teamsById = teamsById(playerStats, noTeamId);
    List<ScoredTeam> teamsSortedByScore = new ArrayList<>(teamsById.values());
    teamsSortedByScore.sort(Comparator.comparingInt(o -> ((ScoredTeam) o).getScore().intValue()).reversed());
    int[] teamRanks = calculateTeamRanks(teamsSortedByScore);
    // New ArrayList is needed because the JSkill API doesn't handle subclass type parameters
    TrueSkillCalculator.calculateNewRatings(gameInfo, new ArrayList<>(teamsSortedByScore), teamRanks).entrySet().forEach(entry -> {
        Player<Integer> player = (Player<Integer>) entry.getKey();
        GamePlayerStats stats = playerStatsByPlayerId.get(player.getId());
        updatePlayerStats(entry, stats);
        updateRating(ratingType, stats);
    });
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Player(jskills.Player) Arrays(java.util.Arrays) ProgrammingError(com.faforever.server.error.ProgrammingError) Getter(lombok.Getter) TrueSkillCalculator(jskills.TrueSkillCalculator) HashMap(java.util.HashMap) Function(java.util.function.Function) ArrayList(java.util.ArrayList) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Service(org.springframework.stereotype.Service) Map(java.util.Map) ServerProperties(com.faforever.server.config.ServerProperties) IPlayer(jskills.IPlayer) Rating(com.faforever.server.entity.Rating) GameInfo(jskills.GameInfo) Team(jskills.Team) Optional.ofNullable(java.util.Optional.ofNullable) Collection(java.util.Collection) Collectors(java.util.stream.Collectors) Ladder1v1Rating(com.faforever.server.entity.Ladder1v1Rating) Slf4j(lombok.extern.slf4j.Slf4j) List(java.util.List) GlobalRating(com.faforever.server.entity.GlobalRating) Entry(java.util.Map.Entry) GamePlayerStats(com.faforever.server.entity.GamePlayerStats) AllArgsConstructor(lombok.AllArgsConstructor) Comparator(java.util.Comparator) ITeam(jskills.ITeam) Assert(org.springframework.util.Assert) Player(jskills.Player) IPlayer(jskills.IPlayer) GamePlayerStats(com.faforever.server.entity.GamePlayerStats) ArrayList(java.util.ArrayList)

Aggregations

ServerProperties (com.faforever.server.config.ServerProperties)2 GamePlayerStats (com.faforever.server.entity.GamePlayerStats)2 GlobalRating (com.faforever.server.entity.GlobalRating)2 Ladder1v1Rating (com.faforever.server.entity.Ladder1v1Rating)2 Rating (com.faforever.server.entity.Rating)2 ProgrammingError (com.faforever.server.error.ProgrammingError)2 ArrayList (java.util.ArrayList)2 Arrays (java.util.Arrays)2 Collection (java.util.Collection)2 Comparator (java.util.Comparator)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Map (java.util.Map)2 Entry (java.util.Map.Entry)2 Optional.ofNullable (java.util.Optional.ofNullable)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 Function (java.util.function.Function)2 Collectors (java.util.stream.Collectors)2 GameInfo (jskills.GameInfo)2 IPlayer (jskills.IPlayer)2