From 45a8bee002d63638a0fe2cbf0bc8f9d618ca35ef Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Sat, 23 Sep 2017 23:52:49 +0200 Subject: [PATCH] DroidFish: Made it easier to disable the opening book. --- DroidFish/res/values/strings.xml | 1 + .../src/org/petero/droidfish/DroidFish.java | 21 +++++---- .../org/petero/droidfish/book/DroidBook.java | 4 ++ .../src/org/petero/droidfish/book/NoBook.java | 43 +++++++++++++++++++ .../org/petero/droidfish/book/NullBook.java | 6 +-- 5 files changed, 64 insertions(+), 11 deletions(-) create mode 100644 DroidFish/src/org/petero/droidfish/book/NoBook.java diff --git a/DroidFish/res/values/strings.xml b/DroidFish/res/values/strings.xml index 1bb2033..9f2dbbd 100644 --- a/DroidFish/res/values/strings.xml +++ b/DroidFish/res/values/strings.xml @@ -76,6 +76,7 @@ you are not actively using the program.\ Edit Move Counters <Internal Book> <ECO Book> + <No Book> Select opening book file Select Chess Engine Open PGN file diff --git a/DroidFish/src/org/petero/droidfish/DroidFish.java b/DroidFish/src/org/petero/droidfish/DroidFish.java index a5a1b46..09f7678 100644 --- a/DroidFish/src/org/petero/droidfish/DroidFish.java +++ b/DroidFish/src/org/petero/droidfish/DroidFish.java @@ -1472,7 +1472,7 @@ public class DroidFish extends Activity BookOptions options = new BookOptions(bookOptions); if (options.filename.isEmpty()) options.filename = "internal:"; - if (!options.filename.equals("internal:") && !options.filename.equals("eco:")) { + if (!options.filename.endsWith(":")) { String sep = File.separator; if (!options.filename.startsWith(sep)) { File extDir = Environment.getExternalStorageDirectory(); @@ -2512,13 +2512,17 @@ public class DroidFish extends Activity } }); final int numFiles = fileNames.length; - CharSequence[] items = new CharSequence[numFiles + 2]; + final CharSequence[] items = new CharSequence[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); - final CharSequence[] finalItems = items; - int defaultItem = bookOptions.filename.equals("eco:") ? numFiles + 1 : numFiles; + items[numFiles + 2] = getString(R.string.no_book); + int defaultItem = numFiles; + if (bookOptions.filename.equals("eco:")) + defaultItem = numFiles + 1; + else if (bookOptions.filename.equals("nobook:")) + defaultItem = numFiles + 2; for (int i = 0; i < numFiles; i++) { if (bookOptions.filename.equals(items[i])) { defaultItem = i; @@ -2535,8 +2539,10 @@ public class DroidFish extends Activity bookFile = "internal:"; else if (item == numFiles + 1) bookFile = "eco:"; + else if (item == numFiles + 2) + bookFile = "nobook:"; else - bookFile = finalItems[item].toString(); + bookFile = items[item].toString(); editor.putString("bookFile", bookFile); editor.commit(); bookOptions.filename = bookFile; @@ -2707,14 +2713,13 @@ public class DroidFish extends Activity break; } } - CharSequence[] items = new CharSequence[numFiles + 1]; + final CharSequence[] items = new CharSequence[numFiles + 1]; for (int i = 0; i < numFiles; i++) items[i] = fileNames[i]; items[numFiles] = getString(R.string.new_file); - final CharSequence[] finalItems = items; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.select_pgn_file_save); - builder.setSingleChoiceItems(finalItems, defaultItem, new DialogInterface.OnClickListener() { + builder.setSingleChoiceItems(items, defaultItem, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { String pgnFile; if (item >= numFiles) { diff --git a/DroidFish/src/org/petero/droidfish/book/DroidBook.java b/DroidFish/src/org/petero/droidfish/book/DroidBook.java index 6b49145..359fa42 100644 --- a/DroidFish/src/org/petero/droidfish/book/DroidBook.java +++ b/DroidFish/src/org/petero/droidfish/book/DroidBook.java @@ -53,6 +53,7 @@ public final class DroidBook { private IOpeningBook externalBook = new NullBook(); private IOpeningBook ecoBook = new EcoBook(); private IOpeningBook internalBook = new InternalBook(); + private IOpeningBook noBook = new NoBook(); private BookOptions options = null; private static final DroidBook INSTANCE = new DroidBook(); @@ -78,6 +79,7 @@ public final class DroidBook { externalBook.setOptions(options); ecoBook.setOptions(options); internalBook.setOptions(options); + noBook.setOptions(options); } /** Return a random book move for a position, or null if out of book. */ @@ -179,6 +181,8 @@ public final class DroidBook { return externalBook; } else if (ecoBook.enabled()) { return ecoBook; + } else if (noBook.enabled()) { + return noBook; } else { return internalBook; } diff --git a/DroidFish/src/org/petero/droidfish/book/NoBook.java b/DroidFish/src/org/petero/droidfish/book/NoBook.java new file mode 100644 index 0000000..028650f --- /dev/null +++ b/DroidFish/src/org/petero/droidfish/book/NoBook.java @@ -0,0 +1,43 @@ +/* + DroidFish - An Android chess program. + Copyright (C) 2017 Peter Ă–sterlund, peterosterlund2@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +package org.petero.droidfish.book; + +import java.util.ArrayList; + +import org.petero.droidfish.book.DroidBook.BookEntry; +import org.petero.droidfish.gamelogic.Position; + +class NoBook implements IOpeningBook { + private boolean enabled = false; + + @Override + public boolean enabled() { + return enabled; + } + + @Override + public void setOptions(BookOptions options) { + enabled = options.filename.equals("nobook:"); + } + + @Override + public ArrayList getBookEntries(Position pos) { + return null; + } +} diff --git a/DroidFish/src/org/petero/droidfish/book/NullBook.java b/DroidFish/src/org/petero/droidfish/book/NullBook.java index 0cd026c..3903a1f 100644 --- a/DroidFish/src/org/petero/droidfish/book/NullBook.java +++ b/DroidFish/src/org/petero/droidfish/book/NullBook.java @@ -31,11 +31,11 @@ class NullBook implements IOpeningBook { } @Override - public ArrayList getBookEntries(Position pos) { - return null; + public void setOptions(BookOptions options) { } @Override - public void setOptions(BookOptions options) { + public ArrayList getBookEntries(Position pos) { + return null; } }