rank should only allow 'd' and 'p'

This commit is contained in:
Claude Brisson
2023-06-20 12:01:52 +02:00
parent e2cf4bb0fd
commit 1de264a882
2 changed files with 7 additions and 7 deletions

View File

@@ -26,6 +26,11 @@ data class Game(
fun fromSymbol(c: Char) = byChar[c] ?: throw Error("unknown result symbol: $c") fun fromSymbol(c: Char) = byChar[c] ?: throw Error("unknown result symbol: $c")
} }
} }
// pairing needs to know if there has been a draw-up or a draw-down
internal var blackDrawnUp = false
internal var blackDrawnDown = false
internal var whiteDrawnUp = false
internal var whiteDrawnDown = false
} }
// serialization // serialization

View File

@@ -28,13 +28,9 @@ object ByePlayer: Pairable(0, "bye", 0, Int.MIN_VALUE) {
override val country = "none" override val country = "none"
} }
fun Pairable.displayRank(): String = when { fun Pairable.displayRank() = if (rank < 0) "${-rank}k" else "${rank + 1}d"
rank < 0 -> "${-rank}k"
rank < 10 -> "${rank + 1}d"
else -> "${rank - 9}p"
}
private val rankRegex = Regex("(\\d+)([kdp])", RegexOption.IGNORE_CASE) private val rankRegex = Regex("(\\d+)([kd])", RegexOption.IGNORE_CASE)
fun Pairable.Companion.parseRank(rankStr: String): Int { fun Pairable.Companion.parseRank(rankStr: String): Int {
val (level, letter) = rankRegex.matchEntire(rankStr)?.destructured ?: throw Error("invalid rank: $rankStr") val (level, letter) = rankRegex.matchEntire(rankStr)?.destructured ?: throw Error("invalid rank: $rankStr")
@@ -43,7 +39,6 @@ fun Pairable.Companion.parseRank(rankStr: String): Int {
return when (letter.lowercase()) { return when (letter.lowercase()) {
"k" -> -num "k" -> -num
"d" -> num - 1 "d" -> num - 1
"p" -> num + 9
else -> throw Error("impossible") else -> throw Error("impossible")
} }
} }