diff --git a/DroidFish/res/values/strings.xml b/DroidFish/res/values/strings.xml
index fa0d145..709a410 100644
--- a/DroidFish/res/values/strings.xml
+++ b/DroidFish/res/values/strings.xml
@@ -146,6 +146,7 @@ you are not actively using the program.\
Game over, black resigns!
Book:
Invalid move
+ Piece can not be moved
Preferences
Edit File / Load Game
Edit File / Save Game
diff --git a/DroidFish/src/org/petero/droidfish/ChessBoard.java b/DroidFish/src/org/petero/droidfish/ChessBoard.java
index ca8d71d..158e634 100644
--- a/DroidFish/src/org/petero/droidfish/ChessBoard.java
+++ b/DroidFish/src/org/petero/droidfish/ChessBoard.java
@@ -27,6 +27,7 @@ import org.petero.droidfish.gamelogic.MoveGen;
import org.petero.droidfish.gamelogic.Pair;
import org.petero.droidfish.gamelogic.Piece;
import org.petero.droidfish.gamelogic.Position;
+import org.petero.droidfish.gamelogic.TextIO;
import org.petero.droidfish.gamelogic.UndoInfo;
import android.content.Context;
@@ -40,8 +41,10 @@ import android.os.Handler;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
+import android.widget.Toast;
public class ChessBoard extends View {
+ private PGNOptions pgnOptions = null;
public Position pos;
public int selectedSquare;
@@ -87,6 +90,10 @@ public class ChessBoard extends View {
private Paint decorationPaint;
private ArrayList moveMarkPaint;
+ public void setPgnOptions(PGNOptions pgnOptions) {
+ this.pgnOptions = pgnOptions;
+ }
+
public ChessBoard(Context context, AttributeSet attrs) {
super(context, attrs);
pos = new Position();
@@ -635,6 +642,16 @@ public class ChessBoard extends View {
userSelectedSquare = false;
return matchingMove;
}
+ if (!anyMatch && (sq >= 0)) {
+ int p = pos.getPiece(sq);
+ if (myColor(p)) {
+ String msg = getContext().getString(R.string.piece_can_not_be_moved);
+ boolean localized = (pgnOptions != null) &&
+ (pgnOptions.view.pieceType != PGNOptions.PT_ENGLISH);
+ msg += ": " + TextIO.pieceAndSquareToString(localized, p, sq);
+ Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
+ }
+ }
setSelection(anyMatch ? sq : -1);
}
return null;
diff --git a/DroidFish/src/org/petero/droidfish/DroidFish.java b/DroidFish/src/org/petero/droidfish/DroidFish.java
index 29dfa3a..8c9a558 100644
--- a/DroidFish/src/org/petero/droidfish/DroidFish.java
+++ b/DroidFish/src/org/petero/droidfish/DroidFish.java
@@ -525,6 +525,7 @@ public class DroidFish extends Activity implements GUIInterface {
cb.setFocusable(true);
cb.requestFocus();
cb.setClickable(true);
+ cb.setPgnOptions(pgnOptions);
final GestureDetector gd = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
private float scrollX = 0;
diff --git a/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java b/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java
index e643dba..0992c2b 100644
--- a/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java
+++ b/DroidFish/src/org/petero/droidfish/gamelogic/TextIO.java
@@ -728,6 +728,17 @@ public class TextIO {
return ret.toString();
}
+ /** Convert a piece and a square to a string, such as Nf3. */
+ public final static String pieceAndSquareToString(boolean localized, int p, int sq) {
+ String ret;
+ if ((p == Piece.WPAWN) || (p == Piece.BPAWN))
+ ret = localized ? pieceNames[0] : "P";
+ else
+ ret = localized ? pieceToCharLocalized(p) : pieceToChar(p);
+ ret += squareToString(sq);
+ return ret;
+ }
+
private final static String pieceToChar(int p) {
switch (p) {
case Piece.WQUEEN: case Piece.BQUEEN: return "Q";