Add individual correctionMms field

This commit is contained in:
Claude Brisson
2024-01-23 19:28:12 +01:00
parent b7e2e418ef
commit 829fbb764a
2 changed files with 8 additions and 5 deletions

View File

@@ -7,7 +7,7 @@ import java.util.*
// Pairable // Pairable
sealed class Pairable(val id: ID, val name: String, open val rating: Int, open val rank: Int, val final: Boolean) { sealed class Pairable(val id: ID, val name: String, open val rating: Int, open val rank: Int, val final: Boolean, val mmsCorrection: Int = 0) {
companion object { companion object {
const val MIN_RANK: Int = -30 // 30k const val MIN_RANK: Int = -30 // 30k
const val MAX_RANK: Int = 8 // 9D const val MAX_RANK: Int = 8 // 9D
@@ -71,8 +71,9 @@ class Player(
rank: Int, rank: Int,
override var country: String, override var country: String,
override var club: String, override var club: String,
final: Boolean final: Boolean,
): Pairable(id, name, rating, rank, final) { mmsCorrection: Int = 0
): Pairable(id, name, rating, rank, final, mmsCorrection) {
companion object companion object
// used to store external IDs ("FFG" => FFG ID, "EGF" => EGF PIN, "AGA" => AGA ID ...) // used to store external IDs ("FFG" => FFG ID, "EGF" => EGF PIN, "AGA" => AGA ID ...)
val externalIds = mutableMapOf<DatabaseId, String>() val externalIds = mutableMapOf<DatabaseId, String>()
@@ -87,6 +88,7 @@ class Player(
"final" to final "final" to final
).also { json -> ).also { json ->
if (skip.isNotEmpty()) json["skip"] = Json.Array(skip) if (skip.isNotEmpty()) json["skip"] = Json.Array(skip)
if (mmsCorrection != 0) json["mmsCorrection"] = mmsCorrection
externalIds.forEach { (dbid, id) -> externalIds.forEach { (dbid, id) ->
json[dbid.key] = id json[dbid.key] = id
} }
@@ -106,7 +108,8 @@ fun Player.Companion.fromJson(json: Json.Object, default: Player? = null) = Play
rank = json.getInt("rank") ?: default?.rank ?: badRequest("missing rank"), rank = json.getInt("rank") ?: default?.rank ?: badRequest("missing rank"),
country = json.getString("country") ?: default?.country ?: badRequest("missing country"), country = json.getString("country") ?: default?.country ?: badRequest("missing country"),
club = json.getString("club") ?: default?.club ?: badRequest("missing club"), club = json.getString("club") ?: default?.club ?: badRequest("missing club"),
final = json.getBoolean("final") ?: default?.final ?: true final = json.getBoolean("final") ?: default?.final ?: true,
mmsCorrection = json.getInt("mmsCorrection") ?: default?.mmsCorrection ?: 0
).also { player -> ).also { player ->
player.skip.clear() player.skip.clear()
json.getArray("skip")?.let { json.getArray("skip")?.let {

View File

@@ -24,7 +24,7 @@ class MacMahonSolver(round: Int,
} }
} }
val Pairable.mmBase: Double get() = min(max(rank, mmFloor), mmBar) + mmsZero val Pairable.mmBase: Double get() = min(max(rank, mmFloor), mmBar) + mmsZero + mmsCorrection
val Pairable.mms: Double get() = scores[id] ?: 0.0 val Pairable.mms: Double get() = scores[id] ?: 0.0
// CB TODO - configurable criteria // CB TODO - configurable criteria