From 4e82c371376dfbf572c09cda87eb751a73607d3c Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 9 Mar 2018 13:20:41 -0500 Subject: [PATCH] fix game variant when from a position --- modules/setup/src/main/Config.scala | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/setup/src/main/Config.scala b/modules/setup/src/main/Config.scala index 71bb79874812..a798dc220b9e 100644 --- a/modules/setup/src/main/Config.scala +++ b/modules/setup/src/main/Config.scala @@ -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 @@ -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( @@ -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 @@ -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 :+ @@ -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)