From 0f7035bbd0d957836fc1af54b8748a59571e2f4a Mon Sep 17 00:00:00 2001 From: Daniel Dugovic Date: Sun, 1 Dec 2019 10:35:49 -0600 Subject: [PATCH] Exclude inactive players from variant leaderboard --- modules/rating/src/main/Glicko.scala | 8 ++++++-- modules/rating/src/main/Perf.scala | 2 +- modules/user/src/main/RankingApi.scala | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/rating/src/main/Glicko.scala b/modules/rating/src/main/Glicko.scala index 63d9a86fe6..a9ed09248a 100644 --- a/modules/rating/src/main/Glicko.scala +++ b/modules/rating/src/main/Glicko.scala @@ -20,7 +20,10 @@ case class Glicko( def intervalMax = (rating + deviation * 2).toInt def interval = intervalMin -> intervalMax - def rankable = deviation <= Glicko.rankableDeviation + def rankable(variant: chess.variant.Variant) = deviation <= (variant match { + case chess.variant.Standard => Glicko.standardRankableDeviation + case _ => Glicko.variantRankableDeviation + }) def provisional = deviation >= Glicko.provisionalDeviation def established = !provisional def establishedIntRating = established option intRating @@ -61,7 +64,8 @@ case object Glicko { val defaultIntRating = default.rating.toInt val minDeviation = 50 - val rankableDeviation = 80 + val variantRankableDeviation = 60 + val standardRankableDeviation = 80 val provisionalDeviation = 110 val maxDeviation = 350 diff --git a/modules/rating/src/main/Perf.scala b/modules/rating/src/main/Perf.scala index 4bc6a67063..aec785d193 100644 --- a/modules/rating/src/main/Perf.scala +++ b/modules/rating/src/main/Perf.scala @@ -65,7 +65,7 @@ case class Perf( def isEmpty = nb == 0 def nonEmpty = !isEmpty - def rankable = glicko.rankable + def rankable(variant: chess.variant.Variant) = glicko.rankable(variant) def provisional = glicko.provisional def established = glicko.established } diff --git a/modules/user/src/main/RankingApi.scala b/modules/user/src/main/RankingApi.scala index e407990d04..277e2ceeb7 100644 --- a/modules/user/src/main/RankingApi.scala +++ b/modules/user/src/main/RankingApi.scala @@ -30,7 +30,7 @@ final class RankingApi( "perf" -> perfType.id, "rating" -> perf.intRating, "prog" -> perf.progress, - "stable" -> perf.rankable, + "stable" -> perf.rankable(PerfType variantOf perfType), "expiresAt" -> DateTime.now.plusDays(7) ), upsert = true).void