36 lines
814 B
Scala
36 lines
814 B
Scala
package lila.pool
|
|
|
|
import scala.concurrent.duration._
|
|
|
|
import lila.rating.PerfType
|
|
|
|
case class PoolConfig(
|
|
clock: chess.Clock.Config,
|
|
wave: PoolConfig.Wave
|
|
) {
|
|
|
|
val perfType = PerfType(chess.Speed(clock).key) | PerfType.Classical
|
|
|
|
val id = PoolConfig clockToId clock
|
|
}
|
|
|
|
object PoolConfig {
|
|
|
|
case class Id(value: String) extends AnyVal
|
|
case class NbPlayers(value: Int) extends AnyVal
|
|
|
|
case class Wave(every: FiniteDuration, players: NbPlayers)
|
|
|
|
def clockToId(clock: chess.Clock.Config) = Id(clock.show)
|
|
|
|
import play.api.libs.json._
|
|
implicit val poolConfigJsonWriter = OWrites[PoolConfig] { p =>
|
|
Json.obj(
|
|
"id" -> p.id.value,
|
|
"lim" -> p.clock.limitInMinutes,
|
|
"inc" -> p.clock.incrementSeconds,
|
|
"perf" -> p.perfType.trans(lila.i18n.defaultLang)
|
|
)
|
|
}
|
|
}
|