dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 83d9888542f24a88bc53fc2f8b2e221fca72d46b
parent 54640f8dde8bf97ef8f812c9ee469bcdc2a0a5bc
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sat, 17 Jun 2023 17:23:42 -0700

cleanup

Diffstat:
Mpkg/web/handlers/interceptors/chess.go | 24++++++++++++++++--------
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