Skip to content

Commit

Permalink
fix game variant when from a position
Browse files Browse the repository at this point in the history
  • Loading branch information
ornicar committed Mar 9, 2018
1 parent 5d3c4d5 commit 4e82c37
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions modules/setup/src/main/Config.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package lila.setup

import chess.{ Game => ChessGame, Situation, Clock, Speed }
import chess.variant.FromPosition

import lila.game.Game
import lila.lobby.Color
Expand Down Expand Up @@ -54,12 +55,14 @@ trait Positional { self: Config =>

def strictFen: Boolean

lazy val validFen = variant != chess.variant.FromPosition || {
lazy val validFen = variant != FromPosition || {
fen ?? { f => ~(Forsyth <<< f).map(_.situation playable strictFen) }
}

def fenGame(builder: ChessGame => Game): Game = {
val baseState = fen ifTrue (variant == chess.variant.FromPosition) flatMap Forsyth.<<<
val baseState = fen ifTrue (variant == FromPosition) flatMap {
Forsyth.<<<@(FromPosition, _)
}
val (chessGame, state) = baseState.fold(makeGame -> none[SituationPlus]) {
case sit @ SituationPlus(s, _) =>
val game = ChessGame(
Expand All @@ -78,7 +81,7 @@ trait Positional { self: Config =>
situation = game.situation.copy(
board = game.board.copy(
history = board.history,
variant = chess.variant.FromPosition
variant = FromPosition
)
),
turns = sit.turns
Expand All @@ -94,7 +97,7 @@ trait BaseConfig {
val variants = List(chess.variant.Standard.id, chess.variant.Chess960.id)
val variantDefault = chess.variant.Standard

val variantsWithFen = variants :+ chess.variant.FromPosition.id
val variantsWithFen = variants :+ FromPosition.id
val aiVariants = variants :+
chess.variant.Crazyhouse.id :+
chess.variant.KingOfTheHill.id :+
Expand All @@ -114,7 +117,7 @@ trait BaseConfig {
chess.variant.Horde.id :+
chess.variant.RacingKings.id
val variantsWithFenAndVariants =
variantsWithVariants :+ chess.variant.FromPosition.id
variantsWithVariants :+ FromPosition.id

val speeds = Speed.all map (_.id)

Expand Down

0 comments on commit 4e82c37

Please sign in to comment.