Use case objects for variants
parent
fa0d737191
commit
f59de1cad4
|
@ -17,7 +17,7 @@ case class DbGame(
|
|||
positionHashes: String = "",
|
||||
castles: String = "KQkq",
|
||||
isRated: Boolean = false,
|
||||
variant: Variant.Value = Variant.standard) {
|
||||
variant: Variant = Standard) {
|
||||
|
||||
val players = List(whitePlayer, blackPlayer)
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ case class RawDbGame(
|
|||
whitePlayer ← players find (_.color == "white") flatMap (_.decode)
|
||||
blackPlayer ← players find (_.color == "black") flatMap (_.decode)
|
||||
trueStatus ← Status fromInt status
|
||||
trueVariant ← Variant fromInt variant
|
||||
trueVariant ← Variant(variant)
|
||||
validClock = clock flatMap (_.decode)
|
||||
if validClock.isDefined == clock.isDefined
|
||||
} yield DbGame(
|
||||
|
@ -59,7 +59,7 @@ object RawDbGame {
|
|||
positionHashes = positionHashes,
|
||||
castles = castles,
|
||||
isRated = isRated,
|
||||
variant = Variant toInt variant
|
||||
variant = variant.id
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package lila.system
|
||||
package model
|
||||
|
||||
sealed trait Variant {
|
||||
|
||||
val name: String
|
||||
|
||||
val id: Int
|
||||
|
||||
override def toString = name
|
||||
}
|
||||
|
||||
case object Standard extends Variant {
|
||||
|
||||
val name = "standard"
|
||||
|
||||
val id = 1
|
||||
}
|
||||
|
||||
case object Chess960 extends Variant {
|
||||
|
||||
val name = "chess960"
|
||||
|
||||
val id = 2
|
||||
}
|
||||
|
||||
object Variant {
|
||||
|
||||
val all = List(Standard, Chess960)
|
||||
|
||||
val byId = all map { v => (v.id, v) } toMap
|
||||
|
||||
def apply(id: Int): Option[Variant] = byId get id
|
||||
}
|
|
@ -24,19 +24,3 @@ object Status extends Enumeration {
|
|||
|
||||
def fromInt(i: Int): Option[Value] = indexed get i
|
||||
}
|
||||
|
||||
object Variant extends Enumeration {
|
||||
|
||||
val standard, chess960 = Value
|
||||
|
||||
def toInt(s: Value) = s match {
|
||||
case x if x == standard ⇒ 1
|
||||
case x if x == chess960 ⇒ 2
|
||||
}
|
||||
|
||||
val indexed: Map[Int, Value] = values map { v =>
|
||||
toInt(v) -> v
|
||||
} toMap
|
||||
|
||||
def fromInt(i: Int): Option[Value] = indexed get i
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue