fix: use PgnExporter for SAN pgn field, fix status priority in GameMapper

This commit is contained in:
LQ63
2026-04-13 15:49:36 +02:00
parent 21eee717f1
commit 41fa674bf7
2 changed files with 11 additions and 6 deletions
@@ -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)