mirror of
https://github.com/peterosterlund2/droidfish.git
synced 2024-11-26 21:47:23 +01:00
Fix some Android Studio warnings.
This commit is contained in:
parent
eaadffa6b0
commit
1a533ca1fb
|
@ -33,9 +33,9 @@ public class AppletGUI extends javax.swing.JApplet implements GUIInterface {
|
|||
private static final long serialVersionUID = 7357610346389734323L;
|
||||
ChessBoardPainter cbp;
|
||||
ChessController ctrl;
|
||||
final static int ttLogSize = 19; // Use 2^19 hash entries.
|
||||
String moveListStr = "";
|
||||
String thinkingStr = "";
|
||||
private final static int ttLogSize = 19; // Use 2^19 hash entries.
|
||||
private String moveListStr = "";
|
||||
private String thinkingStr = "";
|
||||
|
||||
/** Initializes the applet AppletGUI */
|
||||
@Override
|
||||
|
|
|
@ -210,7 +210,7 @@ public class EngineControl {
|
|||
}
|
||||
}
|
||||
|
||||
private static final int clamp(int val, int min, int max) {
|
||||
private static int clamp(int val, int min, int max) {
|
||||
if (val < min) {
|
||||
return min;
|
||||
} else if (val > max) {
|
||||
|
@ -220,8 +220,8 @@ public class EngineControl {
|
|||
}
|
||||
}
|
||||
|
||||
final private void startThread(final int minTimeLimit, final int maxTimeLimit,
|
||||
int maxDepth, final int maxNodes) {
|
||||
private void startThread(final int minTimeLimit, final int maxTimeLimit,
|
||||
int maxDepth, final int maxNodes) {
|
||||
synchronized (threadMutex) {} // Must not start new search until old search is finished
|
||||
sc = new Search(pos, posHashList, posHashListSize, tt, ht);
|
||||
sc.timeLimit(minTimeLimit, maxTimeLimit);
|
||||
|
@ -339,7 +339,7 @@ public class EngineControl {
|
|||
return ret;
|
||||
}
|
||||
|
||||
private static final String moveToString(Move m) {
|
||||
private static String moveToString(Move m) {
|
||||
if (m == null)
|
||||
return "0000";
|
||||
String ret = TextIO.squareToString(m.from);
|
||||
|
|
|
@ -205,7 +205,7 @@ public class UCIProtocol {
|
|||
}
|
||||
}
|
||||
|
||||
final private void initEngine(PrintStream os) {
|
||||
private void initEngine(PrintStream os) {
|
||||
if (engine == null) {
|
||||
engine = new EngineControl(os);
|
||||
}
|
||||
|
|
|
@ -94,11 +94,11 @@ public class CuckooChess extends Activity implements GUIInterface {
|
|||
});
|
||||
|
||||
setContentView(R.layout.main);
|
||||
status = (TextView)findViewById(R.id.status);
|
||||
moveListScroll = (ScrollView)findViewById(R.id.scrollView);
|
||||
moveList = (TextView)findViewById(R.id.moveList);
|
||||
thinking = (TextView)findViewById(R.id.thinking);
|
||||
cb = (ChessBoard)findViewById(R.id.chessboard);
|
||||
status = findViewById(R.id.status);
|
||||
moveListScroll = findViewById(R.id.scrollView);
|
||||
moveList = findViewById(R.id.moveList);
|
||||
thinking = findViewById(R.id.thinking);
|
||||
cb = findViewById(R.id.chessboard);
|
||||
status.setFocusable(false);
|
||||
moveListScroll.setFocusable(false);
|
||||
moveList.setFocusable(false);
|
||||
|
@ -193,7 +193,7 @@ public class CuckooChess extends Activity implements GUIInterface {
|
|||
editor.putString("startFEN", posHistStr.get(0));
|
||||
editor.putString("moves", posHistStr.get(1));
|
||||
editor.putString("numUndo", posHistStr.get(2));
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ public class BitBoard {
|
|||
0x000000007efa8146L, 0x0000007ed3e2ef60L, 0x00007f47243adcd6L, 0x007fb65afabfb3b5L
|
||||
};
|
||||
|
||||
private static final long createPattern(int i, long mask) {
|
||||
private static long createPattern(int i, long mask) {
|
||||
long ret = 0L;
|
||||
for (int j = 0; ; j++) {
|
||||
long nextMask = mask & (mask - 1);
|
||||
|
@ -184,7 +184,7 @@ public class BitBoard {
|
|||
return ret;
|
||||
}
|
||||
|
||||
private static final long addRookRays(int x, int y, long occupied, boolean inner) {
|
||||
private static long addRookRays(int x, int y, long occupied, boolean inner) {
|
||||
long mask = 0;
|
||||
mask = addRay(mask, x, y, 1, 0, occupied, inner);
|
||||
mask = addRay(mask, x, y, -1, 0, occupied, inner);
|
||||
|
@ -192,7 +192,7 @@ public class BitBoard {
|
|||
mask = addRay(mask, x, y, 0, -1, occupied, inner);
|
||||
return mask;
|
||||
}
|
||||
private static final long addBishopRays(int x, int y, long occupied, boolean inner) {
|
||||
private static long addBishopRays(int x, int y, long occupied, boolean inner) {
|
||||
long mask = 0;
|
||||
mask = addRay(mask, x, y, 1, 1, occupied, inner);
|
||||
mask = addRay(mask, x, y, -1, -1, occupied, inner);
|
||||
|
@ -201,8 +201,8 @@ public class BitBoard {
|
|||
return mask;
|
||||
}
|
||||
|
||||
private static final long addRay(long mask, int x, int y, int dx, int dy,
|
||||
long occupied, boolean inner) {
|
||||
private static long addRay(long mask, int x, int y, int dx, int dy,
|
||||
long occupied, boolean inner) {
|
||||
int lo = inner ? 1 : 0;
|
||||
int hi = inner ? 6 : 7;
|
||||
while (true) {
|
||||
|
@ -270,11 +270,11 @@ public class BitBoard {
|
|||
}
|
||||
}
|
||||
|
||||
public static final long bishopAttacks(int sq, long occupied) {
|
||||
public static long bishopAttacks(int sq, long occupied) {
|
||||
return bTables[sq][(int)(((occupied & bMasks[sq]) * bMagics[sq]) >>> (64 - bBits[sq]))];
|
||||
}
|
||||
|
||||
public static final long rookAttacks(int sq, long occupied) {
|
||||
public static long rookAttacks(int sq, long occupied) {
|
||||
return rTables[sq][(int)(((occupied & rMasks[sq]) * rMagics[sq]) >>> (64 - rBits[sq]))];
|
||||
}
|
||||
|
||||
|
@ -346,19 +346,19 @@ public class BitBoard {
|
|||
0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
};
|
||||
|
||||
public static final int getDistance(int from, int to) {
|
||||
public static int getDistance(int from, int to) {
|
||||
int offs = to + (to|7) - from - (from|7) + 0x77;
|
||||
return distTable[offs];
|
||||
}
|
||||
|
||||
public static final long southFill(long mask) {
|
||||
public static long southFill(long mask) {
|
||||
mask |= (mask >>> 8);
|
||||
mask |= (mask >>> 16);
|
||||
mask |= (mask >>> 32);
|
||||
return mask;
|
||||
}
|
||||
|
||||
public static final long northFill(long mask) {
|
||||
public static long northFill(long mask) {
|
||||
mask |= (mask << 8);
|
||||
mask |= (mask << 16);
|
||||
mask |= (mask << 32);
|
||||
|
|
|
@ -161,7 +161,7 @@ public class Book {
|
|||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
final private int getWeight(int count) {
|
||||
private int getWeight(int count) {
|
||||
double tmp = Math.sqrt(count);
|
||||
return (int)(tmp * Math.sqrt(tmp) * 100 + 1);
|
||||
}
|
||||
|
|
|
@ -50,97 +50,97 @@ public class Evaluate {
|
|||
}
|
||||
|
||||
/** Piece/square table for king during middle game. */
|
||||
static final int[] kt1b = { -22,-35,-40,-40,-40,-40,-35,-22,
|
||||
-22,-35,-40,-40,-40,-40,-35,-22,
|
||||
-25,-35,-40,-45,-45,-40,-35,-25,
|
||||
-15,-30,-35,-40,-40,-35,-30,-15,
|
||||
-10,-15,-20,-25,-25,-20,-15,-10,
|
||||
4, -2, -5,-15,-15, -5, -2, 4,
|
||||
16, 14, 7, -3, -3, 7, 14, 16,
|
||||
24, 24, 9, 0, 0, 9, 24, 24 };
|
||||
private static final int[] kt1b = { -22,-35,-40,-40,-40,-40,-35,-22,
|
||||
-22,-35,-40,-40,-40,-40,-35,-22,
|
||||
-25,-35,-40,-45,-45,-40,-35,-25,
|
||||
-15,-30,-35,-40,-40,-35,-30,-15,
|
||||
-10,-15,-20,-25,-25,-20,-15,-10,
|
||||
4, -2, -5,-15,-15, -5, -2, 4,
|
||||
16, 14, 7, -3, -3, 7, 14, 16,
|
||||
24, 24, 9, 0, 0, 9, 24, 24 };
|
||||
|
||||
/** Piece/square table for king during end game. */
|
||||
static final int[] kt2b = { 0, 8, 16, 24, 24, 16, 8, 0,
|
||||
8, 16, 24, 32, 32, 24, 16, 8,
|
||||
16, 24, 32, 40, 40, 32, 24, 16,
|
||||
24, 32, 40, 48, 48, 40, 32, 24,
|
||||
24, 32, 40, 48, 48, 40, 32, 24,
|
||||
16, 24, 32, 40, 40, 32, 24, 16,
|
||||
8, 16, 24, 32, 32, 24, 16, 8,
|
||||
0, 8, 16, 24, 24, 16, 8, 0 };
|
||||
private static final int[] kt2b = { 0, 8, 16, 24, 24, 16, 8, 0,
|
||||
8, 16, 24, 32, 32, 24, 16, 8,
|
||||
16, 24, 32, 40, 40, 32, 24, 16,
|
||||
24, 32, 40, 48, 48, 40, 32, 24,
|
||||
24, 32, 40, 48, 48, 40, 32, 24,
|
||||
16, 24, 32, 40, 40, 32, 24, 16,
|
||||
8, 16, 24, 32, 32, 24, 16, 8,
|
||||
0, 8, 16, 24, 24, 16, 8, 0 };
|
||||
|
||||
/** Piece/square table for pawns during middle game. */
|
||||
static final int[] pt1b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
8, 16, 24, 32, 32, 24, 16, 8,
|
||||
3, 12, 20, 28, 28, 20, 12, 3,
|
||||
-5, 4, 10, 20, 20, 10, 4, -5,
|
||||
-6, 4, 5, 16, 16, 5, 4, -6,
|
||||
-6, 4, 2, 5, 5, 2, 4, -6,
|
||||
-6, 4, 4,-15,-15, 4, 4, -6,
|
||||
0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
private static final int[] pt1b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
8, 16, 24, 32, 32, 24, 16, 8,
|
||||
3, 12, 20, 28, 28, 20, 12, 3,
|
||||
-5, 4, 10, 20, 20, 10, 4, -5,
|
||||
-6, 4, 5, 16, 16, 5, 4, -6,
|
||||
-6, 4, 2, 5, 5, 2, 4, -6,
|
||||
-6, 4, 4,-15,-15, 4, 4, -6,
|
||||
0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
/** Piece/square table for pawns during end game. */
|
||||
static final int[] pt2b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
25, 40, 45, 45, 45, 45, 40, 25,
|
||||
17, 32, 35, 35, 35, 35, 32, 17,
|
||||
5, 24, 24, 24, 24, 24, 24, 5,
|
||||
-9, 11, 11, 11, 11, 11, 11, -9,
|
||||
-17, 3, 3, 3, 3, 3, 3,-17,
|
||||
-20, 0, 0, 0, 0, 0, 0,-20,
|
||||
0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
private static final int[] pt2b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
25, 40, 45, 45, 45, 45, 40, 25,
|
||||
17, 32, 35, 35, 35, 35, 32, 17,
|
||||
5, 24, 24, 24, 24, 24, 24, 5,
|
||||
-9, 11, 11, 11, 11, 11, 11, -9,
|
||||
-17, 3, 3, 3, 3, 3, 3,-17,
|
||||
-20, 0, 0, 0, 0, 0, 0,-20,
|
||||
0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
/** Piece/square table for knights during middle game. */
|
||||
static final int[] nt1b = { -53,-42,-32,-21,-21,-32,-42,-53,
|
||||
-42,-32,-10, 0, 0,-10,-32,-42,
|
||||
-21, 5, 10, 16, 16, 10, 5,-21,
|
||||
-18, 0, 10, 21, 21, 10, 0,-18,
|
||||
-18, 0, 3, 21, 21, 3, 0,-18,
|
||||
-21,-10, 0, 0, 0, 0,-10,-21,
|
||||
-42,-32,-10, 0, 0,-10,-32,-42,
|
||||
-53,-42,-32,-21,-21,-32,-42,-53 };
|
||||
private static final int[] nt1b = { -53,-42,-32,-21,-21,-32,-42,-53,
|
||||
-42,-32,-10, 0, 0,-10,-32,-42,
|
||||
-21, 5, 10, 16, 16, 10, 5,-21,
|
||||
-18, 0, 10, 21, 21, 10, 0,-18,
|
||||
-18, 0, 3, 21, 21, 3, 0,-18,
|
||||
-21,-10, 0, 0, 0, 0,-10,-21,
|
||||
-42,-32,-10, 0, 0,-10,-32,-42,
|
||||
-53,-42,-32,-21,-21,-32,-42,-53 };
|
||||
|
||||
/** Piece/square table for knights during end game. */
|
||||
static final int[] nt2b = { -56,-44,-34,-22,-22,-34,-44,-56,
|
||||
-44,-34,-10, 0, 0,-10,-34,-44,
|
||||
-22, 5, 10, 17, 17, 10, 5,-22,
|
||||
-19, 0, 10, 22, 22, 10, 0,-19,
|
||||
-19, 0, 3, 22, 22, 3, 0,-19,
|
||||
-22,-10, 0, 0, 0, 0,-10,-22,
|
||||
-44,-34,-10, 0, 0,-10,-34,-44,
|
||||
-56,-44,-34,-22,-22,-34,-44,-56 };
|
||||
private static final int[] nt2b = { -56,-44,-34,-22,-22,-34,-44,-56,
|
||||
-44,-34,-10, 0, 0,-10,-34,-44,
|
||||
-22, 5, 10, 17, 17, 10, 5,-22,
|
||||
-19, 0, 10, 22, 22, 10, 0,-19,
|
||||
-19, 0, 3, 22, 22, 3, 0,-19,
|
||||
-22,-10, 0, 0, 0, 0,-10,-22,
|
||||
-44,-34,-10, 0, 0,-10,-34,-44,
|
||||
-56,-44,-34,-22,-22,-34,-44,-56 };
|
||||
|
||||
/** Piece/square table for bishops during middle game. */
|
||||
static final int[] bt1b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 4, 2, 2, 2, 2, 4, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 3, 4, 4, 4, 4, 3, 0,
|
||||
0, 4, 2, 2, 2, 2, 4, 0,
|
||||
-5, -5, -7, -5, -5, -7, -5, -5 };
|
||||
private static final int[] bt1b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 4, 2, 2, 2, 2, 4, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 3, 4, 4, 4, 4, 3, 0,
|
||||
0, 4, 2, 2, 2, 2, 4, 0,
|
||||
-5, -5, -7, -5, -5, -7, -5, -5 };
|
||||
|
||||
/** Piece/square table for bishops during middle game. */
|
||||
static final int[] bt2b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 2, 2, 2, 2, 2, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 2, 2, 2, 2, 2, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
private static final int[] bt2b = { 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 2, 2, 2, 2, 2, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 4, 4, 4, 4, 2, 0,
|
||||
0, 2, 2, 2, 2, 2, 2, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
/** Piece/square table for queens during middle game. */
|
||||
static final int[] qt1b = { -10, -5, 0, 0, 0, 0, -5,-10,
|
||||
-5, 0, 5, 5, 5, 5, 0, -5,
|
||||
0, 5, 5, 6, 6, 5, 5, 0,
|
||||
0, 5, 6, 6, 6, 6, 5, 0,
|
||||
0, 5, 6, 6, 6, 6, 5, 0,
|
||||
0, 5, 5, 6, 6, 5, 5, 0,
|
||||
-5, 0, 5, 5, 5, 5, 0, -5,
|
||||
-10, -5, 0, 0, 0, 0, -5,-10 };
|
||||
private static final int[] qt1b = { -10, -5, 0, 0, 0, 0, -5,-10,
|
||||
-5, 0, 5, 5, 5, 5, 0, -5,
|
||||
0, 5, 5, 6, 6, 5, 5, 0,
|
||||
0, 5, 6, 6, 6, 6, 5, 0,
|
||||
0, 5, 6, 6, 6, 6, 5, 0,
|
||||
0, 5, 5, 6, 6, 5, 5, 0,
|
||||
-5, 0, 5, 5, 5, 5, 0, -5,
|
||||
-10, -5, 0, 0, 0, 0, -5,-10 };
|
||||
|
||||
/** Piece/square table for rooks during middle game. */
|
||||
static final int[] rt1b = { 8, 11, 13, 13, 13, 13, 11, 8,
|
||||
private static final int[] rt1b = { 8, 11, 13, 13, 13, 13, 11, 8,
|
||||
22, 27, 27, 27, 27, 27, 27, 22,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
|
@ -149,7 +149,7 @@ public class Evaluate {
|
|||
-3, 2, 5, 5, 5, 5, 2, -3,
|
||||
0, 3, 5, 5, 5, 5, 3, 0 };
|
||||
|
||||
static final int[] kt1w, qt1w, rt1w, bt1w, nt1w, pt1w, kt2w, bt2w, nt2w, pt2w;
|
||||
private static final int[] kt1w, qt1w, rt1w, bt1w, nt1w, pt1w, kt2w, bt2w, nt2w, pt2w;
|
||||
static {
|
||||
kt1w = new int[64];
|
||||
qt1w = new int[64];
|
||||
|
@ -193,9 +193,9 @@ public class Evaluate {
|
|||
{ 6, 7, 6, 5, 4, 3, 2, 1 },
|
||||
{ 7, 6, 5, 4, 3, 2, 1, 0 } };
|
||||
|
||||
static final int[] rookMobScore = {-10,-7,-4,-1,2,5,7,9,11,12,13,14,14,14,14};
|
||||
static final int[] bishMobScore = {-15,-10,-6,-2,2,6,10,13,16,18,20,22,23,24};
|
||||
static final int[] queenMobScore = {-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,9,10,10,10,10,10,10,10,10,10,10,10,10};
|
||||
private static final int[] rookMobScore = {-10,-7,-4,-1,2,5,7,9,11,12,13,14,14,14,14};
|
||||
private static final int[] bishMobScore = {-15,-10,-6,-2,2,6,10,13,16,18,20,22,23,24};
|
||||
private static final int[] queenMobScore = {-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,9,10,10,10,10,10,10,10,10,10,10,10,10};
|
||||
|
||||
private static final class PawnHashData {
|
||||
long key;
|
||||
|
@ -205,7 +205,7 @@ public class Evaluate {
|
|||
long passedPawnsW; // The most advanced passed pawns for each file
|
||||
long passedPawnsB;
|
||||
}
|
||||
static final PawnHashData[] pawnHash;
|
||||
private static final PawnHashData[] pawnHash;
|
||||
static {
|
||||
final int numEntries = 1<<16;
|
||||
pawnHash = new PawnHashData[numEntries];
|
||||
|
@ -217,8 +217,8 @@ public class Evaluate {
|
|||
}
|
||||
}
|
||||
|
||||
static byte[] kpkTable = null;
|
||||
static byte[] krkpTable = null;
|
||||
private static byte[] kpkTable = null;
|
||||
private static byte[] krkpTable = null;
|
||||
|
||||
// King safety variables
|
||||
private long wKingZone, bKingZone; // Squares close to king that are worth attacking
|
||||
|
@ -1135,7 +1135,7 @@ public class Evaluate {
|
|||
return score;
|
||||
}
|
||||
|
||||
private static final int evalKQKP(int wKing, int wQueen, int bKing, int bPawn, boolean whiteMove) {
|
||||
private static int evalKQKP(int wKing, int wQueen, int bKing, int bPawn, boolean whiteMove) {
|
||||
boolean canWin = false;
|
||||
if (((1L << bKing) & 0xFFFF) == 0) {
|
||||
canWin = true; // King doesn't support pawn
|
||||
|
@ -1172,7 +1172,7 @@ public class Evaluate {
|
|||
return score;
|
||||
}
|
||||
|
||||
private static final int kpkEval(int wKing, int bKing, int wPawn, boolean whiteMove) {
|
||||
private static int kpkEval(int wKing, int bKing, int wPawn, boolean whiteMove) {
|
||||
if (Position.getX(wKing) >= 4) { // Mirror X
|
||||
wKing ^= 7;
|
||||
bKing ^= 7;
|
||||
|
@ -1191,7 +1191,7 @@ public class Evaluate {
|
|||
return qV - pV / 4 * (7-Position.getY(wPawn));
|
||||
}
|
||||
|
||||
private static final int krkpEval(int wKing, int bKing, int bPawn, boolean whiteMove) {
|
||||
private static int krkpEval(int wKing, int bKing, int bPawn, boolean whiteMove) {
|
||||
if (Position.getX(bKing) >= 4) { // Mirror X
|
||||
wKing ^= 7;
|
||||
bKing ^= 7;
|
||||
|
@ -1216,7 +1216,7 @@ public class Evaluate {
|
|||
* Interpolate between (x1,y1) and (x2,y2).
|
||||
* If x < x1, return y1, if x > x2 return y2. Otherwise, use linear interpolation.
|
||||
*/
|
||||
static final int interpolate(int x, int x1, int y1, int x2, int y2) {
|
||||
static int interpolate(int x, int x1, int y1, int x2, int y2) {
|
||||
if (x > x2) {
|
||||
return y2;
|
||||
} else if (x < x1) {
|
||||
|
|
|
@ -545,7 +545,7 @@ public class Game {
|
|||
return false;
|
||||
}
|
||||
|
||||
final static long perfT(MoveGen moveGen, Position pos, int depth) {
|
||||
static long perfT(MoveGen moveGen, Position pos, int depth) {
|
||||
if (depth == 0)
|
||||
return 1;
|
||||
long nodes = 0;
|
||||
|
|
|
@ -28,7 +28,7 @@ public class KillerTable {
|
|||
int move0;
|
||||
int move1;
|
||||
}
|
||||
KTEntry[] ktList;
|
||||
private KTEntry[] ktList;
|
||||
|
||||
/** Create an empty killer table. */
|
||||
public KillerTable() {
|
||||
|
|
|
@ -717,7 +717,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if the side to move is in check.
|
||||
*/
|
||||
public static final boolean inCheck(Position pos) {
|
||||
public static boolean inCheck(Position pos) {
|
||||
int kingSq = pos.getKingSq(pos.whiteMove);
|
||||
return sqAttacked(pos, kingSq);
|
||||
}
|
||||
|
@ -725,7 +725,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return the next piece in a given direction, starting from sq.
|
||||
*/
|
||||
private static final int nextPiece(Position pos, int sq, int delta) {
|
||||
private static int nextPiece(Position pos, int sq, int delta) {
|
||||
while (true) {
|
||||
sq += delta;
|
||||
int p = pos.getPiece(sq);
|
||||
|
@ -735,7 +735,7 @@ public final class MoveGen {
|
|||
}
|
||||
|
||||
/** Like nextPiece(), but handles board edges. */
|
||||
private static final int nextPieceSafe(Position pos, int sq, int delta) {
|
||||
private static int nextPieceSafe(Position pos, int sq, int delta) {
|
||||
int dx = 0, dy = 0;
|
||||
switch (delta) {
|
||||
case 1: dx=1; dy=0; break;
|
||||
|
@ -764,7 +764,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if making a move delivers check to the opponent
|
||||
*/
|
||||
public static final boolean givesCheck(Position pos, Move m) {
|
||||
public static boolean givesCheck(Position pos, Move m) {
|
||||
boolean wtm = pos.whiteMove;
|
||||
int oKingSq = pos.getKingSq(!wtm);
|
||||
int oKing = wtm ? Piece.BKING : Piece.WKING;
|
||||
|
@ -875,7 +875,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if the side to move can take the opponents king.
|
||||
*/
|
||||
public static final boolean canTakeKing(Position pos) {
|
||||
public static boolean canTakeKing(Position pos) {
|
||||
pos.setWhiteMove(!pos.whiteMove);
|
||||
boolean ret = inCheck(pos);
|
||||
pos.setWhiteMove(!pos.whiteMove);
|
||||
|
@ -885,7 +885,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if a square is attacked by the opposite side.
|
||||
*/
|
||||
public static final boolean sqAttacked(Position pos, int sq) {
|
||||
public static boolean sqAttacked(Position pos, int sq) {
|
||||
if (pos.whiteMove) {
|
||||
if ((BitBoard.knightAttacks[sq] & pos.pieceTypeBB[Piece.BKNIGHT]) != 0)
|
||||
return true;
|
||||
|
@ -921,7 +921,7 @@ public final class MoveGen {
|
|||
* "moveList" is assumed to be a list of pseudo-legal moves.
|
||||
* This function removes the moves that don't defend from check threats.
|
||||
*/
|
||||
public static final void removeIllegal(Position pos, MoveList moveList) {
|
||||
public static void removeIllegal(Position pos, MoveList moveList) {
|
||||
int length = 0;
|
||||
UndoInfo ui = new UndoInfo();
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ public class Parameters {
|
|||
for (Map.Entry<String, ParamBase> e : params.entrySet())
|
||||
if (e.getValue().visible)
|
||||
parNames.add(e.getKey());
|
||||
return parNames.toArray(new String[parNames.size()]);
|
||||
return parNames.toArray(new String[0]);
|
||||
}
|
||||
|
||||
public final ParamBase getParam(String name) {
|
||||
|
|
|
@ -42,13 +42,13 @@ public class Piece {
|
|||
* Return true if p is a white piece, false otherwise.
|
||||
* Note that if p is EMPTY, an unspecified value is returned.
|
||||
*/
|
||||
public static final boolean isWhite(int pType) {
|
||||
public static boolean isWhite(int pType) {
|
||||
return pType < BKING;
|
||||
}
|
||||
public static final int makeWhite(int pType) {
|
||||
public static int makeWhite(int pType) {
|
||||
return pType < BKING ? pType : pType - (BKING - WKING);
|
||||
}
|
||||
public static final int makeBlack(int pType) {
|
||||
public static int makeBlack(int pType) {
|
||||
return ((pType > EMPTY) && (pType < BKING)) ? pType + (BKING - WKING) : pType;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -188,19 +188,19 @@ public class Position {
|
|||
}
|
||||
}
|
||||
/** Return index in squares[] vector corresponding to (x,y). */
|
||||
public final static int getSquare(int x, int y) {
|
||||
public static int getSquare(int x, int y) {
|
||||
return y * 8 + x;
|
||||
}
|
||||
/** Return x position (file) corresponding to a square. */
|
||||
public final static int getX(int square) {
|
||||
public static int getX(int square) {
|
||||
return square & 7;
|
||||
}
|
||||
/** Return y position (rank) corresponding to a square. */
|
||||
public final static int getY(int square) {
|
||||
public static int getY(int square) {
|
||||
return square >> 3;
|
||||
}
|
||||
/** Return true if (x,y) is a dark square. */
|
||||
public final static boolean darkSquare(int x, int y) {
|
||||
public static boolean darkSquare(int x, int y) {
|
||||
return (x & 1) == (y & 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,15 +28,15 @@ public class Search {
|
|||
final static int plyScale = 8; // Fractional ply resolution
|
||||
|
||||
Position pos;
|
||||
MoveGen moveGen;
|
||||
Evaluate eval;
|
||||
KillerTable kt;
|
||||
History ht;
|
||||
long[] posHashList; // List of hashes for previous positions up to the last "zeroing" move.
|
||||
int posHashListSize; // Number of used entries in posHashList
|
||||
int posHashFirstNew; // First entry in posHashList that has not been played OTB.
|
||||
TranspositionTable tt;
|
||||
TreeLogger log = null;
|
||||
private MoveGen moveGen;
|
||||
private Evaluate eval;
|
||||
private KillerTable kt;
|
||||
private History ht;
|
||||
private long[] posHashList; // List of hashes for previous positions up to the last "zeroing" move.
|
||||
private int posHashListSize; // Number of used entries in posHashList
|
||||
private int posHashFirstNew; // First entry in posHashList that has not been played OTB.
|
||||
private TranspositionTable tt;
|
||||
private TreeLogger log = null;
|
||||
|
||||
private static final class SearchTreeInfo {
|
||||
UndoInfo undoInfo;
|
||||
|
@ -53,35 +53,35 @@ public class Search {
|
|||
bestMove = new Move(0, 0, 0);
|
||||
}
|
||||
}
|
||||
SearchTreeInfo[] searchTreeInfo;
|
||||
private SearchTreeInfo[] searchTreeInfo;
|
||||
|
||||
// Time management
|
||||
long tStart; // Time when search started
|
||||
long minTimeMillis; // Minimum recommended thinking time
|
||||
long maxTimeMillis; // Maximum allowed thinking time
|
||||
boolean searchNeedMoreTime; // True if negaScout should use up to maxTimeMillis time.
|
||||
private long maxNodes; // Maximum number of nodes to search (approximately)
|
||||
int nodesToGo; // Number of nodes until next time check
|
||||
private long tStart; // Time when search started
|
||||
private long minTimeMillis; // Minimum recommended thinking time
|
||||
long maxTimeMillis; // Maximum allowed thinking time
|
||||
private boolean searchNeedMoreTime; // True if negaScout should use up to maxTimeMillis time.
|
||||
private long maxNodes; // Maximum number of nodes to search (approximately)
|
||||
private int nodesToGo; // Number of nodes until next time check
|
||||
public int nodesBetweenTimeCheck = 5000; // How often to check remaining time
|
||||
|
||||
// Reduced strength variables
|
||||
private int strength = 1000; // Strength (0-1000)
|
||||
boolean weak = false; // Set to strength < 1000
|
||||
long randomSeed = 0;
|
||||
private boolean weak = false; // Set to strength < 1000
|
||||
private long randomSeed = 0;
|
||||
|
||||
// Search statistics stuff
|
||||
long nodes;
|
||||
long qNodes;
|
||||
int[] nodesPlyVec;
|
||||
int[] nodesDepthVec;
|
||||
long totalNodes;
|
||||
long tLastStats; // Time when notifyStats was last called
|
||||
boolean verbose;
|
||||
private long nodes;
|
||||
private long qNodes;
|
||||
private int[] nodesPlyVec;
|
||||
private int[] nodesDepthVec;
|
||||
private long totalNodes;
|
||||
private long tLastStats; // Time when notifyStats was last called
|
||||
private boolean verbose;
|
||||
|
||||
public final static int MATE0 = 32000;
|
||||
|
||||
public final static int UNKNOWN_SCORE = -32767; // Represents unknown static eval score
|
||||
int q0Eval; // Static eval score at first level of quiescence search
|
||||
private int q0Eval; // Static eval score at first level of quiescence search
|
||||
|
||||
public Search(Position pos, long[] posHashList, int posHashListSize, TranspositionTable tt,
|
||||
History ht) {
|
||||
|
@ -126,7 +126,7 @@ public class Search {
|
|||
void notifyStats(long nodes, int nps, int time);
|
||||
}
|
||||
|
||||
Listener listener;
|
||||
private Listener listener;
|
||||
public void setListener(Listener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
@ -905,7 +905,7 @@ public class Search {
|
|||
return false;
|
||||
}
|
||||
|
||||
private static final boolean passedPawnPush(Position pos, Move m) {
|
||||
private static boolean passedPawnPush(Position pos, Move m) {
|
||||
int p = pos.getPiece(m.from);
|
||||
if (pos.whiteMove) {
|
||||
if (p != Piece.WPAWN)
|
||||
|
@ -925,7 +925,7 @@ public class Search {
|
|||
/**
|
||||
* Quiescence search. Only non-losing captures are searched.
|
||||
*/
|
||||
final private int quiesce(int alpha, int beta, int ply, int depth, final boolean inCheck) {
|
||||
private int quiesce(int alpha, int beta, int ply, int depth, final boolean inCheck) {
|
||||
int score;
|
||||
if (inCheck) {
|
||||
score = -(MATE0 - (ply+1));
|
||||
|
@ -1219,7 +1219,7 @@ public class Search {
|
|||
/**
|
||||
* Find move with highest score and move it to the front of the list.
|
||||
*/
|
||||
final static void selectBest(MoveGen.MoveList moves, int startIdx) {
|
||||
static void selectBest(MoveGen.MoveList moves, int startIdx) {
|
||||
int bestIdx = startIdx;
|
||||
int bestScore = moves.m[bestIdx].score;
|
||||
for (int i = startIdx + 1; i < moves.size; i++) {
|
||||
|
@ -1237,7 +1237,7 @@ public class Search {
|
|||
}
|
||||
|
||||
/** If hashMove exists in the move list, move the hash move to the front of the list. */
|
||||
final static boolean selectHashMove(MoveGen.MoveList moves, Move hashMove) {
|
||||
static boolean selectHashMove(MoveGen.MoveList moves, Move hashMove) {
|
||||
if (hashMove == null) {
|
||||
return false;
|
||||
}
|
||||
|
@ -1253,11 +1253,11 @@ public class Search {
|
|||
return false;
|
||||
}
|
||||
|
||||
public final static boolean canClaimDraw50(Position pos) {
|
||||
public static boolean canClaimDraw50(Position pos) {
|
||||
return (pos.halfMoveClock >= 100);
|
||||
}
|
||||
|
||||
public final static boolean canClaimDrawRep(Position pos, long[] posHashList, int posHashListSize, int posHashFirstNew) {
|
||||
public static boolean canClaimDrawRep(Position pos, long[] posHashList, int posHashListSize, int posHashFirstNew) {
|
||||
int reps = 0;
|
||||
for (int i = posHashListSize - 4; i >= 0; i -= 2) {
|
||||
if (pos.zobristHash() == posHashList[i]) {
|
||||
|
|
|
@ -24,7 +24,7 @@ public class TextIO {
|
|||
static public final String startPosFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
||||
|
||||
/** Parse a FEN string and return a chess Position object. */
|
||||
public static final Position readFEN(String fen) throws ChessParseError {
|
||||
public static Position readFEN(String fen) throws ChessParseError {
|
||||
Position pos = new Position();
|
||||
String[] words = fen.split(" ");
|
||||
if (words.length < 2) {
|
||||
|
@ -148,7 +148,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Remove pseudo-legal EP square if it is not legal, ie would leave king in check. */
|
||||
public static final void fixupEPSquare(Position pos) {
|
||||
public static void fixupEPSquare(Position pos) {
|
||||
int epSquare = pos.getEpSquare();
|
||||
if (epSquare >= 0) {
|
||||
MoveGen.MoveList moves = MoveGen.instance.pseudoLegalMoves(pos);
|
||||
|
@ -169,7 +169,7 @@ public class TextIO {
|
|||
}
|
||||
}
|
||||
|
||||
private static final void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
private static void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
if (row < 0) throw new ChessParseError("Too many rows");
|
||||
if (col > 7) throw new ChessParseError("Too many columns");
|
||||
if ((p == Piece.WPAWN) || (p == Piece.BPAWN)) {
|
||||
|
@ -180,7 +180,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Return a FEN string corresponding to a chess Position object. */
|
||||
public static final String toFEN(Position pos) {
|
||||
public static String toFEN(Position pos) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
// Piece placement
|
||||
for (int r = 7; r >=0; r--) {
|
||||
|
@ -271,12 +271,12 @@ public class TextIO {
|
|||
* @param longForm If true, use long notation, eg Ng1-f3.
|
||||
* Otherwise, use short notation, eg Nf3
|
||||
*/
|
||||
public static final String moveToString(Position pos, Move move, boolean longForm) {
|
||||
public static String moveToString(Position pos, Move move, boolean longForm) {
|
||||
MoveGen.MoveList moves = MoveGen.instance.pseudoLegalMoves(pos);
|
||||
MoveGen.removeIllegal(pos, moves);
|
||||
return moveToString(pos, move, longForm, moves);
|
||||
}
|
||||
private static final String moveToString(Position pos, Move move, boolean longForm, MoveGen.MoveList moves) {
|
||||
private static String moveToString(Position pos, Move move, boolean longForm, MoveGen.MoveList moves) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
int wKingOrigPos = Position.getSquare(4, 0);
|
||||
int bKingOrigPos = Position.getSquare(4, 7);
|
||||
|
@ -365,7 +365,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Convert a move object to UCI string format. */
|
||||
public static final String moveToUCIString(Move m) {
|
||||
public static String moveToUCIString(Move m) {
|
||||
String ret = squareToString(m.from);
|
||||
ret += squareToString(m.to);
|
||||
switch (m.promoteTo) {
|
||||
|
@ -395,7 +395,7 @@ public class TextIO {
|
|||
* Convert a string to a Move object.
|
||||
* @return A move object, or null if move has invalid syntax
|
||||
*/
|
||||
public static final Move uciStringToMove(String move) {
|
||||
public static Move uciStringToMove(String move) {
|
||||
Move m = null;
|
||||
if ((move.length() < 4) || (move.length() > 5))
|
||||
return m;
|
||||
|
@ -440,7 +440,7 @@ public class TextIO {
|
|||
return m;
|
||||
}
|
||||
|
||||
private static final boolean isCapture(Position pos, Move move) {
|
||||
private static boolean isCapture(Position pos, Move move) {
|
||||
if (pos.getPiece(move.to) == Piece.EMPTY) {
|
||||
int p = pos.getPiece(move.from);
|
||||
if ((p == (pos.whiteMove ? Piece.WPAWN : Piece.BPAWN)) && (move.to == pos.getEpSquare())) {
|
||||
|
@ -458,7 +458,7 @@ public class TextIO {
|
|||
* Any prefix of the string representation of a valid move counts as a legal move string,
|
||||
* as long as the string only matches one valid move.
|
||||
*/
|
||||
public static final Move stringToMove(Position pos, String strMove) {
|
||||
public static Move stringToMove(Position pos, String strMove) {
|
||||
strMove = strMove.replaceAll("=", "");
|
||||
Move move = null;
|
||||
if (strMove.length() == 0)
|
||||
|
@ -533,7 +533,7 @@ public class TextIO {
|
|||
* Convert a string, such as "e4" to a square number.
|
||||
* @return The square number, or -1 if not a legal square.
|
||||
*/
|
||||
public static final int getSquare(String s) {
|
||||
public static int getSquare(String s) {
|
||||
int x = s.charAt(0) - 'a';
|
||||
int y = s.charAt(1) - '1';
|
||||
if ((x < 0) || (x > 7) || (y < 0) || (y > 7))
|
||||
|
@ -544,7 +544,7 @@ public class TextIO {
|
|||
/**
|
||||
* Convert a square number to a string, such as "e4".
|
||||
*/
|
||||
public static final String squareToString(int square) {
|
||||
public static String squareToString(int square) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
int x = Position.getX(square);
|
||||
int y = Position.getY(square);
|
||||
|
@ -556,7 +556,7 @@ public class TextIO {
|
|||
/**
|
||||
* Create an ascii representation of a position.
|
||||
*/
|
||||
public static final String asciiBoard(Position pos) {
|
||||
public static String asciiBoard(Position pos) {
|
||||
StringBuilder ret = new StringBuilder(400);
|
||||
String nl = String.format(Locale.US, "%n");
|
||||
ret.append(" +----+----+----+----+----+----+----+----+"); ret.append(nl);
|
||||
|
@ -587,7 +587,7 @@ public class TextIO {
|
|||
/**
|
||||
* Convert move string to lower case and remove special check/mate symbols.
|
||||
*/
|
||||
private static final String normalizeMoveString(String str) {
|
||||
private static String normalizeMoveString(String str) {
|
||||
if (str.length() > 0) {
|
||||
char lastChar = str.charAt(str.length() - 1);
|
||||
if ((lastChar == '#') || (lastChar == '+')) {
|
||||
|
@ -597,7 +597,7 @@ public class TextIO {
|
|||
return str;
|
||||
}
|
||||
|
||||
private final static String pieceToChar(int p) {
|
||||
private static String pieceToChar(int p) {
|
||||
switch (p) {
|
||||
case Piece.WQUEEN: case Piece.BQUEEN: return "Q";
|
||||
case Piece.WROOK: case Piece.BROOK: return "R";
|
||||
|
|
|
@ -52,7 +52,7 @@ public final class TreeLogger {
|
|||
}
|
||||
|
||||
/** Get a logger object set up for writing to a log file. */
|
||||
public static final TreeLogger getWriter(String filename, Position pos) {
|
||||
public static TreeLogger getWriter(String filename, Position pos) {
|
||||
try {
|
||||
TreeLogger log = new TreeLogger();
|
||||
log.os = new FileOutputStream(filename);
|
||||
|
@ -80,7 +80,7 @@ public final class TreeLogger {
|
|||
}
|
||||
|
||||
/** Get a logger object set up for analyzing a log file. */
|
||||
public static final TreeLogger getAnalyzer(String filename) {
|
||||
public static TreeLogger getAnalyzer(String filename) {
|
||||
RandomAccessFile raf = null;
|
||||
try {
|
||||
TreeLogger log = new TreeLogger();
|
||||
|
@ -191,7 +191,7 @@ public final class TreeLogger {
|
|||
// ----------------------------------------------------------------------------
|
||||
// Functions used for tree analyzing
|
||||
|
||||
private static final int indexToFileOffs(int index) {
|
||||
private static int indexToFileOffs(int index) {
|
||||
return 128 + index * 16;
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ public final class TreeLogger {
|
|||
}
|
||||
mapBuf.put(127, (byte)(1 << 7));
|
||||
mapBuf.force();
|
||||
System.out.printf("Computing forward pointers... done\n");
|
||||
System.out.print("Computing forward pointers... done\n");
|
||||
}
|
||||
|
||||
/** Get FEN string for root node position. */
|
||||
|
@ -220,8 +220,7 @@ public final class TreeLogger {
|
|||
byte[] fenB = new byte[len];
|
||||
for (int i = 0; i < len; i++)
|
||||
fenB[i] = mapBuf.get(1+i);
|
||||
String ret = new String(fenB);
|
||||
return ret;
|
||||
return new String(fenB);
|
||||
}
|
||||
|
||||
static final class StartEntry {
|
||||
|
@ -271,9 +270,9 @@ public final class TreeLogger {
|
|||
// ----------------------------------------------------------------------------
|
||||
// Functions used for the interactive tree browser
|
||||
|
||||
public static final void main(String[] args) throws IOException {
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length != 1) {
|
||||
System.out.printf("Usage: progname filename\n");
|
||||
System.out.print("Usage: progname filename\n");
|
||||
System.exit(1);
|
||||
}
|
||||
TreeLogger an = getAnalyzer(args[0]);
|
||||
|
@ -445,7 +444,7 @@ public final class TreeLogger {
|
|||
}
|
||||
|
||||
/** Get integer parameter from an input string. */
|
||||
private static final int getArg(String s, int defVal) {
|
||||
private static int getArg(String s, int defVal) {
|
||||
try {
|
||||
int idx = s.indexOf(' ');
|
||||
if (idx > 0) {
|
||||
|
@ -472,7 +471,7 @@ public final class TreeLogger {
|
|||
}
|
||||
|
||||
/** Get a string parameter from an input string. */
|
||||
private static final String getArgStr(String s, String defVal) {
|
||||
private static String getArgStr(String s, String defVal) {
|
||||
int idx = s.indexOf(' ');
|
||||
if (idx > 0)
|
||||
return s.substring(idx+1);
|
||||
|
@ -480,16 +479,16 @@ public final class TreeLogger {
|
|||
}
|
||||
|
||||
private void printHelp() {
|
||||
System.out.printf(" p - Print move sequence\n");
|
||||
System.out.printf(" n - Print node info corresponding to move sequence\n");
|
||||
System.out.printf(" l [move] - List child nodes, optionally only for one move\n");
|
||||
System.out.printf(" d [n1 [n2...]] - Go to child \"n\"\n");
|
||||
System.out.printf(" move - Go to child \"move\", if unique\n");
|
||||
System.out.printf(" u [levels] - Move up\n");
|
||||
System.out.printf(" h [key] - Find nodes with current (or given) hash key\n");
|
||||
System.out.printf(" num - Go to node \"num\"\n");
|
||||
System.out.printf(" q - Quit\n");
|
||||
System.out.printf(" ? - Print this help\n");
|
||||
System.out.print(" p - Print move sequence\n");
|
||||
System.out.print(" n - Print node info corresponding to move sequence\n");
|
||||
System.out.print(" l [move] - List child nodes, optionally only for one move\n");
|
||||
System.out.print(" d [n1 [n2...]] - Go to child \"n\"\n");
|
||||
System.out.print(" move - Go to child \"move\", if unique\n");
|
||||
System.out.print(" u [levels] - Move up\n");
|
||||
System.out.print(" h [key] - Find nodes with current (or given) hash key\n");
|
||||
System.out.print(" num - Go to node \"num\"\n");
|
||||
System.out.print(" q - Quit\n");
|
||||
System.out.print(" ? - Print this help\n");
|
||||
}
|
||||
|
||||
/** Read start/end entries for a tree node. Return true if the end entry exists. */
|
||||
|
|
|
@ -436,7 +436,7 @@ public class ChessController {
|
|||
* Move a piece from one square to another.
|
||||
* @return True if the move was legal, false otherwise.
|
||||
*/
|
||||
final private boolean doMove(Move move) {
|
||||
private boolean doMove(Move move) {
|
||||
Position pos = game.pos;
|
||||
MoveGen.MoveList moves = new MoveGen().pseudoLegalMoves(pos);
|
||||
MoveGen.removeIllegal(pos, moves);
|
||||
|
@ -461,14 +461,14 @@ public class ChessController {
|
|||
}
|
||||
|
||||
|
||||
final private void updateGUI() {
|
||||
private void updateGUI() {
|
||||
setStatusString();
|
||||
setMoveList();
|
||||
setThinkingPV();
|
||||
gui.setPosition(game.pos);
|
||||
}
|
||||
|
||||
final private void setStatusString() {
|
||||
private void setStatusString() {
|
||||
String str = game.pos.whiteMove ? "White's move" : "Black's move";
|
||||
if (computerThread != null) str += " (thinking)";
|
||||
if (game.getGameState() != GameState.ALIVE) {
|
||||
|
@ -490,7 +490,7 @@ public class ChessController {
|
|||
gui.setThinkingString(str);
|
||||
}
|
||||
|
||||
final private void setSelection() {
|
||||
private void setSelection() {
|
||||
Move m = game.getLastMove();
|
||||
int sq = (m != null) ? m.to : -1;
|
||||
gui.setSelection(sq);
|
||||
|
|
|
@ -99,7 +99,7 @@ public class BitBoardTest {
|
|||
* If there is a piece type that can move from "from" to "to", return the
|
||||
* corresponding direction, 8*dy+dx.
|
||||
*/
|
||||
private static final int computeDirection(int from, int to) {
|
||||
private static int computeDirection(int from, int to) {
|
||||
int dx = Position.getX(to) - Position.getX(from);
|
||||
int dy = Position.getY(to) - Position.getY(from);
|
||||
if (dx == 0) { // Vertical rook direction
|
||||
|
@ -125,7 +125,7 @@ public class BitBoardTest {
|
|||
}
|
||||
}
|
||||
|
||||
private static final int computeDistance(int from, int to) {
|
||||
private static int computeDistance(int from, int to) {
|
||||
int dx = Position.getX(to) - Position.getX(from);
|
||||
int dy = Position.getY(to) - Position.getY(from);
|
||||
return Math.max(Math.abs(dx), Math.abs(dy));
|
||||
|
|
|
@ -471,7 +471,7 @@ public class EvaluateTest {
|
|||
}
|
||||
|
||||
/** Return static evaluation score for white, regardless of whose turn it is to move. */
|
||||
final static int evalWhite(Position pos) {
|
||||
static int evalWhite(Position pos) {
|
||||
Evaluate eval = new Evaluate();
|
||||
int ret = eval.evalPos(pos);
|
||||
Position symPos = swapColors(pos);
|
||||
|
@ -483,7 +483,7 @@ public class EvaluateTest {
|
|||
return ret;
|
||||
}
|
||||
|
||||
final static Position swapColors(Position pos) {
|
||||
static Position swapColors(Position pos) {
|
||||
Position sym = new Position();
|
||||
sym.whiteMove = !pos.whiteMove;
|
||||
for (int x = 0; x < 8; x++) {
|
||||
|
|
|
@ -26,9 +26,9 @@ import org.junit.Test;
|
|||
import static org.junit.Assert.*;
|
||||
|
||||
public class SearchTest {
|
||||
static final long[] nullHist = new long[200];
|
||||
static TranspositionTable tt = new TranspositionTable(19);
|
||||
static History ht = new History();
|
||||
private static final long[] nullHist = new long[200];
|
||||
private static TranspositionTable tt = new TranspositionTable(19);
|
||||
private static History ht = new History();
|
||||
|
||||
public SearchTest() {
|
||||
}
|
||||
|
|
|
@ -242,7 +242,7 @@ public class GameTreeTest extends TestCase {
|
|||
assertEquals(0, gt.currentNode.defaultChild);
|
||||
}
|
||||
|
||||
final static String getVariationsAsString(GameTree gt) {
|
||||
static String getVariationsAsString(GameTree gt) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
List<Move> vars = gt.variations();
|
||||
for (int i = 0; i < vars.size(); i++) {
|
||||
|
|
|
@ -66,9 +66,9 @@ public class ColorPickerDialog
|
|||
setTitle(getContext().getText(R.string.prefs_colors_title) + " '"
|
||||
+ additionalInfo + "'");
|
||||
|
||||
mColorPicker = (ColorPickerView) findViewById(R.id.color_picker_view);
|
||||
mOldColor = (ColorPickerPanelView) findViewById(R.id.old_color_panel);
|
||||
mNewColor = (ColorPickerPanelView) findViewById(R.id.new_color_panel);
|
||||
mColorPicker = findViewById(R.id.color_picker_view);
|
||||
mOldColor = findViewById(R.id.old_color_panel);
|
||||
mNewColor = findViewById(R.id.new_color_panel);
|
||||
|
||||
((LinearLayout) mOldColor.getParent()).setPadding(
|
||||
Math.round(mColorPicker.getDrawingOffset()),
|
||||
|
|
|
@ -104,7 +104,7 @@ public class ColorPickerPreference
|
|||
private void setPreviewColor() {
|
||||
if (mView == null) return;
|
||||
ImageView iView = new ImageView(getContext());
|
||||
LinearLayout widgetFrameView = ((LinearLayout)mView.findViewById(android.R.id.widget_frame));
|
||||
LinearLayout widgetFrameView = mView.findViewById(android.R.id.widget_frame);
|
||||
if (widgetFrameView == null) return;
|
||||
widgetFrameView.setVisibility(View.VISIBLE);
|
||||
widgetFrameView.setPadding(
|
||||
|
|
|
@ -150,7 +150,7 @@ public class ChessBoardPlay extends ChessBoard {
|
|||
userSelectedSquare = false;
|
||||
return matchingMove;
|
||||
}
|
||||
if (!anyMatch && (sq >= 0)) {
|
||||
if (!anyMatch) {
|
||||
int p = pos.getPiece(sq);
|
||||
if (myColor(p)) {
|
||||
String msg = getContext().getString(R.string.piece_can_not_be_moved);
|
||||
|
|
|
@ -26,7 +26,7 @@ public class ColorTheme {
|
|||
private static ColorTheme inst = null;
|
||||
|
||||
/** Get singleton instance. */
|
||||
public static final ColorTheme instance() {
|
||||
public static ColorTheme instance() {
|
||||
if (inst == null)
|
||||
inst = new ColorTheme();
|
||||
return inst;
|
||||
|
@ -130,7 +130,7 @@ public class ColorTheme {
|
|||
Editor editor = settings.edit();
|
||||
for (int i = 0; i < numColors; i++)
|
||||
editor.putString(prefPrefix + prefNames[i], themeColors[themeType][i]);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
readColors(settings);
|
||||
}
|
||||
|
||||
|
|
|
@ -217,7 +217,7 @@ public class DroidFish extends Activity
|
|||
private ImageButton modeButton, undoButton, redoButton;
|
||||
private ButtonActions custom1ButtonActions, custom2ButtonActions, custom3ButtonActions;
|
||||
private TextView whiteTitleText, blackTitleText, engineTitleText;
|
||||
private View firstTitleLine, secondTitleLine;
|
||||
private View secondTitleLine;
|
||||
private TextView whiteFigText, blackFigText, summaryTitleText;
|
||||
private Dialog moveListMenuDlg;
|
||||
|
||||
|
@ -239,12 +239,11 @@ public class DroidFish extends Activity
|
|||
private boolean vibrateEnabled;
|
||||
private boolean animateMoves;
|
||||
private boolean autoScrollTitle;
|
||||
private boolean showMaterialDiff;
|
||||
private boolean showVariationLine;
|
||||
|
||||
private int autoMoveDelay; // Delay in auto forward/backward mode
|
||||
private static enum AutoMode {
|
||||
OFF, FORWARD, BACKWARD;
|
||||
private enum AutoMode {
|
||||
OFF, FORWARD, BACKWARD
|
||||
}
|
||||
private AutoMode autoMode = AutoMode.OFF;
|
||||
|
||||
|
@ -253,7 +252,7 @@ public class DroidFish extends Activity
|
|||
private int ECO_HINTS_ALWAYS = 2;
|
||||
|
||||
/** State of requested permissions. */
|
||||
private static enum PermissionState {
|
||||
private enum PermissionState {
|
||||
UNKNOWN,
|
||||
REQUESTED,
|
||||
GRANTED,
|
||||
|
@ -277,8 +276,6 @@ public class DroidFish extends Activity
|
|||
|
||||
private PgnScreenText gameTextListener;
|
||||
|
||||
private boolean useWakeLock = false;
|
||||
|
||||
private Typeface figNotation;
|
||||
private Typeface defaultThinkingListTypeFace;
|
||||
|
||||
|
@ -436,16 +433,16 @@ public class DroidFish extends Activity
|
|||
public void run() {
|
||||
String numArrows = settings.getString("thinkingArrows", "4");
|
||||
Editor editor = settings.edit();
|
||||
if (!numArrows.equals("0")) {
|
||||
if (!"0".equals(numArrows)) {
|
||||
editor.putString("thinkingArrows", "0");
|
||||
editor.putString("oldThinkingArrows", numArrows);
|
||||
} else {
|
||||
String oldNumArrows = settings.getString("oldThinkingArrows", "0");
|
||||
if (oldNumArrows.equals("0"))
|
||||
if ("0".equals(oldNumArrows))
|
||||
oldNumArrows = "4";
|
||||
editor.putString("thinkingArrows", oldNumArrows);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
maxNumArrows = getIntSetting("thinkingArrows", 4);
|
||||
updateThinkingInfo();
|
||||
}
|
||||
|
@ -673,14 +670,14 @@ public class DroidFish extends Activity
|
|||
guideShowOnStart = false;
|
||||
Editor editor = settings.edit();
|
||||
editor.putBoolean("guideShowOnStart", false);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
tourGuide.next();
|
||||
tourGuide = null;
|
||||
}
|
||||
}));
|
||||
|
||||
Sequence sequence = new Sequence.SequenceBuilder()
|
||||
.add(guides.toArray(new TourGuide[guides.size()]))
|
||||
.add(guides.toArray(new TourGuide[0]))
|
||||
.setDefaultOverlay(new Overlay()
|
||||
.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
|
@ -841,9 +838,8 @@ public class DroidFish extends Activity
|
|||
if (data == null)
|
||||
return null;
|
||||
StringBuilder ret = new StringBuilder(32768);
|
||||
int nBytes = data.length;
|
||||
for (int i = 0; i < nBytes; i++) {
|
||||
int b = data[i]; if (b < 0) b += 256;
|
||||
for (int b : data) {
|
||||
if (b < 0) b += 256;
|
||||
char c1 = (char)('A' + (b / 16));
|
||||
char c2 = (char)('A' + (b & 15));
|
||||
ret.append(c1);
|
||||
|
@ -914,28 +910,28 @@ public class DroidFish extends Activity
|
|||
overrideViewAttribs();
|
||||
|
||||
// title lines need to be regenerated every time due to layout changes (rotations)
|
||||
firstTitleLine = findViewById(R.id.first_title_line);
|
||||
View firstTitleLine = findViewById(R.id.first_title_line);
|
||||
secondTitleLine = findViewById(R.id.second_title_line);
|
||||
whiteTitleText = (TextView)findViewById(R.id.white_clock);
|
||||
whiteTitleText = findViewById(R.id.white_clock);
|
||||
whiteTitleText.setSelected(true);
|
||||
blackTitleText = (TextView)findViewById(R.id.black_clock);
|
||||
blackTitleText = findViewById(R.id.black_clock);
|
||||
blackTitleText.setSelected(true);
|
||||
engineTitleText = (TextView)findViewById(R.id.title_text);
|
||||
whiteFigText = (TextView)findViewById(R.id.white_pieces);
|
||||
engineTitleText = findViewById(R.id.title_text);
|
||||
whiteFigText = findViewById(R.id.white_pieces);
|
||||
whiteFigText.setTypeface(figNotation);
|
||||
whiteFigText.setSelected(true);
|
||||
whiteFigText.setTextColor(whiteTitleText.getTextColors());
|
||||
blackFigText = (TextView)findViewById(R.id.black_pieces);
|
||||
blackFigText = findViewById(R.id.black_pieces);
|
||||
blackFigText.setTypeface(figNotation);
|
||||
blackFigText.setSelected(true);
|
||||
blackFigText.setTextColor(blackTitleText.getTextColors());
|
||||
summaryTitleText = (TextView)findViewById(R.id.title_text_summary);
|
||||
summaryTitleText = findViewById(R.id.title_text_summary);
|
||||
|
||||
status = (TextView)findViewById(R.id.status);
|
||||
moveListScroll = (ScrollView)findViewById(R.id.scrollView);
|
||||
moveList = (MoveListView)findViewById(R.id.moveList);
|
||||
thinkingScroll = (View)findViewById(R.id.scrollViewBot);
|
||||
thinking = (TextView)findViewById(R.id.thinking);
|
||||
status = findViewById(R.id.status);
|
||||
moveListScroll = findViewById(R.id.scrollView);
|
||||
moveList = findViewById(R.id.moveList);
|
||||
thinkingScroll = findViewById(R.id.scrollViewBot);
|
||||
thinking = findViewById(R.id.thinking);
|
||||
defaultThinkingListTypeFace = thinking.getTypeface();
|
||||
status.setFocusable(false);
|
||||
moveListScroll.setFocusable(false);
|
||||
|
@ -965,7 +961,7 @@ public class DroidFish extends Activity
|
|||
secondTitleLine.setOnClickListener(listener);
|
||||
secondTitleLine.setOnTouchListener(listener);
|
||||
|
||||
cb = (ChessBoardPlay)findViewById(R.id.chessboard);
|
||||
cb = findViewById(R.id.chessboard);
|
||||
cb.setFocusable(true);
|
||||
cb.requestFocus();
|
||||
cb.setClickable(true);
|
||||
|
@ -1146,15 +1142,15 @@ public class DroidFish extends Activity
|
|||
}
|
||||
});
|
||||
|
||||
buttons = (View)findViewById(R.id.buttons);
|
||||
custom1Button = (ImageButton)findViewById(R.id.custom1Button);
|
||||
buttons = findViewById(R.id.buttons);
|
||||
custom1Button = findViewById(R.id.custom1Button);
|
||||
custom1ButtonActions.setImageButton(custom1Button, this);
|
||||
custom2Button = (ImageButton)findViewById(R.id.custom2Button);
|
||||
custom2Button = findViewById(R.id.custom2Button);
|
||||
custom2ButtonActions.setImageButton(custom2Button, this);
|
||||
custom3Button = (ImageButton)findViewById(R.id.custom3Button);
|
||||
custom3Button = findViewById(R.id.custom3Button);
|
||||
custom3ButtonActions.setImageButton(custom3Button, this);
|
||||
|
||||
modeButton = (ImageButton)findViewById(R.id.modeButton);
|
||||
modeButton = findViewById(R.id.modeButton);
|
||||
modeButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -1168,7 +1164,7 @@ public class DroidFish extends Activity
|
|||
return true;
|
||||
}
|
||||
});
|
||||
undoButton = (ImageButton)findViewById(R.id.undoButton);
|
||||
undoButton = findViewById(R.id.undoButton);
|
||||
undoButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -1183,7 +1179,7 @@ public class DroidFish extends Activity
|
|||
return true;
|
||||
}
|
||||
});
|
||||
redoButton = (ImageButton)findViewById(R.id.redoButton);
|
||||
redoButton = findViewById(R.id.redoButton);
|
||||
redoButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -1231,7 +1227,7 @@ public class DroidFish extends Activity
|
|||
String dataStr = byteArrToString(data);
|
||||
editor.putString("gameState", dataStr);
|
||||
editor.putInt("gameStateVersion", 3);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
lastVisibleMillis = System.currentTimeMillis();
|
||||
updateNotification();
|
||||
|
@ -1251,8 +1247,7 @@ public class DroidFish extends Activity
|
|||
|
||||
private int getIntSetting(String settingName, int defaultValue) {
|
||||
String tmp = settings.getString(settingName, String.format(Locale.US, "%d", defaultValue));
|
||||
int value = Integer.parseInt(tmp);
|
||||
return value;
|
||||
return Integer.parseInt(tmp);
|
||||
}
|
||||
|
||||
private void readPrefs() {
|
||||
|
@ -1301,7 +1296,7 @@ public class DroidFish extends Activity
|
|||
autoScrollMoveList = settings.getBoolean("autoScrollMoveList", true);
|
||||
discardVariations = settings.getBoolean("discardVariations", false);
|
||||
Util.setFullScreenMode(this, settings);
|
||||
useWakeLock = settings.getBoolean("wakeLock", false);
|
||||
boolean useWakeLock = settings.getBoolean("wakeLock", false);
|
||||
setWakeLock(useWakeLock);
|
||||
|
||||
String lang = settings.getString("language", "default");
|
||||
|
@ -1346,14 +1341,12 @@ public class DroidFish extends Activity
|
|||
if (gtbPath.length() == 0)
|
||||
gtbPath = extDir.getAbsolutePath() + sep + gtbDefaultDir;
|
||||
engineOptions.gtbPath = gtbPath;
|
||||
String gtbPathNet = settings.getString("gtbPathNet", "").trim();
|
||||
engineOptions.gtbPathNet = gtbPathNet;
|
||||
engineOptions.gtbPathNet = settings.getString("gtbPathNet", "").trim();
|
||||
String rtbPath = settings.getString("rtbPath", "").trim();
|
||||
if (rtbPath.length() == 0)
|
||||
rtbPath = extDir.getAbsolutePath() + sep + rtbDefaultDir;
|
||||
engineOptions.rtbPath = rtbPath;
|
||||
String rtbPathNet = settings.getString("rtbPathNet", "").trim();
|
||||
engineOptions.rtbPathNet = rtbPathNet;
|
||||
engineOptions.rtbPathNet = settings.getString("rtbPathNet", "").trim();
|
||||
|
||||
setEngineOptions(false);
|
||||
setEgtbHints(cb.getSelectedSquare());
|
||||
|
@ -1387,7 +1380,7 @@ public class DroidFish extends Activity
|
|||
// as well in rotation
|
||||
setFigurineNotation(pgnOptions.view.pieceType == PGNOptions.PT_FIGURINE, fontSize);
|
||||
|
||||
showMaterialDiff = settings.getBoolean("materialDiff", false);
|
||||
boolean showMaterialDiff = settings.getBoolean("materialDiff", false);
|
||||
secondTitleLine.setVisibility(showMaterialDiff ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
|
@ -1397,7 +1390,7 @@ public class DroidFish extends Activity
|
|||
|
||||
private void setLanguage(String lang) {
|
||||
Locale newLocale;
|
||||
if (lang.equals("default")) {
|
||||
if ("default".equals(lang)) {
|
||||
newLocale = Resources.getSystem().getConfiguration().locale;
|
||||
} else if (lang.contains("_")) {
|
||||
String[] parts = lang.split("_");
|
||||
|
@ -1445,8 +1438,8 @@ public class DroidFish extends Activity
|
|||
private void updateButtons() {
|
||||
boolean largeButtons = settings.getBoolean("largeButtons", false);
|
||||
Resources r = getResources();
|
||||
int bWidth = (int)Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 36, r.getDisplayMetrics()));
|
||||
int bHeight = (int)Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, r.getDisplayMetrics()));
|
||||
int bWidth = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 36, r.getDisplayMetrics()));
|
||||
int bHeight = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, r.getDisplayMetrics()));
|
||||
if (largeButtons) {
|
||||
if (custom1ButtonActions.isEnabled() &&
|
||||
custom2ButtonActions.isEnabled() &&
|
||||
|
@ -1492,7 +1485,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
|
||||
@SuppressLint("Wakelock")
|
||||
private synchronized final void setWakeLock(boolean enableLock) {
|
||||
private synchronized void setWakeLock(boolean enableLock) {
|
||||
if (enableLock)
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
else
|
||||
|
@ -1524,7 +1517,7 @@ public class DroidFish extends Activity
|
|||
int idx = engine.lastIndexOf('/');
|
||||
eName = engine.substring(idx + 1);
|
||||
} else {
|
||||
eName = getString(engine.equals("cuckoochess") ?
|
||||
eName = getString("cuckoochess".equals(engine) ?
|
||||
R.string.cuckoochess_engine :
|
||||
R.string.stockfish_engine);
|
||||
boolean analysis = (ctrl != null) && ctrl.analysisMode();
|
||||
|
@ -1652,9 +1645,9 @@ public class DroidFish extends Activity
|
|||
|
||||
/** Initialize the drawer part of the user interface. */
|
||||
private void initDrawers() {
|
||||
drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
|
||||
leftDrawer = (ListView)findViewById(R.id.left_drawer);
|
||||
rightDrawer = (ListView)findViewById(R.id.right_drawer);
|
||||
drawerLayout = findViewById(R.id.drawer_layout);
|
||||
leftDrawer = findViewById(R.id.left_drawer);
|
||||
rightDrawer = findViewById(R.id.right_drawer);
|
||||
|
||||
final DrawerItem[] leftItems = new DrawerItem[] {
|
||||
new DrawerItem(ITEM_EDIT_BOARD, R.string.option_edit_board),
|
||||
|
@ -1816,7 +1809,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
editor.putString("currentScidFile", pathName);
|
||||
editor.putInt("currFT", FT_SCID);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
Intent i = new Intent(DroidFish.this, LoadScid.class);
|
||||
i.setAction("org.petero.droidfish.loadScid");
|
||||
i.putExtra("org.petero.droidfish.pathname", pathName);
|
||||
|
@ -1880,7 +1873,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
String gameModeStr = String.format(Locale.US, "%d", gameModeType);
|
||||
editor.putString("gameMode", gameModeStr);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
gameMode = new GameMode(gameModeType);
|
||||
maybeAutoModeOff(gameMode);
|
||||
ctrl.setGameMode(gameMode);
|
||||
|
@ -1927,7 +1920,7 @@ public class DroidFish extends Activity
|
|||
private void setBooleanPref(String name, boolean value) {
|
||||
Editor editor = settings.edit();
|
||||
editor.putBoolean(name, value);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
/** Toggle a boolean preference setting. Return new value. */
|
||||
|
@ -2295,7 +2288,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
String gameModeStr = String.format(Locale.US, "%d", gameModeType);
|
||||
editor.putString("gameMode", gameModeStr);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
gameMode = new GameMode(gameModeType);
|
||||
}
|
||||
// savePGNToFile(".autosave.pgn", true);
|
||||
|
@ -2309,7 +2302,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
|
||||
private Dialog promoteDialog() {
|
||||
final CharSequence[] items = {
|
||||
final String[] items = {
|
||||
getString(R.string.queen), getString(R.string.rook),
|
||||
getString(R.string.bishop), getString(R.string.knight)
|
||||
};
|
||||
|
@ -2320,8 +2313,7 @@ public class DroidFish extends Activity
|
|||
ctrl.reportPromotePiece(item);
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog clipBoardDialog() {
|
||||
|
@ -2330,14 +2322,14 @@ public class DroidFish extends Activity
|
|||
final int PASTE = 2;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.copy_game)); actions.add(COPY_GAME);
|
||||
lst.add(getString(R.string.copy_position)); actions.add(COPY_POSITION);
|
||||
lst.add(getString(R.string.paste)); actions.add(PASTE);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.tools_menu);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case COPY_GAME: {
|
||||
|
@ -2375,8 +2367,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog boardMenuDialog() {
|
||||
|
@ -2389,7 +2380,7 @@ public class DroidFish extends Activity
|
|||
final int REPEAT_LAST_MOVE = 6;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.clipboard)); actions.add(CLIPBOARD);
|
||||
if (storageAvailable()) {
|
||||
|
@ -2406,7 +2397,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.tools_menu);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case CLIPBOARD:
|
||||
|
@ -2514,7 +2505,7 @@ public class DroidFish extends Activity
|
|||
final int SAVE_GAME = 4;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
if (currFileType() != FT_NONE) {
|
||||
lst.add(getString(R.string.load_last_file)); actions.add(LOAD_LAST_FILE);
|
||||
|
@ -2527,7 +2518,7 @@ public class DroidFish extends Activity
|
|||
lst.add(getString(R.string.save_game)); actions.add(SAVE_GAME);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.load_save_menu);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case LOAD_LAST_FILE:
|
||||
|
@ -2551,12 +2542,11 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
/** Open dialog to select a game/position from the last used file. */
|
||||
final private void loadLastFile() {
|
||||
private void loadLastFile() {
|
||||
String path = currPathName();
|
||||
if (path.length() == 0)
|
||||
return;
|
||||
|
@ -2593,8 +2583,7 @@ public class DroidFish extends Activity
|
|||
} catch (NameNotFoundException e) {
|
||||
}
|
||||
builder.setTitle(title);
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog selectBookDialog() {
|
||||
|
@ -2605,20 +2594,20 @@ public class DroidFish extends Activity
|
|||
if (dotIdx < 0)
|
||||
return false;
|
||||
String ext = filename.substring(dotIdx+1);
|
||||
return (ext.equals("ctg") || ext.equals("bin"));
|
||||
return ("ctg".equals(ext) || "bin".equals(ext));
|
||||
}
|
||||
});
|
||||
final int numFiles = fileNames.length;
|
||||
final CharSequence[] items = new CharSequence[numFiles + 3];
|
||||
final String[] items = new String[numFiles + 3];
|
||||
for (int i = 0; i < numFiles; i++)
|
||||
items[i] = fileNames[i];
|
||||
items[numFiles] = getString(R.string.internal_book);
|
||||
items[numFiles + 1] = getString(R.string.eco_book);
|
||||
items[numFiles + 2] = getString(R.string.no_book);
|
||||
int defaultItem = numFiles;
|
||||
if (bookOptions.filename.equals("eco:"))
|
||||
if ("eco:".equals(bookOptions.filename))
|
||||
defaultItem = numFiles + 1;
|
||||
else if (bookOptions.filename.equals("nobook:"))
|
||||
else if ("nobook:".equals(bookOptions.filename))
|
||||
defaultItem = numFiles + 2;
|
||||
for (int i = 0; i < numFiles; i++) {
|
||||
if (bookOptions.filename.equals(items[i])) {
|
||||
|
@ -2641,14 +2630,13 @@ public class DroidFish extends Activity
|
|||
else
|
||||
bookFile = items[item].toString();
|
||||
editor.putString("bookFile", bookFile);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
bookOptions.filename = bookFile;
|
||||
setBookOptions();
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private static boolean reservedEngineName(String name) {
|
||||
|
@ -2720,7 +2708,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
String engine = ids.get(item);
|
||||
editor.putString("engine", engine);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
dialog.dismiss();
|
||||
int strength = settings.getInt("strength", 1000);
|
||||
setEngineOptions(false);
|
||||
|
@ -2734,11 +2722,10 @@ public class DroidFish extends Activity
|
|||
reShowDialog(MANAGE_ENGINES_DIALOG);
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private static interface Loader {
|
||||
private interface Loader {
|
||||
void load(String pathName);
|
||||
}
|
||||
|
||||
|
@ -2770,8 +2757,7 @@ public class DroidFish extends Activity
|
|||
if (numFiles == 0) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.app_name).setMessage(noFilesMsg);
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
int defaultItem = 0;
|
||||
String currentFile = settings.getString(settingsName, "");
|
||||
|
@ -2793,8 +2779,7 @@ public class DroidFish extends Activity
|
|||
loader.load(pathName);
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog selectPgnFileSaveDialog() {
|
||||
|
@ -2810,7 +2795,7 @@ public class DroidFish extends Activity
|
|||
break;
|
||||
}
|
||||
}
|
||||
final CharSequence[] items = new CharSequence[numFiles + 1];
|
||||
final String[] items = new String[numFiles + 1];
|
||||
for (int i = 0; i < numFiles; i++)
|
||||
items[i] = fileNames[i];
|
||||
items[numFiles] = getString(R.string.new_file);
|
||||
|
@ -2824,7 +2809,7 @@ public class DroidFish extends Activity
|
|||
showDialog(SELECT_PGN_SAVE_NEWFILE_DIALOG);
|
||||
} else {
|
||||
dialog.dismiss();
|
||||
pgnFile = fileNames[item].toString();
|
||||
pgnFile = fileNames[item];
|
||||
String sep = File.separator;
|
||||
String pathName = Environment.getExternalStorageDirectory() + sep + pgnDir + sep + pgnFile;
|
||||
savePGNToFile(pathName, false);
|
||||
|
@ -2840,7 +2825,7 @@ public class DroidFish extends Activity
|
|||
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setView(content);
|
||||
builder.setTitle(R.string.select_pgn_file_save);
|
||||
final EditText fileNameView = (EditText)content.findViewById(R.id.create_pgn_filename);
|
||||
final EditText fileNameView = content.findViewById(R.id.create_pgn_filename);
|
||||
fileNameView.setText("");
|
||||
final Runnable savePGN = new Runnable() {
|
||||
public void run() {
|
||||
|
@ -2893,7 +2878,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
|
||||
private Dialog gameModeDialog() {
|
||||
final CharSequence[] items = {
|
||||
final String[] items = {
|
||||
getString(R.string.analysis_mode),
|
||||
getString(R.string.edit_replay_game),
|
||||
getString(R.string.play_white),
|
||||
|
@ -2923,8 +2908,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog moveListMenuDialog() {
|
||||
|
@ -2937,7 +2921,7 @@ public class DroidFish extends Activity
|
|||
final int ADD_NULL_MOVE = 6;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.edit_headers)); actions.add(EDIT_HEADERS);
|
||||
if (ctrl.humansTurn()) {
|
||||
|
@ -2961,7 +2945,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.edit_game);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case EDIT_HEADERS:
|
||||
|
@ -3006,12 +2990,12 @@ public class DroidFish extends Activity
|
|||
|
||||
final TextView event, site, date, round, white, black;
|
||||
|
||||
event = (TextView)content.findViewById(R.id.ed_header_event);
|
||||
site = (TextView)content.findViewById(R.id.ed_header_site);
|
||||
date = (TextView)content.findViewById(R.id.ed_header_date);
|
||||
round = (TextView)content.findViewById(R.id.ed_header_round);
|
||||
white = (TextView)content.findViewById(R.id.ed_header_white);
|
||||
black = (TextView)content.findViewById(R.id.ed_header_black);
|
||||
event = content.findViewById(R.id.ed_header_event);
|
||||
site = content.findViewById(R.id.ed_header_site);
|
||||
date = content.findViewById(R.id.ed_header_date);
|
||||
round = content.findViewById(R.id.ed_header_round);
|
||||
white = content.findViewById(R.id.ed_header_white);
|
||||
black = content.findViewById(R.id.ed_header_black);
|
||||
|
||||
event.setText(headers.get("Event"));
|
||||
site .setText(headers.get("Site"));
|
||||
|
@ -3020,10 +3004,10 @@ public class DroidFish extends Activity
|
|||
white.setText(headers.get("White"));
|
||||
black.setText(headers.get("Black"));
|
||||
|
||||
final Spinner gameResult = (Spinner)content.findViewById(R.id.ed_game_result);
|
||||
final Spinner gameResult = content.findViewById(R.id.ed_game_result);
|
||||
final String[] items = new String[]{"1-0", "1/2-1/2", "0-1", "*"};
|
||||
ArrayAdapter<CharSequence> adapt =
|
||||
new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, items);
|
||||
ArrayAdapter<String> adapt =
|
||||
new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, items);
|
||||
adapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
gameResult.setAdapter(adapt);
|
||||
gameResult.setSelection(Arrays.asList(items).indexOf(headers.get("Result")));
|
||||
|
@ -3059,10 +3043,10 @@ public class DroidFish extends Activity
|
|||
DroidChessController.CommentInfo commInfo = ctrl.getComments();
|
||||
|
||||
final TextView preComment, moveView, nag, postComment;
|
||||
preComment = (TextView)content.findViewById(R.id.ed_comments_pre);
|
||||
moveView = (TextView)content.findViewById(R.id.ed_comments_move);
|
||||
nag = (TextView)content.findViewById(R.id.ed_comments_nag);
|
||||
postComment = (TextView)content.findViewById(R.id.ed_comments_post);
|
||||
preComment = content.findViewById(R.id.ed_comments_pre);
|
||||
moveView = content.findViewById(R.id.ed_comments_move);
|
||||
nag = content.findViewById(R.id.ed_comments_nag);
|
||||
postComment = content.findViewById(R.id.ed_comments_post);
|
||||
|
||||
preComment.setText(commInfo.preComment);
|
||||
postComment.setText(commInfo.postComment);
|
||||
|
@ -3097,7 +3081,7 @@ public class DroidFish extends Activity
|
|||
final int TRUNCATE_VARS = 3;
|
||||
final int HIDE_STATISTICS = 4;
|
||||
final int SHOW_STATISTICS = 5;
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.add_analysis)); actions.add(ADD_ANALYSIS);
|
||||
int numPV = this.numPV;
|
||||
|
@ -3124,7 +3108,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.analysis);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case ADD_ANALYSIS: {
|
||||
|
@ -3158,7 +3142,7 @@ public class DroidFish extends Activity
|
|||
fullPVLines = actions.get(item) == SHOW_WHOLE_VARS;
|
||||
Editor editor = settings.edit();
|
||||
editor.putBoolean("fullPVLines", fullPVLines);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
updateThinkingInfo();
|
||||
break;
|
||||
}
|
||||
|
@ -3167,15 +3151,14 @@ public class DroidFish extends Activity
|
|||
mShowStats = actions.get(item) == SHOW_STATISTICS;
|
||||
Editor editor = settings.edit();
|
||||
editor.putBoolean("showStats", mShowStats);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
updateThinkingInfo();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
/** Handle user interface to set MultiPV value. */
|
||||
|
@ -3184,7 +3167,7 @@ public class DroidFish extends Activity
|
|||
numPV = nPV;
|
||||
Editor editor = settings.edit();
|
||||
editor.putInt("numPV", numPV);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
ctrl.setMultiPVMode(numPV);
|
||||
}
|
||||
|
||||
|
@ -3225,8 +3208,8 @@ public class DroidFish extends Activity
|
|||
View content = View.inflate(DroidFish.this, R.layout.num_variations, null);
|
||||
builder.setView(content);
|
||||
|
||||
final SeekBar seekBar = (SeekBar)content.findViewById(R.id.numvar_seekbar);
|
||||
final EditText editTxt = (EditText)content.findViewById(R.id.numvar_edittext);
|
||||
final SeekBar seekBar = content.findViewById(R.id.numvar_seekbar);
|
||||
final EditText editTxt = content.findViewById(R.id.numvar_edittext);
|
||||
|
||||
seekBar.setMax(numPVToProgress(maxPV, maxPV));
|
||||
seekBar.setProgress(numPVToProgress(numPV, maxPV));
|
||||
|
@ -3288,7 +3271,7 @@ public class DroidFish extends Activity
|
|||
final int AUTO_BACKWARD = 4;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.goto_start_game)); actions.add(GOTO_START_GAME);
|
||||
lst.add(getString(R.string.goto_start_variation)); actions.add(GOTO_START_VAR);
|
||||
|
@ -3304,7 +3287,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.go_back);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case GOTO_START_GAME: ctrl.gotoMove(0); break;
|
||||
|
@ -3319,8 +3302,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog goForwardMenuDialog() {
|
||||
|
@ -3330,7 +3312,7 @@ public class DroidFish extends Activity
|
|||
final int AUTO_FORWARD = 3;
|
||||
|
||||
setAutoMode(AutoMode.OFF);
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.goto_end_variation)); actions.add(GOTO_END_VAR);
|
||||
if (ctrl.currVariation() < ctrl.numVariations() - 1) {
|
||||
|
@ -3345,7 +3327,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.go_forward);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case GOTO_END_VAR: ctrl.gotoMove(Integer.MAX_VALUE); break;
|
||||
|
@ -3359,12 +3341,11 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog makeButtonDialog(ButtonActions buttonActions) {
|
||||
List<CharSequence> names = new ArrayList<>();
|
||||
List<String> names = new ArrayList<>();
|
||||
final List<UIAction> actions = new ArrayList<>();
|
||||
|
||||
HashSet<String> used = new HashSet<>();
|
||||
|
@ -3377,7 +3358,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(buttonActions.getMenuTitle());
|
||||
builder.setItems(names.toArray(new CharSequence[names.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(names.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
UIAction a = actions.get(item);
|
||||
a.run();
|
||||
|
@ -3390,7 +3371,7 @@ public class DroidFish extends Activity
|
|||
final int SELECT_ENGINE = 0;
|
||||
final int SET_ENGINE_OPTIONS = 1;
|
||||
final int CONFIG_NET_ENGINE = 2;
|
||||
List<CharSequence> lst = new ArrayList<>();
|
||||
List<String> lst = new ArrayList<>();
|
||||
final List<Integer> actions = new ArrayList<>();
|
||||
lst.add(getString(R.string.select_engine)); actions.add(SELECT_ENGINE);
|
||||
if (canSetEngineOptions()) {
|
||||
|
@ -3400,7 +3381,7 @@ public class DroidFish extends Activity
|
|||
lst.add(getString(R.string.configure_network_engine)); actions.add(CONFIG_NET_ENGINE);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.option_manage_engines);
|
||||
builder.setItems(lst.toArray(new CharSequence[lst.size()]), new DialogInterface.OnClickListener() {
|
||||
builder.setItems(lst.toArray(new String[0]), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
switch (actions.get(item)) {
|
||||
case SELECT_ENGINE:
|
||||
|
@ -3415,8 +3396,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
/** Return true if engine UCI options can be set now. */
|
||||
|
@ -3452,16 +3432,15 @@ public class DroidFish extends Activity
|
|||
return EngineUtil.isNetEngine(filename);
|
||||
}
|
||||
});
|
||||
final int numFiles = fileNames.length;
|
||||
final int numItems = numFiles + 1;
|
||||
final int numItems = fileNames.length + 1;
|
||||
final String[] items = new String[numItems];
|
||||
final String[] ids = new String[numItems];
|
||||
int idx = 0;
|
||||
String sep = File.separator;
|
||||
String base = Environment.getExternalStorageDirectory() + sep + engineDir + sep;
|
||||
for (int i = 0; i < numFiles; i++) {
|
||||
ids[idx] = base + fileNames[i];
|
||||
items[idx] = fileNames[i];
|
||||
for (String fileName : fileNames) {
|
||||
ids[idx] = base + fileName;
|
||||
items[idx] = fileName;
|
||||
idx++;
|
||||
}
|
||||
ids[idx] = ""; items[idx] = getString(R.string.new_engine); idx++;
|
||||
|
@ -3493,8 +3472,7 @@ public class DroidFish extends Activity
|
|||
reShowDialog(MANAGE_ENGINES_DIALOG);
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
// Filename of network engine to configure
|
||||
|
@ -3506,7 +3484,7 @@ public class DroidFish extends Activity
|
|||
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setView(content);
|
||||
builder.setTitle(R.string.create_network_engine);
|
||||
final EditText engineNameView = (EditText)content.findViewById(R.id.create_network_engine);
|
||||
final EditText engineNameView = content.findViewById(R.id.create_network_engine);
|
||||
engineNameView.setText("");
|
||||
final Runnable createEngine = new Runnable() {
|
||||
public void run() {
|
||||
|
@ -3570,8 +3548,8 @@ public class DroidFish extends Activity
|
|||
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setView(content);
|
||||
builder.setTitle(R.string.configure_network_engine);
|
||||
final EditText hostNameView = (EditText)content.findViewById(R.id.network_engine_host);
|
||||
final EditText portView = (EditText)content.findViewById(R.id.network_engine_port);
|
||||
final EditText hostNameView = content.findViewById(R.id.network_engine_host);
|
||||
final EditText portView = content.findViewById(R.id.network_engine_port);
|
||||
String hostName = "";
|
||||
String port = "0";
|
||||
try {
|
||||
|
@ -3658,7 +3636,7 @@ public class DroidFish extends Activity
|
|||
engine = "stockfish";
|
||||
Editor editor = settings.edit();
|
||||
editor.putString("engine", engine);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
dialog.dismiss();
|
||||
int strength = settings.getInt("strength", 1000);
|
||||
setEngineOptions(false);
|
||||
|
@ -3680,8 +3658,7 @@ public class DroidFish extends Activity
|
|||
reShowDialog(NETWORK_ENGINE_DIALOG);
|
||||
}
|
||||
});
|
||||
AlertDialog alert = builder.create();
|
||||
return alert;
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
/** Open a load/save file dialog. Uses OI file manager if available. */
|
||||
|
@ -3727,7 +3704,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
|
||||
public final static boolean hasFenProvider(PackageManager manager) {
|
||||
public static boolean hasFenProvider(PackageManager manager) {
|
||||
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
i.setType("application/x-chess-fen");
|
||||
List<ResolveInfo> resolvers = manager.queryIntentActivities(i, 0);
|
||||
|
@ -3773,7 +3750,7 @@ public class DroidFish extends Activity
|
|||
}
|
||||
}
|
||||
|
||||
private static interface FileNameFilter {
|
||||
private interface FileNameFilter {
|
||||
boolean accept(String filename);
|
||||
}
|
||||
|
||||
|
@ -3805,7 +3782,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
editor.putString("currentPGNFile", pathName);
|
||||
editor.putInt("currFT", FT_PGN);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
Intent i = new Intent(DroidFish.this, EditPGNSave.class);
|
||||
i.setAction("org.petero.droidfish.saveFile");
|
||||
i.putExtra("org.petero.droidfish.pathname", pathName);
|
||||
|
@ -3819,7 +3796,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
editor.putString("currentPGNFile", pathName);
|
||||
editor.putInt("currFT", FT_PGN);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
Intent i = new Intent(DroidFish.this, EditPGNLoad.class);
|
||||
i.setAction("org.petero.droidfish.loadFile");
|
||||
i.putExtra("org.petero.droidfish.pathname", pathName);
|
||||
|
@ -3833,7 +3810,7 @@ public class DroidFish extends Activity
|
|||
Editor editor = settings.edit();
|
||||
editor.putString("currentFENFile", pathName);
|
||||
editor.putInt("currFT", FT_FEN);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
Intent i = new Intent(DroidFish.this, LoadFEN.class);
|
||||
i.setAction("org.petero.droidfish.loadFen");
|
||||
i.putExtra("org.petero.droidfish.pathname", pathName);
|
||||
|
@ -3943,11 +3920,11 @@ public class DroidFish extends Activity
|
|||
if (show) {
|
||||
boolean silhouette = Build.VERSION.SDK_INT >= 21;
|
||||
int icon = silhouette ? R.drawable.silhouette : R.mipmap.icon;
|
||||
CharSequence tickerText = getString(R.string.heavy_cpu_usage);
|
||||
String tickerText = getString(R.string.heavy_cpu_usage);
|
||||
long when = System.currentTimeMillis();
|
||||
Context context = getApplicationContext();
|
||||
CharSequence contentTitle = getString(R.string.background_processing);
|
||||
CharSequence contentText = getString(R.string.lot_cpu_power);
|
||||
String contentTitle = getString(R.string.background_processing);
|
||||
String contentText = getString(R.string.lot_cpu_power);
|
||||
Intent notificationIntent = new Intent(this, CPUWarning.class);
|
||||
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
|
||||
@SuppressWarnings("deprecation")
|
||||
|
|
|
@ -40,7 +40,7 @@ public class FileUtil {
|
|||
while ((line = inBuf.readLine()) != null)
|
||||
ret.add(line);
|
||||
inBuf.close();
|
||||
return ret.toArray(new String[ret.size()]);
|
||||
return ret.toArray(new String[0]);
|
||||
}
|
||||
|
||||
/** Read all data from an input stream. Return null if IO error. */
|
||||
|
@ -81,7 +81,7 @@ public class FileUtil {
|
|||
}
|
||||
|
||||
/** Return the length of a file, or -1 if length can not be determined. */
|
||||
public static final long getFileLength(String filename) {
|
||||
public static long getFileLength(String filename) {
|
||||
try {
|
||||
RandomAccessFile raf = new RandomAccessFile(filename, "r");
|
||||
try {
|
||||
|
|
|
@ -144,27 +144,27 @@ public class EditBoard extends Activity {
|
|||
|
||||
View firstTitleLine = findViewById(R.id.first_title_line);
|
||||
View secondTitleLine = findViewById(R.id.second_title_line);
|
||||
cb = (ChessBoardEdit)findViewById(R.id.eb_chessboard);
|
||||
cb = findViewById(R.id.eb_chessboard);
|
||||
cb.setFlipped(boardFlipped);
|
||||
status = (TextView)findViewById(R.id.eb_status);
|
||||
okButton = (Button)findViewById(R.id.eb_ok);
|
||||
cancelButton = (Button)findViewById(R.id.eb_cancel);
|
||||
status = findViewById(R.id.eb_status);
|
||||
okButton = findViewById(R.id.eb_ok);
|
||||
cancelButton = findViewById(R.id.eb_cancel);
|
||||
|
||||
TextView whiteTitleText = (TextView)findViewById(R.id.white_clock);
|
||||
TextView whiteTitleText = findViewById(R.id.white_clock);
|
||||
whiteTitleText.setVisibility(View.GONE);
|
||||
TextView blackTitleText = (TextView)findViewById(R.id.black_clock);
|
||||
TextView blackTitleText = findViewById(R.id.black_clock);
|
||||
blackTitleText.setVisibility(View.GONE);
|
||||
TextView engineTitleText = (TextView)findViewById(R.id.title_text);
|
||||
TextView engineTitleText = findViewById(R.id.title_text);
|
||||
engineTitleText.setVisibility(View.GONE);
|
||||
whiteFigText = (TextView) findViewById(R.id.white_pieces);
|
||||
whiteFigText = findViewById(R.id.white_pieces);
|
||||
whiteFigText.setTypeface(figNotation);
|
||||
whiteFigText.setSelected(true);
|
||||
whiteFigText.setTextColor(whiteTitleText.getTextColors());
|
||||
blackFigText = (TextView) findViewById(R.id.black_pieces);
|
||||
blackFigText = findViewById(R.id.black_pieces);
|
||||
blackFigText.setTypeface(figNotation);
|
||||
blackFigText.setSelected(true);
|
||||
blackFigText.setTextColor(blackTitleText.getTextColors());
|
||||
TextView summaryTitleText = (TextView) findViewById(R.id.title_text_summary);
|
||||
TextView summaryTitleText = findViewById(R.id.title_text_summary);
|
||||
summaryTitleText.setText(R.string.edit_board);
|
||||
|
||||
TextUtils.TruncateAt where = autoScrollTitle ? TextUtils.TruncateAt.MARQUEE
|
||||
|
@ -253,8 +253,8 @@ public class EditBoard extends Activity {
|
|||
|
||||
/** Initialize the drawer part of the user interface. */
|
||||
private void initDrawers() {
|
||||
drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
|
||||
leftDrawer = (ListView)findViewById(R.id.left_drawer);
|
||||
drawerLayout = findViewById(R.id.drawer_layout);
|
||||
leftDrawer = findViewById(R.id.left_drawer);
|
||||
|
||||
class DrawerItem {
|
||||
int id;
|
||||
|
@ -596,8 +596,8 @@ public class EditBoard extends Activity {
|
|||
|
||||
builder.setView(content);
|
||||
builder.setTitle(R.string.edit_move_counters);
|
||||
final EditText halfMoveClock = (EditText)content.findViewById(R.id.ed_cnt_halfmove);
|
||||
final EditText fullMoveCounter = (EditText)content.findViewById(R.id.ed_cnt_fullmove);
|
||||
final EditText halfMoveClock = content.findViewById(R.id.ed_cnt_halfmove);
|
||||
final EditText fullMoveCounter = content.findViewById(R.id.ed_cnt_fullmove);
|
||||
halfMoveClock.setText(String.format(Locale.US, "%d", cb.pos.halfMoveClock));
|
||||
fullMoveCounter.setText(String.format(Locale.US, "%d", cb.pos.fullMoveCounter));
|
||||
final Runnable setCounters = new Runnable() {
|
||||
|
|
|
@ -95,7 +95,7 @@ public class EditOptions extends Activity {
|
|||
View view = View.inflate(this, R.layout.editoptions, null);
|
||||
|
||||
if (uciOpts != null) {
|
||||
LinearLayout content = (LinearLayout)view.findViewById(R.id.eo_content);
|
||||
LinearLayout content = view.findViewById(R.id.eo_content);
|
||||
for (String name : uciOpts.getOptionNames()) {
|
||||
UCIOptions.OptionBase o = uciOpts.getOption(name);
|
||||
if (!o.visible)
|
||||
|
@ -103,7 +103,7 @@ public class EditOptions extends Activity {
|
|||
switch (o.type) {
|
||||
case CHECK: {
|
||||
View v = View.inflate(this, R.layout.uci_option_check, null);
|
||||
CheckBox checkBox = (CheckBox)v.findViewById(R.id.eo_value);
|
||||
CheckBox checkBox = v.findViewById(R.id.eo_value);
|
||||
checkBox.setText(o.name);
|
||||
final UCIOptions.CheckOption co = (UCIOptions.CheckOption)o;
|
||||
checkBox.setChecked(co.value);
|
||||
|
@ -118,8 +118,8 @@ public class EditOptions extends Activity {
|
|||
}
|
||||
case SPIN: {
|
||||
View v = View.inflate(this, R.layout.uci_option_spin, null);
|
||||
TextView label = (TextView)v.findViewById(R.id.eo_label);
|
||||
EditText value = (EditText)v.findViewById(R.id.eo_value);
|
||||
TextView label = v.findViewById(R.id.eo_label);
|
||||
EditText value = v.findViewById(R.id.eo_value);
|
||||
final UCIOptions.SpinOption so = (UCIOptions.SpinOption)o;
|
||||
String labelText = String.format(Locale.US, "%s (%d\u2013%d)", so.name, so.minValue, so.maxValue);
|
||||
label.setText(labelText);
|
||||
|
@ -148,8 +148,8 @@ public class EditOptions extends Activity {
|
|||
}
|
||||
case COMBO: {
|
||||
View v = View.inflate(this, R.layout.uci_option_combo, null);
|
||||
TextView label = (TextView)v.findViewById(R.id.eo_label);
|
||||
Spinner value = (Spinner)v.findViewById(R.id.eo_value);
|
||||
TextView label = v.findViewById(R.id.eo_label);
|
||||
Spinner value = v.findViewById(R.id.eo_value);
|
||||
label.setText(o.name);
|
||||
final UCIOptions.ComboOption co = (UCIOptions.ComboOption)o;
|
||||
ArrayAdapter<CharSequence> adapter =
|
||||
|
@ -171,7 +171,7 @@ public class EditOptions extends Activity {
|
|||
}
|
||||
case BUTTON: {
|
||||
View v = View.inflate(this, R.layout.uci_option_button, null);
|
||||
ToggleButton button = (ToggleButton)v.findViewById(R.id.eo_label);
|
||||
ToggleButton button = v.findViewById(R.id.eo_label);
|
||||
final UCIOptions.ButtonOption bo = (UCIOptions.ButtonOption)o;
|
||||
bo.trigger = false;
|
||||
button.setText(o.name);
|
||||
|
@ -188,8 +188,8 @@ public class EditOptions extends Activity {
|
|||
}
|
||||
case STRING: {
|
||||
View v = View.inflate(this, R.layout.uci_option_string, null);
|
||||
TextView label = (TextView)v.findViewById(R.id.eo_label);
|
||||
EditText value = (EditText)v.findViewById(R.id.eo_value);
|
||||
TextView label = v.findViewById(R.id.eo_label);
|
||||
EditText value = v.findViewById(R.id.eo_value);
|
||||
label.setText(o.name + " ");
|
||||
final UCIOptions.StringOption so = (UCIOptions.StringOption)o;
|
||||
value.setText(so.value);
|
||||
|
@ -210,9 +210,9 @@ public class EditOptions extends Activity {
|
|||
|
||||
setContentView(view);
|
||||
Util.overrideViewAttribs(findViewById(android.R.id.content));
|
||||
Button okButton = (Button)findViewById(R.id.eo_ok);
|
||||
Button cancelButton = (Button)findViewById(R.id.eo_cancel);
|
||||
Button resetButton = (Button)findViewById(R.id.eo_reset);
|
||||
Button okButton = findViewById(R.id.eo_ok);
|
||||
Button cancelButton = findViewById(R.id.eo_cancel);
|
||||
Button resetButton = findViewById(R.id.eo_reset);
|
||||
|
||||
okButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -213,7 +213,7 @@ public class EditPGN extends ListActivity {
|
|||
editor.putString("lastSearchString", lastSearchString);
|
||||
editor.putString("lastFileName", lastFileName);
|
||||
editor.putLong("lastModTime", lastModTime);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
@ -290,7 +290,7 @@ public class EditPGN extends ListActivity {
|
|||
}
|
||||
});
|
||||
|
||||
filterText = (EditText)findViewById(R.id.select_game_filter);
|
||||
filterText = findViewById(R.id.select_game_filter);
|
||||
filterText.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) { }
|
||||
|
@ -303,7 +303,7 @@ public class EditPGN extends ListActivity {
|
|||
}
|
||||
});
|
||||
filterText.setText(lastSearchString);
|
||||
hintText = (TextView)findViewById(R.id.select_game_hint);
|
||||
hintText = findViewById(R.id.select_game_hint);
|
||||
if (loadGame) {
|
||||
hintText.setVisibility(View.GONE);
|
||||
} else {
|
||||
|
|
|
@ -180,7 +180,7 @@ public class LoadFEN extends ListActivity {
|
|||
editor.putInt("defaultItem", defaultItem);
|
||||
editor.putString("lastFenFileName", lastFileName);
|
||||
editor.putLong("lastFenModTime", lastModTime);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
@ -202,9 +202,9 @@ public class LoadFEN extends ListActivity {
|
|||
removeProgressDialog();
|
||||
setContentView(R.layout.load_fen);
|
||||
|
||||
cb = (ChessBoardPlay)findViewById(R.id.loadfen_chessboard);
|
||||
okButton = (Button)findViewById(R.id.loadfen_ok);
|
||||
cancelButton = (Button)findViewById(R.id.loadfen_cancel);
|
||||
cb = findViewById(R.id.loadfen_chessboard);
|
||||
okButton = findViewById(R.id.loadfen_ok);
|
||||
cancelButton = findViewById(R.id.loadfen_cancel);
|
||||
|
||||
okButton.setEnabled(false);
|
||||
okButton.setOnClickListener(new OnClickListener() {
|
||||
|
|
|
@ -212,7 +212,7 @@ public class LoadScid extends ListActivity {
|
|||
editor.putInt("defaultScidItem", defaultItem);
|
||||
editor.putString("lastScidFileName", lastFileName);
|
||||
editor.putLong("lastScidModTime", lastModTime);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ public class Preferences extends PreferenceActivity {
|
|||
if (v == null)
|
||||
return null;
|
||||
|
||||
final ListView lv = (ListView) v.findViewById(android.R.id.list);
|
||||
final ListView lv = v.findViewById(android.R.id.list);
|
||||
if (lv != null) {
|
||||
lv.setOnScrollListener(new OnScrollListener() {
|
||||
@Override
|
||||
|
@ -94,6 +94,6 @@ public class Preferences extends PreferenceActivity {
|
|||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
Editor editor = settings.edit();
|
||||
editor.putInt("prefsViewInitialItem", currentItem);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ public class SeekBarPreference extends Preference
|
|||
title = getContext().getString(R.string.edit_randomization);
|
||||
}
|
||||
builder.setTitle(title);
|
||||
final EditText valueView = (EditText)content.findViewById(R.id.selpercentage_number);
|
||||
final EditText valueView = content.findViewById(R.id.selpercentage_number);
|
||||
valueView.setText(currValBox.getText().toString().replaceAll("%", "").replaceAll(",", "."));
|
||||
final Runnable selectValue = new Runnable() {
|
||||
public void run() {
|
||||
|
@ -195,7 +195,7 @@ public class SeekBarPreference extends Preference
|
|||
currValBox.setText(valToString());
|
||||
SharedPreferences.Editor editor = getEditor();
|
||||
editor.putInt(getKey(), progress);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if ((progress == 0) && showStrengthHint) {
|
||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
String engine = settings.getString("engine", "stockfish");
|
||||
|
|
|
@ -250,7 +250,7 @@ class CtgBook implements IOpeningBook {
|
|||
this.f = f;
|
||||
}
|
||||
|
||||
final static ArrayList<Integer> getHashIndices(byte[] encodedPos, CtbFile ctb) throws IOException {
|
||||
static ArrayList<Integer> getHashIndices(byte[] encodedPos, CtbFile ctb) throws IOException {
|
||||
ArrayList<Integer> ret = new ArrayList<>();
|
||||
int hash = getHashValue(encodedPos);
|
||||
for (int n = 0; n < 0x7fffffff; n = 2*n + 1) {
|
||||
|
|
|
@ -284,7 +284,7 @@ public class EcoDb {
|
|||
start = i + 1;
|
||||
}
|
||||
}
|
||||
strPool = names.toArray(new String[names.size()]);
|
||||
strPool = names.toArray(new String[0]);
|
||||
} catch (IOException ex) {
|
||||
throw new RuntimeException("Can't read ECO database");
|
||||
}
|
||||
|
|
|
@ -97,11 +97,11 @@ public class EngineUtil {
|
|||
}
|
||||
|
||||
/** Executes chmod 744 exePath. */
|
||||
final static native boolean chmod(String exePath);
|
||||
static native boolean chmod(String exePath);
|
||||
|
||||
/** Change the priority of a process. */
|
||||
final static native void reNice(int pid, int prio);
|
||||
static native void reNice(int pid, int prio);
|
||||
|
||||
/** For synchronizing non thread safe native calls. */
|
||||
public static Object nativeLock = new Object();
|
||||
public static final Object nativeLock = new Object();
|
||||
}
|
||||
|
|
|
@ -236,7 +236,7 @@ public abstract class UCIEngineBase implements UCIEngine {
|
|||
}
|
||||
} else if (type.equals("combo")) {
|
||||
if (defVal != null && var.size() > 0) {
|
||||
String[] allowed = var.toArray(new String[var.size()]);
|
||||
String[] allowed = var.toArray(new String[0]);
|
||||
for (String s : allowed)
|
||||
if (s.equals(defVal)) {
|
||||
option = new UCIOptions.ComboOption(name, allowed, defVal);
|
||||
|
|
|
@ -29,7 +29,7 @@ public class UCIOptions implements Serializable, Cloneable {
|
|||
private ArrayList<String> names;
|
||||
private Map<String, OptionBase> options;
|
||||
|
||||
public static enum Type {
|
||||
public enum Type {
|
||||
CHECK,
|
||||
SPIN,
|
||||
COMBO,
|
||||
|
@ -70,8 +70,8 @@ public class UCIOptions implements Serializable, Cloneable {
|
|||
SpinOption so = (SpinOption)o;
|
||||
return so.set(val);
|
||||
} catch (NumberFormatException ex) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
case COMBO:
|
||||
return ((ComboOption)o).set(value);
|
||||
case BUTTON:
|
||||
|
@ -251,7 +251,7 @@ public class UCIOptions implements Serializable, Cloneable {
|
|||
}
|
||||
|
||||
public final String[] getOptionNames() {
|
||||
return names.toArray(new String[names.size()]);
|
||||
return names.toArray(new String[0]);
|
||||
}
|
||||
|
||||
public final OptionBase getOption(String name) {
|
||||
|
|
|
@ -208,7 +208,7 @@ public class DroidEngineControl {
|
|||
}
|
||||
}
|
||||
|
||||
static final int clamp(int val, int min, int max) {
|
||||
static int clamp(int val, int min, int max) {
|
||||
if (val < min) {
|
||||
return min;
|
||||
} else if (val > max) {
|
||||
|
@ -218,8 +218,8 @@ public class DroidEngineControl {
|
|||
}
|
||||
}
|
||||
|
||||
final private void startThread(final int minTimeLimit, final int maxTimeLimit,
|
||||
int maxDepth, final int maxNodes) {
|
||||
private void startThread(final int minTimeLimit, final int maxTimeLimit,
|
||||
int maxDepth, final int maxNodes) {
|
||||
synchronized (threadMutex) {} // Must not start new search until old search is finished
|
||||
sc = new Search(pos, posHashList, posHashListSize, tt, ht);
|
||||
sc.timeLimit(minTimeLimit, maxTimeLimit);
|
||||
|
@ -336,7 +336,7 @@ public class DroidEngineControl {
|
|||
return ret;
|
||||
}
|
||||
|
||||
static final String moveToString(Move m) {
|
||||
static String moveToString(Move m) {
|
||||
if (m == null)
|
||||
return "0000";
|
||||
String ret = TextIO.squareToString(m.from);
|
||||
|
|
|
@ -960,7 +960,7 @@ public class GameTree {
|
|||
return res;
|
||||
}
|
||||
|
||||
private static final boolean insufficientMaterial(Position pos) {
|
||||
private static boolean insufficientMaterial(Position pos) {
|
||||
if (pos.nPieces(Piece.WQUEEN) > 0) return false;
|
||||
if (pos.nPieces(Piece.WROOK) > 0) return false;
|
||||
if (pos.nPieces(Piece.WPAWN) > 0) return false;
|
||||
|
@ -1125,7 +1125,7 @@ public class GameTree {
|
|||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
static final void writeToStream(DataOutputStream dos, Node node) throws IOException {
|
||||
static void writeToStream(DataOutputStream dos, Node node) throws IOException {
|
||||
while (true) {
|
||||
dos.writeUTF(node.moveStr);
|
||||
if (node.move != null) {
|
||||
|
@ -1152,7 +1152,7 @@ public class GameTree {
|
|||
}
|
||||
}
|
||||
|
||||
static final void readFromStream(DataInputStream dis, Node node) throws IOException {
|
||||
static void readFromStream(DataInputStream dis, Node node) throws IOException {
|
||||
while (true) {
|
||||
node.moveStr = dis.readUTF();
|
||||
node.moveStrLocal = node.moveStr;
|
||||
|
@ -1186,8 +1186,8 @@ public class GameTree {
|
|||
}
|
||||
|
||||
/** Export whole tree rooted at "node" in PGN format. */
|
||||
public static final void addPgnData(PgnToken.PgnTokenReceiver out, Node node,
|
||||
MoveNumber moveNum, PGNOptions options) {
|
||||
public static void addPgnData(PgnToken.PgnTokenReceiver out, Node node,
|
||||
MoveNumber moveNum, PGNOptions options) {
|
||||
boolean needMoveNr = node.addPgnDataOneNode(out, moveNum, true, options);
|
||||
while (true) {
|
||||
int nChild = node.children.size();
|
||||
|
@ -1265,7 +1265,7 @@ public class GameTree {
|
|||
out.processToken(this, PgnToken.COMMENT, "[%" + extCmd + " " + extData + "]");
|
||||
}
|
||||
|
||||
private static final String getTimeStr(int remainingTime) {
|
||||
private static String getTimeStr(int remainingTime) {
|
||||
int secs = (int)Math.floor((remainingTime + 999) / 1000.0);
|
||||
boolean neg = false;
|
||||
if (secs < 0) {
|
||||
|
@ -1411,7 +1411,7 @@ public class GameTree {
|
|||
}
|
||||
}
|
||||
|
||||
private static final Pair<String, String> extractExtInfo(String comment, String cmd) {
|
||||
private static Pair<String, String> extractExtInfo(String comment, String cmd) {
|
||||
comment = comment.replaceAll("\n|\r|\t", " ");
|
||||
String remaining = comment;
|
||||
String param = null;
|
||||
|
@ -1428,7 +1428,7 @@ public class GameTree {
|
|||
}
|
||||
|
||||
/** Convert hh:mm:ss to milliseconds */
|
||||
private static final int parseTimeString(String str) {
|
||||
private static int parseTimeString(String str) {
|
||||
str = str.trim();
|
||||
int ret = 0;
|
||||
boolean neg = false;
|
||||
|
@ -1456,7 +1456,7 @@ public class GameTree {
|
|||
return ret;
|
||||
}
|
||||
|
||||
public final static String nagStr(int nag) {
|
||||
public static String nagStr(int nag) {
|
||||
switch (nag) {
|
||||
case 1: return "!";
|
||||
case 2: return "?";
|
||||
|
@ -1476,7 +1476,7 @@ public class GameTree {
|
|||
}
|
||||
}
|
||||
|
||||
public final static int strToNag(String str) {
|
||||
public static int strToNag(String str) {
|
||||
if (str.equals("!")) return 1;
|
||||
else if (str.equals("?")) return 2;
|
||||
else if (str.equals("!!")) return 3;
|
||||
|
@ -1494,11 +1494,10 @@ public class GameTree {
|
|||
else {
|
||||
try {
|
||||
str = str.replace("$", "");
|
||||
int nag = Integer.parseInt(str);
|
||||
return nag;
|
||||
return Integer.parseInt(str);
|
||||
} catch (NumberFormatException nfe) {
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -156,7 +156,7 @@ public class MoveGen {
|
|||
/**
|
||||
* Return true if the side to move is in check.
|
||||
*/
|
||||
public static final boolean inCheck(Position pos) {
|
||||
public static boolean inCheck(Position pos) {
|
||||
int kingSq = pos.getKingSq(pos.whiteMove);
|
||||
if (kingSq < 0)
|
||||
return false;
|
||||
|
@ -166,7 +166,7 @@ public class MoveGen {
|
|||
/**
|
||||
* Return true if a square is attacked by the opposite side.
|
||||
*/
|
||||
public static final boolean sqAttacked(Position pos, int sq) {
|
||||
public static boolean sqAttacked(Position pos, int sq) {
|
||||
int x = Position.getX(sq);
|
||||
int y = Position.getY(sq);
|
||||
boolean isWhiteMove = pos.whiteMove;
|
||||
|
@ -223,7 +223,7 @@ public class MoveGen {
|
|||
* "moveList" is assumed to be a list of pseudo-legal moves.
|
||||
* This function removes the moves that don't defend from check threats.
|
||||
*/
|
||||
public static final ArrayList<Move> removeIllegal(Position pos, ArrayList<Move> moveList) {
|
||||
public static ArrayList<Move> removeIllegal(Position pos, ArrayList<Move> moveList) {
|
||||
ArrayList<Move> ret = new ArrayList<>();
|
||||
UndoInfo ui = new UndoInfo();
|
||||
int mlSize = moveList.size();
|
||||
|
@ -296,7 +296,7 @@ public class MoveGen {
|
|||
* @return The first piece in the given direction, or EMPTY if there is no piece
|
||||
* in that direction.
|
||||
*/
|
||||
private static final int checkDirection(Position pos, int sq, int maxSteps, int delta) {
|
||||
private static int checkDirection(Position pos, int sq, int maxSteps, int delta) {
|
||||
while (maxSteps > 0) {
|
||||
sq += delta;
|
||||
int p = pos.getPiece(sq);
|
||||
|
@ -307,7 +307,7 @@ public class MoveGen {
|
|||
return Piece.EMPTY;
|
||||
}
|
||||
|
||||
private static final Move getMoveObj(int from, int to, int promoteTo) {
|
||||
private static Move getMoveObj(int from, int to, int promoteTo) {
|
||||
return new Move(from, to, promoteTo);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,8 +83,8 @@ public class Piece {
|
|||
}
|
||||
|
||||
/** Converts the piece into a character for the material diff. */
|
||||
public final static char toUniCode(int p) {
|
||||
// As we assume, the coding of the pieces is sequential, lets do some math.
|
||||
public static char toUniCode(int p) {
|
||||
// As we assume the coding of the pieces is sequential, lets do some math.
|
||||
return (char)(WHITE_KING + p - 1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -132,19 +132,19 @@ public class Position {
|
|||
}
|
||||
}
|
||||
/** Return index in squares[] vector corresponding to (x,y). */
|
||||
public final static int getSquare(int x, int y) {
|
||||
public static int getSquare(int x, int y) {
|
||||
return y * 8 + x;
|
||||
}
|
||||
/** Return x position (file) corresponding to a square. */
|
||||
public final static int getX(int square) {
|
||||
public static int getX(int square) {
|
||||
return square & 7;
|
||||
}
|
||||
/** Return y position (rank) corresponding to a square. */
|
||||
public final static int getY(int square) {
|
||||
public static int getY(int square) {
|
||||
return square >> 3;
|
||||
}
|
||||
/** Return true if (x,y) is a dark square. */
|
||||
public final static boolean darkSquare(int x, int y) {
|
||||
public static boolean darkSquare(int x, int y) {
|
||||
return (x & 1) == (y & 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,14 +34,14 @@ public class TextIO {
|
|||
private static String[] pieceNames = null;
|
||||
|
||||
/** Set localized piece names. */
|
||||
public static final void setPieceNames(String pieceNames) {
|
||||
public static void setPieceNames(String pieceNames) {
|
||||
String[] pn = pieceNames.split(" ");
|
||||
if (pn.length == 6)
|
||||
TextIO.pieceNames = pn;
|
||||
}
|
||||
|
||||
/** Parse a FEN string and return a chess Position object. */
|
||||
public static final Position readFEN(String fen) throws ChessParseError {
|
||||
public static Position readFEN(String fen) throws ChessParseError {
|
||||
fen = fen.trim();
|
||||
Position pos = new Position();
|
||||
String[] words = fen.split(" ");
|
||||
|
@ -198,7 +198,7 @@ public class TextIO {
|
|||
return pos;
|
||||
}
|
||||
|
||||
public static final void removeBogusCastleFlags(Position pos) {
|
||||
public static void removeBogusCastleFlags(Position pos) {
|
||||
int castleMask = pos.getCastleMask();
|
||||
int validCastle = 0;
|
||||
if (pos.getPiece(4) == Piece.WKING) {
|
||||
|
@ -214,7 +214,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Remove pseudo-legal EP square if it is not legal, ie would leave king in check. */
|
||||
public static final void fixupEPSquare(Position pos) {
|
||||
public static void fixupEPSquare(Position pos) {
|
||||
int epSquare = pos.getEpSquare();
|
||||
if (epSquare >= 0) {
|
||||
ArrayList<Move> moves = MoveGen.instance.legalMoves(pos);
|
||||
|
@ -232,7 +232,7 @@ public class TextIO {
|
|||
}
|
||||
}
|
||||
|
||||
private static final void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
private static void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
if (row < 0) throw new ChessParseError(R.string.err_too_many_rows);
|
||||
if (col > 7) throw new ChessParseError(R.string.err_too_many_columns);
|
||||
if ((p == Piece.WPAWN) || (p == Piece.BPAWN)) {
|
||||
|
@ -243,7 +243,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Return a FEN string corresponding to a chess Position object. */
|
||||
public static final String toFEN(Position pos) {
|
||||
public static String toFEN(Position pos) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
// Piece placement
|
||||
for (int r = 7; r >=0; r--) {
|
||||
|
@ -335,12 +335,12 @@ public class TextIO {
|
|||
* Otherwise, use short notation, eg Nf3.
|
||||
* @param localized If true, use localized piece names.
|
||||
*/
|
||||
public static final String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized) {
|
||||
public static String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized) {
|
||||
return moveToString(pos, move, longForm, localized, null);
|
||||
}
|
||||
public static final String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized, List<Move> moves) {
|
||||
public static String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized, List<Move> moves) {
|
||||
if ((move == null) || move.equals(new Move(0, 0, 0)))
|
||||
return "--";
|
||||
StringBuilder ret = new StringBuilder();
|
||||
|
@ -439,7 +439,7 @@ public class TextIO {
|
|||
return ret.toString();
|
||||
}
|
||||
|
||||
private static final boolean isCapture(Position pos, Move move) {
|
||||
private static boolean isCapture(Position pos, Move move) {
|
||||
if (pos.getPiece(move.to) == Piece.EMPTY) {
|
||||
int p = pos.getPiece(move.from);
|
||||
if ((p == (pos.whiteMove ? Piece.WPAWN : Piece.BPAWN)) && (move.to == pos.getEpSquare())) {
|
||||
|
@ -458,7 +458,7 @@ public class TextIO {
|
|||
* @param move The move to check for validity.
|
||||
* @return True if move is valid in position pos, false otherwise.
|
||||
*/
|
||||
public static final boolean isValid(Position pos, Move move) {
|
||||
public static boolean isValid(Position pos, Move move) {
|
||||
if (move == null)
|
||||
return false;
|
||||
ArrayList<Move> moves = new MoveGen().legalMoves(pos);
|
||||
|
@ -480,11 +480,11 @@ public class TextIO {
|
|||
* The string may specify any combination of piece/source/target/promotion
|
||||
* information as long as it matches exactly one valid move.
|
||||
*/
|
||||
public static final Move stringToMove(Position pos, String strMove) {
|
||||
public static Move stringToMove(Position pos, String strMove) {
|
||||
return stringToMove(pos, strMove, null);
|
||||
}
|
||||
public static final Move stringToMove(Position pos, String strMove,
|
||||
ArrayList<Move> moves) {
|
||||
public static Move stringToMove(Position pos, String strMove,
|
||||
ArrayList<Move> moves) {
|
||||
if (strMove.equals("--"))
|
||||
return new Move(0, 0, 0);
|
||||
|
||||
|
@ -608,7 +608,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Convert a move object to UCI string format. */
|
||||
public static final String moveToUCIString(Move m) {
|
||||
public static String moveToUCIString(Move m) {
|
||||
String ret = squareToString(m.from);
|
||||
ret += squareToString(m.to);
|
||||
switch (m.promoteTo) {
|
||||
|
@ -638,7 +638,7 @@ public class TextIO {
|
|||
* Convert a string in UCI move format to a Move object.
|
||||
* @return A move object, or null if move has invalid syntax
|
||||
*/
|
||||
public static final Move UCIstringToMove(String move) {
|
||||
public static Move UCIstringToMove(String move) {
|
||||
Move m = null;
|
||||
if ((move.length() < 4) || (move.length() > 5))
|
||||
return m;
|
||||
|
@ -687,7 +687,7 @@ public class TextIO {
|
|||
* Convert a string, such as "e4" to a square number.
|
||||
* @return The square number, or -1 if not a legal square.
|
||||
*/
|
||||
public static final int getSquare(String s) {
|
||||
public static int getSquare(String s) {
|
||||
int x = s.charAt(0) - 'a';
|
||||
int y = s.charAt(1) - '1';
|
||||
if ((x < 0) || (x > 7) || (y < 0) || (y > 7))
|
||||
|
@ -698,7 +698,7 @@ public class TextIO {
|
|||
/**
|
||||
* Convert a square number to a string, such as "e4".
|
||||
*/
|
||||
public static final String squareToString(int square) {
|
||||
public static String squareToString(int square) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
int x = Position.getX(square);
|
||||
int y = Position.getY(square);
|
||||
|
@ -710,7 +710,7 @@ public class TextIO {
|
|||
/**
|
||||
* Create an ascii representation of a position.
|
||||
*/
|
||||
public static final String asciiBoard(Position pos) {
|
||||
public static String asciiBoard(Position pos) {
|
||||
StringBuilder ret = new StringBuilder(400);
|
||||
String nl = String.format(Locale.US, "%n");
|
||||
ret.append(" +----+----+----+----+----+----+----+----+"); ret.append(nl);
|
||||
|
@ -739,7 +739,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Convert a piece and a square to a string, such as Nf3. */
|
||||
public final static String pieceAndSquareToString(int currentPieceType, int p, int sq) {
|
||||
public static String pieceAndSquareToString(int currentPieceType, int p, int sq) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
if (currentPieceType == PGNOptions.PT_FIGURINE) {
|
||||
ret.append(Piece.toUniCode(p));
|
||||
|
@ -765,7 +765,7 @@ public class TextIO {
|
|||
return "";
|
||||
}
|
||||
|
||||
public final static String pieceToCharLocalized(int p) {
|
||||
public static String pieceToCharLocalized(int p) {
|
||||
switch (p) {
|
||||
case Piece.WQUEEN: case Piece.BQUEEN: return pieceNames[4];
|
||||
case Piece.WROOK: case Piece.BROOK: return pieceNames[3];
|
||||
|
@ -789,7 +789,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Add an = sign to a promotion move, as required by the PGN standard. */
|
||||
public final static String pgnPromotion(String str) {
|
||||
public static String pgnPromotion(String str) {
|
||||
int idx = str.length() - 1;
|
||||
while (idx > 0) {
|
||||
char c = str.charAt(idx);
|
||||
|
|
|
@ -97,8 +97,8 @@ public final class ProbeResult implements Comparable<ProbeResult> {
|
|||
|
||||
/** Return f((wdl1,score1)) - f((wdl2,score2)), where f(x) modifies
|
||||
* the score so that larger values are better. */
|
||||
final static int compareScore(int wdl1, int score1,
|
||||
int wdl2, int score2) {
|
||||
static int compareScore(int wdl1, int score1,
|
||||
int wdl2, int score2) {
|
||||
final int M = 1000;
|
||||
if (wdl1 > 0)
|
||||
score1 = M - score1;
|
||||
|
|
|
@ -303,7 +303,6 @@ public abstract class ChessBoard extends View {
|
|||
|
||||
/**
|
||||
* Set the board to a given state.
|
||||
* @param pos
|
||||
*/
|
||||
final public void setPosition(Position pos) {
|
||||
boolean doInvalidate = false;
|
||||
|
@ -480,7 +479,7 @@ public abstract class ChessBoard extends View {
|
|||
float x4 = (float)(x3 - d * sinv);
|
||||
float y4 = (float)(y3 + d * cosv);
|
||||
float x5 = (float)(x4 + (-d/2 - y4) / tanv);
|
||||
float y5 = (float)(-d / 2);
|
||||
float y5 = -d / 2;
|
||||
float x6 = 0;
|
||||
float y6 = y5 / 2;
|
||||
Path path = new Path();
|
||||
|
|
|
@ -280,8 +280,8 @@ public class TourGuide {
|
|||
LayoutInflater layoutInflater = mActivity.getLayoutInflater();
|
||||
mToolTipViewGroup = layoutInflater.inflate(R.layout.tooltip, null);
|
||||
View toolTipContainer = mToolTipViewGroup.findViewById(R.id.toolTip_container);
|
||||
TextView toolTipTitleTV = (TextView) mToolTipViewGroup.findViewById(R.id.title);
|
||||
TextView toolTipDescriptionTV = (TextView) mToolTipViewGroup.findViewById(R.id.description);
|
||||
TextView toolTipTitleTV = mToolTipViewGroup.findViewById(R.id.title);
|
||||
TextView toolTipDescriptionTV = mToolTipViewGroup.findViewById(R.id.description);
|
||||
|
||||
/* set tooltip attributes */
|
||||
toolTipContainer.setBackgroundColor(mToolTip.mBackgroundColor);
|
||||
|
@ -449,7 +449,7 @@ public class TourGuide {
|
|||
|
||||
private void setupFrameLayout(){
|
||||
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
|
||||
ViewGroup contentArea = (ViewGroup) mActivity.getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
ViewGroup contentArea = mActivity.getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
int [] pos = new int[2];
|
||||
contentArea.getLocationOnScreen(pos);
|
||||
// frameLayoutWithHole's coordinates are calculated taking full screen height into account
|
||||
|
|
|
@ -170,7 +170,7 @@ public class BitBoard {
|
|||
0x000000007efa8146L, 0x0000007ed3e2ef60L, 0x00007f47243adcd6L, 0x007fb65afabfb3b5L
|
||||
};
|
||||
|
||||
private static final long createPattern(int i, long mask) {
|
||||
private static long createPattern(int i, long mask) {
|
||||
long ret = 0L;
|
||||
for (int j = 0; ; j++) {
|
||||
long nextMask = mask & (mask - 1);
|
||||
|
@ -184,7 +184,7 @@ public class BitBoard {
|
|||
return ret;
|
||||
}
|
||||
|
||||
private static final long addRookRays(int x, int y, long occupied, boolean inner) {
|
||||
private static long addRookRays(int x, int y, long occupied, boolean inner) {
|
||||
long mask = 0;
|
||||
mask = addRay(mask, x, y, 1, 0, occupied, inner);
|
||||
mask = addRay(mask, x, y, -1, 0, occupied, inner);
|
||||
|
@ -192,7 +192,7 @@ public class BitBoard {
|
|||
mask = addRay(mask, x, y, 0, -1, occupied, inner);
|
||||
return mask;
|
||||
}
|
||||
private static final long addBishopRays(int x, int y, long occupied, boolean inner) {
|
||||
private static long addBishopRays(int x, int y, long occupied, boolean inner) {
|
||||
long mask = 0;
|
||||
mask = addRay(mask, x, y, 1, 1, occupied, inner);
|
||||
mask = addRay(mask, x, y, -1, -1, occupied, inner);
|
||||
|
@ -201,8 +201,8 @@ public class BitBoard {
|
|||
return mask;
|
||||
}
|
||||
|
||||
private static final long addRay(long mask, int x, int y, int dx, int dy,
|
||||
long occupied, boolean inner) {
|
||||
private static long addRay(long mask, int x, int y, int dx, int dy,
|
||||
long occupied, boolean inner) {
|
||||
int lo = inner ? 1 : 0;
|
||||
int hi = inner ? 6 : 7;
|
||||
while (true) {
|
||||
|
@ -270,11 +270,11 @@ public class BitBoard {
|
|||
}
|
||||
}
|
||||
|
||||
public static final long bishopAttacks(int sq, long occupied) {
|
||||
public static long bishopAttacks(int sq, long occupied) {
|
||||
return bTables[sq][(int)(((occupied & bMasks[sq]) * bMagics[sq]) >>> (64 - bBits[sq]))];
|
||||
}
|
||||
|
||||
public static final long rookAttacks(int sq, long occupied) {
|
||||
public static long rookAttacks(int sq, long occupied) {
|
||||
return rTables[sq][(int)(((occupied & rMasks[sq]) * rMagics[sq]) >>> (64 - rBits[sq]))];
|
||||
}
|
||||
|
||||
|
@ -346,19 +346,19 @@ public class BitBoard {
|
|||
0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
|
||||
};
|
||||
|
||||
public static final int getDistance(int from, int to) {
|
||||
public static int getDistance(int from, int to) {
|
||||
int offs = to + (to|7) - from - (from|7) + 0x77;
|
||||
return distTable[offs];
|
||||
}
|
||||
|
||||
public static final long southFill(long mask) {
|
||||
public static long southFill(long mask) {
|
||||
mask |= (mask >>> 8);
|
||||
mask |= (mask >>> 16);
|
||||
mask |= (mask >>> 32);
|
||||
return mask;
|
||||
}
|
||||
|
||||
public static final long northFill(long mask) {
|
||||
public static long northFill(long mask) {
|
||||
mask |= (mask << 8);
|
||||
mask |= (mask << 16);
|
||||
mask |= (mask << 32);
|
||||
|
|
|
@ -162,7 +162,7 @@ public class Book {
|
|||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
final private int getWeight(int count) {
|
||||
private int getWeight(int count) {
|
||||
double tmp = Math.sqrt(count);
|
||||
return (int)(tmp * Math.sqrt(tmp) * 100 + 1);
|
||||
}
|
||||
|
|
|
@ -290,7 +290,7 @@ public class Evaluate {
|
|||
}
|
||||
|
||||
/** Compute white_material - black_material. */
|
||||
static final int material(Position pos) {
|
||||
static int material(Position pos) {
|
||||
return pos.wMtrl - pos.bMtrl;
|
||||
}
|
||||
|
||||
|
@ -1135,7 +1135,7 @@ public class Evaluate {
|
|||
return score;
|
||||
}
|
||||
|
||||
private static final int evalKQKP(int wKing, int wQueen, int bKing, int bPawn, boolean whiteMove) {
|
||||
private static int evalKQKP(int wKing, int wQueen, int bKing, int bPawn, boolean whiteMove) {
|
||||
boolean canWin = false;
|
||||
if (((1L << bKing) & 0xFFFF) == 0) {
|
||||
canWin = true; // King doesn't support pawn
|
||||
|
@ -1172,7 +1172,7 @@ public class Evaluate {
|
|||
return score;
|
||||
}
|
||||
|
||||
private static final int kpkEval(int wKing, int bKing, int wPawn, boolean whiteMove) {
|
||||
private static int kpkEval(int wKing, int bKing, int wPawn, boolean whiteMove) {
|
||||
if (Position.getX(wKing) >= 4) { // Mirror X
|
||||
wKing ^= 7;
|
||||
bKing ^= 7;
|
||||
|
@ -1191,7 +1191,7 @@ public class Evaluate {
|
|||
return qV - pV / 4 * (7-Position.getY(wPawn));
|
||||
}
|
||||
|
||||
private static final int krkpEval(int wKing, int bKing, int bPawn, boolean whiteMove) {
|
||||
private static int krkpEval(int wKing, int bKing, int bPawn, boolean whiteMove) {
|
||||
if (Position.getX(bKing) >= 4) { // Mirror X
|
||||
wKing ^= 7;
|
||||
bKing ^= 7;
|
||||
|
@ -1216,7 +1216,7 @@ public class Evaluate {
|
|||
* Interpolate between (x1,y1) and (x2,y2).
|
||||
* If x < x1, return y1, if x > x2 return y2. Otherwise, use linear interpolation.
|
||||
*/
|
||||
static final int interpolate(int x, int x1, int y1, int x2, int y2) {
|
||||
static int interpolate(int x, int x1, int y1, int x2, int y2) {
|
||||
if (x > x2) {
|
||||
return y2;
|
||||
} else if (x < x1) {
|
||||
|
|
|
@ -717,7 +717,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if the side to move is in check.
|
||||
*/
|
||||
public static final boolean inCheck(Position pos) {
|
||||
public static boolean inCheck(Position pos) {
|
||||
int kingSq = pos.getKingSq(pos.whiteMove);
|
||||
return sqAttacked(pos, kingSq);
|
||||
}
|
||||
|
@ -725,7 +725,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return the next piece in a given direction, starting from sq.
|
||||
*/
|
||||
private static final int nextPiece(Position pos, int sq, int delta) {
|
||||
private static int nextPiece(Position pos, int sq, int delta) {
|
||||
while (true) {
|
||||
sq += delta;
|
||||
int p = pos.getPiece(sq);
|
||||
|
@ -735,7 +735,7 @@ public final class MoveGen {
|
|||
}
|
||||
|
||||
/** Like nextPiece(), but handles board edges. */
|
||||
private static final int nextPieceSafe(Position pos, int sq, int delta) {
|
||||
private static int nextPieceSafe(Position pos, int sq, int delta) {
|
||||
int dx = 0, dy = 0;
|
||||
switch (delta) {
|
||||
case 1: dx=1; dy=0; break;
|
||||
|
@ -764,7 +764,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if making a move delivers check to the opponent
|
||||
*/
|
||||
public static final boolean givesCheck(Position pos, Move m) {
|
||||
public static boolean givesCheck(Position pos, Move m) {
|
||||
boolean wtm = pos.whiteMove;
|
||||
int oKingSq = pos.getKingSq(!wtm);
|
||||
int oKing = wtm ? Piece.BKING : Piece.WKING;
|
||||
|
@ -875,7 +875,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if the side to move can take the opponents king.
|
||||
*/
|
||||
public static final boolean canTakeKing(Position pos) {
|
||||
public static boolean canTakeKing(Position pos) {
|
||||
pos.setWhiteMove(!pos.whiteMove);
|
||||
boolean ret = inCheck(pos);
|
||||
pos.setWhiteMove(!pos.whiteMove);
|
||||
|
@ -885,7 +885,7 @@ public final class MoveGen {
|
|||
/**
|
||||
* Return true if a square is attacked by the opposite side.
|
||||
*/
|
||||
public static final boolean sqAttacked(Position pos, int sq) {
|
||||
public static boolean sqAttacked(Position pos, int sq) {
|
||||
if (pos.whiteMove) {
|
||||
if ((BitBoard.knightAttacks[sq] & pos.pieceTypeBB[Piece.BKNIGHT]) != 0)
|
||||
return true;
|
||||
|
@ -921,7 +921,7 @@ public final class MoveGen {
|
|||
* "moveList" is assumed to be a list of pseudo-legal moves.
|
||||
* This function removes the moves that don't defend from check threats.
|
||||
*/
|
||||
public static final void removeIllegal(Position pos, MoveList moveList) {
|
||||
public static void removeIllegal(Position pos, MoveList moveList) {
|
||||
int length = 0;
|
||||
UndoInfo ui = new UndoInfo();
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ public class Parameters {
|
|||
for (Map.Entry<String, ParamBase> e : params.entrySet())
|
||||
if (e.getValue().visible)
|
||||
parNames.add(e.getKey());
|
||||
return parNames.toArray(new String[parNames.size()]);
|
||||
return parNames.toArray(new String[0]);
|
||||
}
|
||||
|
||||
public final ParamBase getParam(String name) {
|
||||
|
|
|
@ -42,13 +42,13 @@ public class Piece {
|
|||
* Return true if p is a white piece, false otherwise.
|
||||
* Note that if p is EMPTY, an unspecified value is returned.
|
||||
*/
|
||||
public static final boolean isWhite(int pType) {
|
||||
public static boolean isWhite(int pType) {
|
||||
return pType < BKING;
|
||||
}
|
||||
public static final int makeWhite(int pType) {
|
||||
public static int makeWhite(int pType) {
|
||||
return pType < BKING ? pType : pType - (BKING - WKING);
|
||||
}
|
||||
public static final int makeBlack(int pType) {
|
||||
public static int makeBlack(int pType) {
|
||||
return ((pType > EMPTY) && (pType < BKING)) ? pType + (BKING - WKING) : pType;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -188,19 +188,19 @@ public class Position {
|
|||
}
|
||||
}
|
||||
/** Return index in squares[] vector corresponding to (x,y). */
|
||||
public final static int getSquare(int x, int y) {
|
||||
public static int getSquare(int x, int y) {
|
||||
return y * 8 + x;
|
||||
}
|
||||
/** Return x position (file) corresponding to a square. */
|
||||
public final static int getX(int square) {
|
||||
public static int getX(int square) {
|
||||
return square & 7;
|
||||
}
|
||||
/** Return y position (rank) corresponding to a square. */
|
||||
public final static int getY(int square) {
|
||||
public static int getY(int square) {
|
||||
return square >> 3;
|
||||
}
|
||||
/** Return true if (x,y) is a dark square. */
|
||||
public final static boolean darkSquare(int x, int y) {
|
||||
public static boolean darkSquare(int x, int y) {
|
||||
return (x & 1) == (y & 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ public class TextIO {
|
|||
static public final String startPosFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
|
||||
|
||||
/** Parse a FEN string and return a chess Position object. */
|
||||
public static final Position readFEN(String fen) throws ChessParseError {
|
||||
public static Position readFEN(String fen) throws ChessParseError {
|
||||
Position pos = new Position();
|
||||
String[] words = fen.split(" ");
|
||||
if (words.length < 2) {
|
||||
|
@ -148,7 +148,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Remove pseudo-legal EP square if it is not legal, ie would leave king in check. */
|
||||
public static final void fixupEPSquare(Position pos) {
|
||||
public static void fixupEPSquare(Position pos) {
|
||||
int epSquare = pos.getEpSquare();
|
||||
if (epSquare >= 0) {
|
||||
MoveGen.MoveList moves = MoveGen.instance.pseudoLegalMoves(pos);
|
||||
|
@ -169,7 +169,7 @@ public class TextIO {
|
|||
}
|
||||
}
|
||||
|
||||
private static final void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
private static void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
if (row < 0) throw new ChessParseError("Too many rows");
|
||||
if (col > 7) throw new ChessParseError("Too many columns");
|
||||
if ((p == Piece.WPAWN) || (p == Piece.BPAWN)) {
|
||||
|
@ -180,7 +180,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Return a FEN string corresponding to a chess Position object. */
|
||||
public static final String toFEN(Position pos) {
|
||||
public static String toFEN(Position pos) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
// Piece placement
|
||||
for (int r = 7; r >=0; r--) {
|
||||
|
@ -271,12 +271,12 @@ public class TextIO {
|
|||
* @param longForm If true, use long notation, eg Ng1-f3.
|
||||
* Otherwise, use short notation, eg Nf3
|
||||
*/
|
||||
public static final String moveToString(Position pos, Move move, boolean longForm) {
|
||||
public static String moveToString(Position pos, Move move, boolean longForm) {
|
||||
MoveGen.MoveList moves = MoveGen.instance.pseudoLegalMoves(pos);
|
||||
MoveGen.removeIllegal(pos, moves);
|
||||
return moveToString(pos, move, longForm, moves);
|
||||
}
|
||||
private static final String moveToString(Position pos, Move move, boolean longForm, MoveGen.MoveList moves) {
|
||||
private static String moveToString(Position pos, Move move, boolean longForm, MoveGen.MoveList moves) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
int wKingOrigPos = Position.getSquare(4, 0);
|
||||
int bKingOrigPos = Position.getSquare(4, 7);
|
||||
|
@ -365,7 +365,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Convert a move object to UCI string format. */
|
||||
public static final String moveToUCIString(Move m) {
|
||||
public static String moveToUCIString(Move m) {
|
||||
String ret = squareToString(m.from);
|
||||
ret += squareToString(m.to);
|
||||
switch (m.promoteTo) {
|
||||
|
@ -395,7 +395,7 @@ public class TextIO {
|
|||
* Convert a string to a Move object.
|
||||
* @return A move object, or null if move has invalid syntax
|
||||
*/
|
||||
public static final Move uciStringToMove(String move) {
|
||||
public static Move uciStringToMove(String move) {
|
||||
Move m = null;
|
||||
if ((move.length() < 4) || (move.length() > 5))
|
||||
return m;
|
||||
|
@ -440,7 +440,7 @@ public class TextIO {
|
|||
return m;
|
||||
}
|
||||
|
||||
private static final boolean isCapture(Position pos, Move move) {
|
||||
private static boolean isCapture(Position pos, Move move) {
|
||||
if (pos.getPiece(move.to) == Piece.EMPTY) {
|
||||
int p = pos.getPiece(move.from);
|
||||
if ((p == (pos.whiteMove ? Piece.WPAWN : Piece.BPAWN)) && (move.to == pos.getEpSquare())) {
|
||||
|
@ -458,7 +458,7 @@ public class TextIO {
|
|||
* Any prefix of the string representation of a valid move counts as a legal move string,
|
||||
* as long as the string only matches one valid move.
|
||||
*/
|
||||
public static final Move stringToMove(Position pos, String strMove) {
|
||||
public static Move stringToMove(Position pos, String strMove) {
|
||||
strMove = strMove.replaceAll("=", "");
|
||||
Move move = null;
|
||||
if (strMove.length() == 0)
|
||||
|
@ -533,7 +533,7 @@ public class TextIO {
|
|||
* Convert a string, such as "e4" to a square number.
|
||||
* @return The square number, or -1 if not a legal square.
|
||||
*/
|
||||
public static final int getSquare(String s) {
|
||||
public static int getSquare(String s) {
|
||||
int x = s.charAt(0) - 'a';
|
||||
int y = s.charAt(1) - '1';
|
||||
if ((x < 0) || (x > 7) || (y < 0) || (y > 7))
|
||||
|
@ -544,7 +544,7 @@ public class TextIO {
|
|||
/**
|
||||
* Convert a square number to a string, such as "e4".
|
||||
*/
|
||||
public static final String squareToString(int square) {
|
||||
public static String squareToString(int square) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
int x = Position.getX(square);
|
||||
int y = Position.getY(square);
|
||||
|
@ -556,7 +556,7 @@ public class TextIO {
|
|||
/**
|
||||
* Create an ascii representation of a position.
|
||||
*/
|
||||
public static final String asciiBoard(Position pos) {
|
||||
public static String asciiBoard(Position pos) {
|
||||
StringBuilder ret = new StringBuilder(400);
|
||||
String nl = String.format(Locale.US, "%n");
|
||||
ret.append(" +----+----+----+----+----+----+----+----+"); ret.append(nl);
|
||||
|
@ -587,7 +587,7 @@ public class TextIO {
|
|||
/**
|
||||
* Convert move string to lower case and remove special check/mate symbols.
|
||||
*/
|
||||
private static final String normalizeMoveString(String str) {
|
||||
private static String normalizeMoveString(String str) {
|
||||
if (str.length() > 0) {
|
||||
char lastChar = str.charAt(str.length() - 1);
|
||||
if ((lastChar == '#') || (lastChar == '+')) {
|
||||
|
|
|
@ -40,7 +40,7 @@ public class FileUtil {
|
|||
while ((line = inBuf.readLine()) != null)
|
||||
ret.add(line);
|
||||
inBuf.close();
|
||||
return ret.toArray(new String[ret.size()]);
|
||||
return ret.toArray(new String[0]);
|
||||
}
|
||||
|
||||
/** Read all data from an input stream. Return null if IO error. */
|
||||
|
@ -81,7 +81,7 @@ public class FileUtil {
|
|||
}
|
||||
|
||||
/** Return the length of a file, or -1 if length can not be determined. */
|
||||
public static final long getFileLength(String filename) {
|
||||
public static long getFileLength(String filename) {
|
||||
try {
|
||||
RandomAccessFile raf = new RandomAccessFile(filename, "r");
|
||||
try {
|
||||
|
|
|
@ -944,7 +944,7 @@ public class GameTree {
|
|||
return res;
|
||||
}
|
||||
|
||||
private static final boolean insufficientMaterial(Position pos) {
|
||||
private static boolean insufficientMaterial(Position pos) {
|
||||
if (pos.nPieces(Piece.WQUEEN) > 0) return false;
|
||||
if (pos.nPieces(Piece.WROOK) > 0) return false;
|
||||
if (pos.nPieces(Piece.WPAWN) > 0) return false;
|
||||
|
@ -1109,7 +1109,7 @@ public class GameTree {
|
|||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
static final void writeToStream(DataOutputStream dos, Node node) throws IOException {
|
||||
static void writeToStream(DataOutputStream dos, Node node) throws IOException {
|
||||
while (true) {
|
||||
dos.writeUTF(node.moveStr);
|
||||
if (node.move != null) {
|
||||
|
@ -1136,7 +1136,7 @@ public class GameTree {
|
|||
}
|
||||
}
|
||||
|
||||
static final void readFromStream(DataInputStream dis, Node node) throws IOException {
|
||||
static void readFromStream(DataInputStream dis, Node node) throws IOException {
|
||||
while (true) {
|
||||
node.moveStr = dis.readUTF();
|
||||
node.moveStrLocal = node.moveStr;
|
||||
|
@ -1170,8 +1170,8 @@ public class GameTree {
|
|||
}
|
||||
|
||||
/** Export whole tree rooted at "node" in PGN format. */
|
||||
public static final void addPgnData(PgnToken.PgnTokenReceiver out, Node node,
|
||||
MoveNumber moveNum, PGNOptions options) {
|
||||
public static void addPgnData(PgnToken.PgnTokenReceiver out, Node node,
|
||||
MoveNumber moveNum, PGNOptions options) {
|
||||
boolean needMoveNr = node.addPgnDataOneNode(out, moveNum, true, options);
|
||||
while (true) {
|
||||
int nChild = node.children.size();
|
||||
|
@ -1249,7 +1249,7 @@ public class GameTree {
|
|||
out.processToken(this, PgnToken.COMMENT, "[%" + extCmd + " " + extData + "]");
|
||||
}
|
||||
|
||||
private static final String getTimeStr(int remainingTime) {
|
||||
private static String getTimeStr(int remainingTime) {
|
||||
int secs = (int)Math.floor((remainingTime + 999) / 1000.0);
|
||||
boolean neg = false;
|
||||
if (secs < 0) {
|
||||
|
@ -1279,7 +1279,7 @@ public class GameTree {
|
|||
return child;
|
||||
}
|
||||
|
||||
public static final void parsePgn(PgnScanner scanner, Node node, PGNOptions options) {
|
||||
public static void parsePgn(PgnScanner scanner, Node node, PGNOptions options) {
|
||||
Node nodeToAdd = new Node();
|
||||
boolean moveAdded = false;
|
||||
while (true) {
|
||||
|
@ -1395,7 +1395,7 @@ public class GameTree {
|
|||
}
|
||||
}
|
||||
|
||||
private static final Pair<String, String> extractExtInfo(String comment, String cmd) {
|
||||
private static Pair<String, String> extractExtInfo(String comment, String cmd) {
|
||||
comment = comment.replaceAll("\n|\r|\t", " ");
|
||||
String remaining = comment;
|
||||
String param = null;
|
||||
|
@ -1412,7 +1412,7 @@ public class GameTree {
|
|||
}
|
||||
|
||||
/** Convert hh:mm:ss to milliseconds */
|
||||
private static final int parseTimeString(String str) {
|
||||
private static int parseTimeString(String str) {
|
||||
str = str.trim();
|
||||
int ret = 0;
|
||||
boolean neg = false;
|
||||
|
@ -1440,7 +1440,7 @@ public class GameTree {
|
|||
return ret;
|
||||
}
|
||||
|
||||
public final static String nagStr(int nag) {
|
||||
public static String nagStr(int nag) {
|
||||
switch (nag) {
|
||||
case 1: return "!";
|
||||
case 2: return "?";
|
||||
|
@ -1460,7 +1460,7 @@ public class GameTree {
|
|||
}
|
||||
}
|
||||
|
||||
public final static int strToNag(String str) {
|
||||
public static int strToNag(String str) {
|
||||
if (str.equals("!")) return 1;
|
||||
else if (str.equals("?")) return 2;
|
||||
else if (str.equals("!!")) return 3;
|
||||
|
|
|
@ -156,7 +156,7 @@ public class MoveGen {
|
|||
/**
|
||||
* Return true if the side to move is in check.
|
||||
*/
|
||||
public static final boolean inCheck(Position pos) {
|
||||
public static boolean inCheck(Position pos) {
|
||||
int kingSq = pos.getKingSq(pos.whiteMove);
|
||||
if (kingSq < 0)
|
||||
return false;
|
||||
|
@ -166,7 +166,7 @@ public class MoveGen {
|
|||
/**
|
||||
* Return true if a square is attacked by the opposite side.
|
||||
*/
|
||||
public static final boolean sqAttacked(Position pos, int sq) {
|
||||
public static boolean sqAttacked(Position pos, int sq) {
|
||||
int x = Position.getX(sq);
|
||||
int y = Position.getY(sq);
|
||||
boolean isWhiteMove = pos.whiteMove;
|
||||
|
@ -223,7 +223,7 @@ public class MoveGen {
|
|||
* "moveList" is assumed to be a list of pseudo-legal moves.
|
||||
* This function removes the moves that don't defend from check threats.
|
||||
*/
|
||||
public static final ArrayList<Move> removeIllegal(Position pos, ArrayList<Move> moveList) {
|
||||
public static ArrayList<Move> removeIllegal(Position pos, ArrayList<Move> moveList) {
|
||||
ArrayList<Move> ret = new ArrayList<>();
|
||||
UndoInfo ui = new UndoInfo();
|
||||
int mlSize = moveList.size();
|
||||
|
@ -296,7 +296,7 @@ public class MoveGen {
|
|||
* @return The first piece in the given direction, or EMPTY if there is no piece
|
||||
* in that direction.
|
||||
*/
|
||||
private static final int checkDirection(Position pos, int sq, int maxSteps, int delta) {
|
||||
private static int checkDirection(Position pos, int sq, int maxSteps, int delta) {
|
||||
while (maxSteps > 0) {
|
||||
sq += delta;
|
||||
int p = pos.getPiece(sq);
|
||||
|
@ -307,7 +307,7 @@ public class MoveGen {
|
|||
return Piece.EMPTY;
|
||||
}
|
||||
|
||||
private static final Move getMoveObj(int from, int to, int promoteTo) {
|
||||
private static Move getMoveObj(int from, int to, int promoteTo) {
|
||||
return new Move(from, to, promoteTo);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ public class Piece {
|
|||
}
|
||||
|
||||
/** Converts the piece into a character for the material diff. */
|
||||
public final static char toUniCode(int p) {
|
||||
public static char toUniCode(int p) {
|
||||
// As we assume, the coding of the pieces is sequential, lets do some math.
|
||||
return (char)(WHITE_KING + p - 1);
|
||||
}
|
||||
|
|
|
@ -132,19 +132,19 @@ public class Position {
|
|||
}
|
||||
}
|
||||
/** Return index in squares[] vector corresponding to (x,y). */
|
||||
public final static int getSquare(int x, int y) {
|
||||
public static int getSquare(int x, int y) {
|
||||
return y * 8 + x;
|
||||
}
|
||||
/** Return x position (file) corresponding to a square. */
|
||||
public final static int getX(int square) {
|
||||
public static int getX(int square) {
|
||||
return square & 7;
|
||||
}
|
||||
/** Return y position (rank) corresponding to a square. */
|
||||
public final static int getY(int square) {
|
||||
public static int getY(int square) {
|
||||
return square >> 3;
|
||||
}
|
||||
/** Return true if (x,y) is a dark square. */
|
||||
public final static boolean darkSquare(int x, int y) {
|
||||
public static boolean darkSquare(int x, int y) {
|
||||
return (x & 1) == (y & 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,14 +33,14 @@ public class TextIO {
|
|||
private static String[] pieceNames = null;
|
||||
|
||||
/** Set localized piece names. */
|
||||
public static final void setPieceNames(String pieceNames) {
|
||||
public static void setPieceNames(String pieceNames) {
|
||||
String[] pn = pieceNames.split(" ");
|
||||
if (pn.length == 6)
|
||||
TextIO.pieceNames = pn;
|
||||
}
|
||||
|
||||
/** Parse a FEN string and return a chess Position object. */
|
||||
public static final Position readFEN(String fen) throws ChessParseError {
|
||||
public static Position readFEN(String fen) throws ChessParseError {
|
||||
fen = fen.trim();
|
||||
Position pos = new Position();
|
||||
String[] words = fen.split(" ");
|
||||
|
@ -197,7 +197,7 @@ public class TextIO {
|
|||
return pos;
|
||||
}
|
||||
|
||||
public static final void removeBogusCastleFlags(Position pos) {
|
||||
public static void removeBogusCastleFlags(Position pos) {
|
||||
int castleMask = pos.getCastleMask();
|
||||
int validCastle = 0;
|
||||
if (pos.getPiece(4) == Piece.WKING) {
|
||||
|
@ -213,7 +213,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Remove pseudo-legal EP square if it is not legal, ie would leave king in check. */
|
||||
public static final void fixupEPSquare(Position pos) {
|
||||
public static void fixupEPSquare(Position pos) {
|
||||
int epSquare = pos.getEpSquare();
|
||||
if (epSquare >= 0) {
|
||||
ArrayList<Move> moves = MoveGen.instance.legalMoves(pos);
|
||||
|
@ -231,7 +231,7 @@ public class TextIO {
|
|||
}
|
||||
}
|
||||
|
||||
private static final void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
private static void safeSetPiece(Position pos, int col, int row, int p) throws ChessParseError {
|
||||
if (row < 0) throw new ChessParseError("R.string.err_too_many_rows");
|
||||
if (col > 7) throw new ChessParseError("R.string.err_too_many_columns");
|
||||
if ((p == Piece.WPAWN) || (p == Piece.BPAWN)) {
|
||||
|
@ -242,7 +242,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Return a FEN string corresponding to a chess Position object. */
|
||||
public static final String toFEN(Position pos) {
|
||||
public static String toFEN(Position pos) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
// Piece placement
|
||||
for (int r = 7; r >=0; r--) {
|
||||
|
@ -334,12 +334,12 @@ public class TextIO {
|
|||
* Otherwise, use short notation, eg Nf3.
|
||||
* @param localized If true, use localized piece names.
|
||||
*/
|
||||
public static final String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized) {
|
||||
public static String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized) {
|
||||
return moveToString(pos, move, longForm, localized, null);
|
||||
}
|
||||
public static final String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized, List<Move> moves) {
|
||||
public static String moveToString(Position pos, Move move, boolean longForm,
|
||||
boolean localized, List<Move> moves) {
|
||||
if ((move == null) || move.equals(new Move(0, 0, 0)))
|
||||
return "--";
|
||||
StringBuilder ret = new StringBuilder();
|
||||
|
@ -438,7 +438,7 @@ public class TextIO {
|
|||
return ret.toString();
|
||||
}
|
||||
|
||||
private static final boolean isCapture(Position pos, Move move) {
|
||||
private static boolean isCapture(Position pos, Move move) {
|
||||
if (pos.getPiece(move.to) == Piece.EMPTY) {
|
||||
int p = pos.getPiece(move.from);
|
||||
if ((p == (pos.whiteMove ? Piece.WPAWN : Piece.BPAWN)) && (move.to == pos.getEpSquare())) {
|
||||
|
@ -455,10 +455,9 @@ public class TextIO {
|
|||
* Decide if move is valid in position pos.
|
||||
* @param pos Position for which to test move.
|
||||
* @param move The move to check for validity.
|
||||
* @param moves If non-null, list of valid moves in position pos.
|
||||
* @return True if move is valid in position pos, false otherwise.
|
||||
*/
|
||||
public static final boolean isValid(Position pos, Move move) {
|
||||
public static boolean isValid(Position pos, Move move) {
|
||||
if (move == null)
|
||||
return false;
|
||||
ArrayList<Move> moves = new MoveGen().legalMoves(pos);
|
||||
|
@ -480,11 +479,11 @@ public class TextIO {
|
|||
* The string may specify any combination of piece/source/target/promotion
|
||||
* information as long as it matches exactly one valid move.
|
||||
*/
|
||||
public static final Move stringToMove(Position pos, String strMove) {
|
||||
public static Move stringToMove(Position pos, String strMove) {
|
||||
return stringToMove(pos, strMove, null);
|
||||
}
|
||||
public static final Move stringToMove(Position pos, String strMove,
|
||||
ArrayList<Move> moves) {
|
||||
public static Move stringToMove(Position pos, String strMove,
|
||||
ArrayList<Move> moves) {
|
||||
if (strMove.equals("--"))
|
||||
return new Move(0, 0, 0);
|
||||
|
||||
|
@ -608,7 +607,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Convert a move object to UCI string format. */
|
||||
public static final String moveToUCIString(Move m) {
|
||||
public static String moveToUCIString(Move m) {
|
||||
String ret = squareToString(m.from);
|
||||
ret += squareToString(m.to);
|
||||
switch (m.promoteTo) {
|
||||
|
@ -638,7 +637,7 @@ public class TextIO {
|
|||
* Convert a string in UCI move format to a Move object.
|
||||
* @return A move object, or null if move has invalid syntax
|
||||
*/
|
||||
public static final Move UCIstringToMove(String move) {
|
||||
public static Move UCIstringToMove(String move) {
|
||||
Move m = null;
|
||||
if ((move.length() < 4) || (move.length() > 5))
|
||||
return m;
|
||||
|
@ -687,7 +686,7 @@ public class TextIO {
|
|||
* Convert a string, such as "e4" to a square number.
|
||||
* @return The square number, or -1 if not a legal square.
|
||||
*/
|
||||
public static final int getSquare(String s) {
|
||||
public static int getSquare(String s) {
|
||||
int x = s.charAt(0) - 'a';
|
||||
int y = s.charAt(1) - '1';
|
||||
if ((x < 0) || (x > 7) || (y < 0) || (y > 7))
|
||||
|
@ -698,7 +697,7 @@ public class TextIO {
|
|||
/**
|
||||
* Convert a square number to a string, such as "e4".
|
||||
*/
|
||||
public static final String squareToString(int square) {
|
||||
public static String squareToString(int square) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
int x = Position.getX(square);
|
||||
int y = Position.getY(square);
|
||||
|
@ -710,7 +709,7 @@ public class TextIO {
|
|||
/**
|
||||
* Create an ascii representation of a position.
|
||||
*/
|
||||
public static final String asciiBoard(Position pos) {
|
||||
public static String asciiBoard(Position pos) {
|
||||
StringBuilder ret = new StringBuilder(400);
|
||||
String nl = String.format(Locale.US, "%n");
|
||||
ret.append(" +----+----+----+----+----+----+----+----+"); ret.append(nl);
|
||||
|
@ -739,7 +738,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Convert a piece and a square to a string, such as Nf3. */
|
||||
public final static String pieceAndSquareToString(int currentPieceType, int p, int sq) {
|
||||
public static String pieceAndSquareToString(int currentPieceType, int p, int sq) {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
if (currentPieceType == PGNOptions.PT_FIGURINE) {
|
||||
ret.append(Piece.toUniCode(p));
|
||||
|
@ -765,7 +764,7 @@ public class TextIO {
|
|||
return "";
|
||||
}
|
||||
|
||||
public final static String pieceToCharLocalized(int p) {
|
||||
public static String pieceToCharLocalized(int p) {
|
||||
switch (p) {
|
||||
case Piece.WQUEEN: case Piece.BQUEEN: return pieceNames[4];
|
||||
case Piece.WROOK: case Piece.BROOK: return pieceNames[3];
|
||||
|
@ -789,7 +788,7 @@ public class TextIO {
|
|||
}
|
||||
|
||||
/** Add an = sign to a promotion move, as required by the PGN standard. */
|
||||
public final static String pgnPromotion(String str) {
|
||||
public static String pgnPromotion(String str) {
|
||||
int idx = str.length() - 1;
|
||||
while (idx > 0) {
|
||||
char c = str.charAt(idx);
|
||||
|
|
Loading…
Reference in New Issue
Block a user