commit 83d9888542f24a88bc53fc2f8b2e221fca72d46b
parent 54640f8dde8bf97ef8f812c9ee469bcdc2a0a5bc
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 17 Jun 2023 17:23:42 -0700
cleanup
Diffstat:
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/pkg/web/handlers/interceptors/chess.go b/pkg/web/handlers/interceptors/chess.go
@@ -712,21 +712,29 @@ func (b *Chess) SendMove(gameKey string, userID database.UserID, g *ChessGame, c
fst := selectedSquares[0]
scd := selectedSquares[1]
- compareSquares := func(sq1, sq2 chess.Square, move *chess.Move) bool {
- return (sq1 == move.S1() && sq2 == move.S2()) ||
- (sq1 == move.S2() && sq2 == move.S1())
+ compareSquares := func(sq1, sq2, wanted1, wanted2 chess.Square) bool {
+ return (sq1 == wanted1 && sq2 == wanted2) ||
+ (sq1 == wanted2 && sq2 == wanted1)
}
+ // WKSq -> White King Square | WKSC -> White King Side Castle
+ isWKSq := func(m *chess.Move) bool { return m.S1() == chess.E1 || m.S2() == chess.E1 }
+ isBKSq := func(m *chess.Move) bool { return m.S1() == chess.E8 || m.S2() == chess.E8 }
+ isWKSC := func(m *chess.Move) bool { return isWKSq(m) && m.HasTag(chess.KingSideCastle) }
+ isBKSC := func(m *chess.Move) bool { return isBKSq(m) && m.HasTag(chess.KingSideCastle) }
+ isWQSC := func(m *chess.Move) bool { return isWKSq(m) && m.HasTag(chess.QueenSideCastle) }
+ isBQSC := func(m *chess.Move) bool { return isBKSq(m) && m.HasTag(chess.QueenSideCastle) }
+
var moveStr string
validMoves := game.Position().ValidMoves()
var found bool
var mov chess.Move
for _, move := range validMoves {
- 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))) {
+ if (compareSquares(fst, scd, move.S1(), move.S2()) && (move.Promo() == chess.NoPieceType || move.Promo() == promo)) ||
+ (isWKSC(move) && compareSquares(fst, scd, chess.E1, chess.H1)) ||
+ (isBKSC(move) && compareSquares(fst, scd, chess.E8, chess.H8)) ||
+ (isWQSC(move) && compareSquares(fst, scd, chess.E1, chess.A1)) ||
+ (isBQSC(move) && compareSquares(fst, scd, chess.E8, chess.A8)) {
moveStr = chess.AlgebraicNotation{}.Encode(game.Position(), move)
found = true
mov = *move