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 24ae9893ef
commit d40a64a160
2 changed files with 11 additions and 6 deletions
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ScalaProjectSettings">
<option name="scala3DisclaimerShown" value="true" />
</component>
</project>
@@ -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)