fix: use PgnExporter for SAN pgn field, fix status priority in GameMapper
This commit is contained in:
Generated
+6
@@ -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.api.move.{Move, MoveType, PromotionPiece}
|
||||||
import de.nowchess.backcore.dto.*
|
import de.nowchess.backcore.dto.*
|
||||||
import de.nowchess.io.fen.FenExporter
|
import de.nowchess.io.fen.FenExporter
|
||||||
|
import de.nowchess.io.pgn.PgnExporter
|
||||||
import de.nowchess.rules.sets.DefaultRules
|
import de.nowchess.rules.sets.DefaultRules
|
||||||
|
|
||||||
object GameMapper:
|
object GameMapper:
|
||||||
@@ -51,9 +52,9 @@ object GameMapper:
|
|||||||
|
|
||||||
private def computeLiveStatus(session: GameSession): (String, Option[String]) =
|
private def computeLiveStatus(session: GameSession): (String, Option[String]) =
|
||||||
val ctx = session.context
|
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.isFiftyMoveRule(ctx) then ("fiftyMoveAvailable", None)
|
||||||
else if DefaultRules.isCheck(ctx) then ("check", None)
|
|
||||||
else ("started", None)
|
else ("started", None)
|
||||||
|
|
||||||
def moveToUci(move: Move): String =
|
def moveToUci(move: Move): String =
|
||||||
@@ -69,7 +70,5 @@ object GameMapper:
|
|||||||
case _ => base
|
case _ => base
|
||||||
|
|
||||||
private def buildPgn(moves: List[Move]): String =
|
private def buildPgn(moves: List[Move]): String =
|
||||||
moves.zipWithIndex.map { (move, i) =>
|
// Use PgnExporter with no headers to get move-text only (SAN notation)
|
||||||
val prefix = if i % 2 == 0 then s"${i / 2 + 1}. " else ""
|
PgnExporter.exportGame(Map.empty, moves)
|
||||||
prefix + moveToUci(move)
|
|
||||||
}.mkString(" ")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user