From f0035a6690d37a1c29bfa75033649eca5092a4c8 Mon Sep 17 00:00:00 2001 From: Peter Osterlund Date: Wed, 19 Sep 2012 18:11:53 +0000 Subject: [PATCH] DroidFish: Moved computation of material difference to the Util class, so that it can be reused by the EditBoard activity. --- .../src/org/petero/droidfish/DroidFish.java | 7 ++--- .../org/petero/droidfish/GUIInterface.java | 3 +- DroidFish/src/org/petero/droidfish/Util.java | 31 +++++++++++++++++++ .../gamelogic/DroidChessController.java | 16 +--------- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/DroidFish/src/org/petero/droidfish/DroidFish.java b/DroidFish/src/org/petero/droidfish/DroidFish.java index 68c5d36..c837158 100644 --- a/DroidFish/src/org/petero/droidfish/DroidFish.java +++ b/DroidFish/src/org/petero/droidfish/DroidFish.java @@ -1012,10 +1012,9 @@ public class DroidFish extends Activity implements GUIInterface { } @Override - public void updateMaterialDifferenceTitle(CharSequence whitePieces, - CharSequence blackPieces) { - whiteFigText.setText(whitePieces); - blackFigText.setText(blackPieces); + public void updateMaterialDifferenceTitle(Util.MaterialDiff diff) { + whiteFigText.setText(diff.white); + blackFigText.setText(diff.black); } private final void setFullScreenMode(boolean fullScreenMode) { diff --git a/DroidFish/src/org/petero/droidfish/GUIInterface.java b/DroidFish/src/org/petero/droidfish/GUIInterface.java index 859e374..269d1ec 100644 --- a/DroidFish/src/org/petero/droidfish/GUIInterface.java +++ b/DroidFish/src/org/petero/droidfish/GUIInterface.java @@ -81,8 +81,7 @@ public interface GUIInterface { public void updateEngineTitle(); /** Update title with the material difference. */ - public void updateMaterialDifferenceTitle(CharSequence whitePieces, - CharSequence blackPieces); + public void updateMaterialDifferenceTitle(Util.MaterialDiff diff); /** Report a move made that is a candidate for GUI animation. */ public void setAnimMove(Position sourcePos, Move move, boolean forward); diff --git a/DroidFish/src/org/petero/droidfish/Util.java b/DroidFish/src/org/petero/droidfish/Util.java index 3d5eacc..11463d0 100644 --- a/DroidFish/src/org/petero/droidfish/Util.java +++ b/DroidFish/src/org/petero/droidfish/Util.java @@ -7,6 +7,9 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; +import org.petero.droidfish.gamelogic.Piece; +import org.petero.droidfish.gamelogic.Position; + import android.os.Build; public final class Util { @@ -38,4 +41,32 @@ public final class Util { inBuf.close(); return ret.toArray(new String[ret.size()]); } + + /** Represent materiel difference as two unicode strings. */ + public final static class MaterialDiff { + public CharSequence white; + public CharSequence black; + MaterialDiff(CharSequence w, CharSequence b) { + white = w; + black = b; + } + } + + /** Compute material difference for a position. */ + public static MaterialDiff getMaterialDiff(Position pos) { + StringBuilder whiteString = new StringBuilder(); + StringBuilder blackString = new StringBuilder(); + for (int p = Piece.WPAWN; p >= Piece.WQUEEN; p--) { + int diff = pos.nPieces(p) - pos.nPieces(Piece.swapColor(p)); + while (diff < 0) { + whiteString.append(Piece.toUniCode(Piece.swapColor(p))); + diff++; + } + while (diff > 0) { + blackString.append(Piece.toUniCode(p)); + diff--; + } + } + return new MaterialDiff(whiteString, blackString); + } } diff --git a/DroidFish/src/org/petero/droidfish/gamelogic/DroidChessController.java b/DroidFish/src/org/petero/droidfish/gamelogic/DroidChessController.java index 68a3719..eeb916a 100644 --- a/DroidFish/src/org/petero/droidfish/gamelogic/DroidChessController.java +++ b/DroidFish/src/org/petero/droidfish/gamelogic/DroidChessController.java @@ -1035,21 +1035,7 @@ public class DroidChessController { } public final void updateMaterialDiffList() { - Position pos = game.currPos(); - StringBuilder whiteString = new StringBuilder(); - StringBuilder blackString = new StringBuilder(); - for (int p = Piece.WPAWN; p >= Piece.WQUEEN; p--) { - int diff = pos.nPieces(p) - pos.nPieces(Piece.swapColor(p)); - while (diff < 0) { - whiteString.append(Piece.toUniCode(Piece.swapColor(p))); - diff++; - } - while (diff > 0) { - blackString.append(Piece.toUniCode(p)); - diff--; - } - } - gui.updateMaterialDifferenceTitle(whiteString, blackString); + gui.updateMaterialDifferenceTitle(Util.getMaterialDiff(game.currPos())); } private final synchronized void setThinkingInfo(int id, ArrayList> pvMoves, String pvStr,