lila/modules/setup/src/main/OpenConfig.scala

44 lines
973 B
Scala
Raw Normal View History

2020-04-23 20:03:47 -06:00
package lila.setup
import chess.Clock
import chess.format.FEN
2020-04-23 20:03:47 -06:00
import chess.variant.FromPosition
2020-04-23 20:03:47 -06:00
import lila.game.PerfPicker
import lila.rating.PerfType
2020-04-23 20:03:47 -06:00
final case class OpenConfig(
name: Option[String],
2020-04-23 20:03:47 -06:00
variant: chess.variant.Variant,
clock: Option[Clock.Config],
rated: Boolean,
2020-04-23 20:03:47 -06:00
position: Option[FEN] = None
) {
def perfType: Option[PerfType] = PerfPicker.perfType(chess.Speed(clock), variant, none)
def validFen = ApiConfig.validFen(variant, position)
2020-05-24 19:33:59 -06:00
def autoVariant =
if (variant.standard && position.exists(!_.initial)) copy(variant = FromPosition)
2020-05-24 19:33:59 -06:00
else this
2020-04-23 20:03:47 -06:00
}
object OpenConfig {
def from(
n: Option[String],
v: Option[String],
cl: Option[Clock.Config],
rated: Boolean,
pos: Option[FEN]
) =
2020-04-23 20:03:47 -06:00
new OpenConfig(
name = n.map(_.trim).filter(_.nonEmpty),
2020-05-24 19:33:59 -06:00
variant = chess.variant.Variant.orDefault(~v),
2020-04-23 20:03:47 -06:00
clock = cl,
rated = rated,
position = pos
2020-05-24 19:33:59 -06:00
).autoVariant
2020-04-23 20:03:47 -06:00
}