package com.faforever.client.util; import com.faforever.client.chat.PlayerInfoBean; import com.faforever.client.domain.RatingHistoryDataPoint; import com.faforever.client.remote.domain.Player; import java.util.regex.Matcher; import java.util.regex.Pattern; public final class RatingUtil { private static final Pattern RATING_PATTERN = Pattern.compile("([<>+~](?:\\d\\.?\\d?k|\\d{3,4})|(?:\\d\\.?\\d?k|\\d{3,4})[<>+]|(?:\\d\\.?\\d?k|\\d{1,4})\\s?-\\s?(?:\\d\\.?\\d?k|\\d{3,4}))"); private RatingUtil() { // Utility class } public static int getRoundedGlobalRating(PlayerInfoBean player) { return getRoundedRating(getGlobalRating(player)); } public static int getRoundedRating(int rating) { return (rating + 50) / 100 * 100; } public static int getGlobalRating(PlayerInfoBean playerInfo) { return getRating(playerInfo.getGlobalRatingMean(), playerInfo.getGlobalRatingDeviation()); } public static int getRating(float ratingMean, float ratingDeviation) { return (int) (ratingMean - 3 * ratingDeviation); } public static int getLeaderboardRating(PlayerInfoBean playerInfoBean) { return getRating(playerInfoBean.getLeaderboardRatingMean(), playerInfoBean.getLeaderboardRatingDeviation()); } public static int getGlobalRating(Player player) { return getRating(player.getGlobalRating()[0], player.getGlobalRating()[1]); } public static int getLeaderboardRating(Player player) { return getRating(player.getLadderRating()[0], player.getLadderRating()[1]); } public static int getRating(RatingHistoryDataPoint datapoint) { return getRating(datapoint.getMean(), datapoint.getDeviation()); } public static String extractRating(String title) { Matcher matcher = RATING_PATTERN.matcher(title); if (matcher.find()) { return matcher.group(1); } return null; } }