diff --git a/.idea/scala_settings.xml b/.idea/scala_settings.xml new file mode 100644 index 0000000..4608fe0 --- /dev/null +++ b/.idea/scala_settings.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/modules/backcore/src/main/scala/de/nowchess/backcore/game/GameMapper.scala b/modules/backcore/src/main/scala/de/nowchess/backcore/game/GameMapper.scala index 814770a..2c7a45a 100644 --- a/modules/backcore/src/main/scala/de/nowchess/backcore/game/GameMapper.scala +++ b/modules/backcore/src/main/scala/de/nowchess/backcore/game/GameMapper.scala @@ -4,6 +4,7 @@ import de.nowchess.api.board.Color import de.nowchess.api.move.{Move, MoveType, PromotionPiece} import de.nowchess.backcore.dto.* import de.nowchess.io.fen.FenExporter +import de.nowchess.io.pgn.PgnExporter import de.nowchess.rules.sets.DefaultRules object GameMapper: @@ -51,9 +52,9 @@ object GameMapper: private def computeLiveStatus(session: GameSession): (String, Option[String]) = val ctx = session.context - if session.drawOfferedBy.isDefined then ("drawOffered", None) + if DefaultRules.isCheck(ctx) then ("check", None) + else if session.drawOfferedBy.isDefined then ("drawOffered", None) else if DefaultRules.isFiftyMoveRule(ctx) then ("fiftyMoveAvailable", None) - else if DefaultRules.isCheck(ctx) then ("check", None) else ("started", None) def moveToUci(move: Move): String = @@ -69,7 +70,5 @@ object GameMapper: case _ => base private def buildPgn(moves: List[Move]): String = - moves.zipWithIndex.map { (move, i) => - val prefix = if i % 2 == 0 then s"${i / 2 + 1}. " else "" - prefix + moveToUci(move) - }.mkString(" ") + // Use PgnExporter with no headers to get move-text only (SAN notation) + PgnExporter.exportGame(Map.empty, moves)