diff --git a/DroidFish/src/org/petero/droidfish/ChessBoard.java b/DroidFish/src/org/petero/droidfish/ChessBoard.java index ffce0c5..acfd36b 100644 --- a/DroidFish/src/org/petero/droidfish/ChessBoard.java +++ b/DroidFish/src/org/petero/droidfish/ChessBoard.java @@ -601,14 +601,15 @@ public class ChessBoard extends View { int p = pos.getPiece(sq); if (selectedSquare != -1) { - if (sq != selectedSquare) { - if (!myColor(p)) { - Move m = new Move(selectedSquare, sq, Piece.EMPTY); - setSelection(sq); - return m; - } + if (sq == selectedSquare) + return null; + if (!myColor(p)) { + Move m = new Move(selectedSquare, sq, Piece.EMPTY); + setSelection(sq); + return m; + } else { + setSelection(sq); } - setSelection(-1); } else { if (oneTouchMoves) { ArrayList moves = new MoveGen().pseudoLegalMoves(pos); diff --git a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java index 11065ec..c27cfad 100644 --- a/DroidFish/src/org/petero/droidfish/activities/EditBoard.java +++ b/DroidFish/src/org/petero/droidfish/activities/EditBoard.java @@ -204,8 +204,11 @@ public class EditBoard extends Activity { piece = -(m.from + 2); } if (m.to >= 0) { - if ((m.from < 0) && (pos.getPiece(m.to) == piece)) + int oPiece = Piece.swapColor(piece); + if ((m.from < 0) && (pos.getPiece(m.to) == oPiece)) pos.setPiece(m.to, Piece.EMPTY); + else if ((m.from < 0) && (pos.getPiece(m.to) == piece)) + pos.setPiece(m.to, oPiece); else pos.setPiece(m.to, piece); } diff --git a/DroidFish/src/org/petero/droidfish/gamelogic/Piece.java b/DroidFish/src/org/petero/droidfish/gamelogic/Piece.java index a94a53b..095c994 100644 --- a/DroidFish/src/org/petero/droidfish/gamelogic/Piece.java +++ b/DroidFish/src/org/petero/droidfish/gamelogic/Piece.java @@ -54,4 +54,9 @@ public class Piece { public static int makeBlack(int pType) { return ((pType >= WKING) && (pType <= WPAWN)) ? pType + (BKING - WKING) : pType; } + public static int swapColor(int pType) { + if (pType == EMPTY) + return EMPTY; + return isWhite(pType) ? pType + (BKING - WKING) : pType - (BKING - WKING); + } }