commit 54640f8dde8bf97ef8f812c9ee469bcdc2a0a5bc
parent 1774f2738d1d9cab57ce6ef6a9f383a15bd95877
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 17 Jun 2023 17:05:59 -0700
allow castle using king and rook squares
Diffstat:
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/pkg/web/handlers/interceptors/chess.go b/pkg/web/handlers/interceptors/chess.go
@@ -722,7 +722,11 @@ func (b *Chess) SendMove(gameKey string, userID database.UserID, g *ChessGame, c
var found bool
var mov chess.Move
for _, move := range validMoves {
- if compareSquares(fst, scd, move) && (move.Promo() == chess.NoPieceType || move.Promo() == promo) {
+ if (compareSquares(fst, scd, move) && (move.Promo() == chess.NoPieceType || move.Promo() == promo)) ||
+ (((move.S1() == chess.E1 || move.S2() == chess.E1) && move.HasTag(chess.KingSideCastle)) && ((fst == chess.E1 && scd == chess.H1) || (scd == chess.E1 && fst == chess.H1))) ||
+ (((move.S1() == chess.E8 || move.S2() == chess.E8) && move.HasTag(chess.KingSideCastle)) && ((fst == chess.E8 && scd == chess.H8) || (scd == chess.E8 && fst == chess.H8))) ||
+ (((move.S1() == chess.E1 || move.S2() == chess.E1) && move.HasTag(chess.QueenSideCastle)) && ((fst == chess.E1 && scd == chess.A1) || (scd == chess.E1 && fst == chess.A1))) ||
+ (((move.S1() == chess.E8 || move.S2() == chess.E8) && move.HasTag(chess.QueenSideCastle)) && ((fst == chess.E8 && scd == chess.A8) || (scd == chess.E8 && fst == chess.A8))) {
moveStr = chess.AlgebraicNotation{}.Encode(game.Position(), move)
found = true
mov = *move