DroidFish: Allow selecting side to play when starting a new game.

This commit is contained in:
Peter Osterlund 2012-04-07 23:46:04 +00:00
parent 9be6394737
commit a0eb057e4a
2 changed files with 49 additions and 23 deletions

View File

@ -328,6 +328,7 @@ you are not actively using the program.\
<string name="failed_to_start_engine">Failed to start engine</string>
<string name="engine_terminated">Engine terminated</string>
<string name="uci_protocol_error">UCI protocol error</string>
<string name="start_new_game">Start New Game?</string>
<string name="err_too_few_spaces">Too few spaces</string>
<string name="err_invalid_piece">Invalid piece</string>
@ -359,8 +360,8 @@ you are not actively using the program.\
<string name="prefs_playing_options">Playing Options</string>
<string name="prefs_playerName_title">Player Name</string>
<string name="prefs_playerName_summary">Default player name in new games</string>
<string name="prefs_autoSwapSides_title">Auto Swap Sides</string>
<string name="prefs_autoSwapSides_summary">Automatically swap sides when new game started. Also overrides Flip Board setting</string>
<string name="prefs_autoSwapSides_title">Flip Board: Auto</string>
<string name="prefs_autoSwapSides_summary">Use side to move to flip board automatically</string>
<string name="prefs_playerNameFlip_title">Flip Board: Player</string>
<string name="prefs_playerNameFlip_summary">Use Player Name to flip board automatically</string>
<string name="prefs_engine_settings">Engine Settings</string>
@ -480,6 +481,7 @@ you are not actively using the program.\
<string name="prefs_tbEngineProbe_summary">Enable tablebase probing in engine, when supported. Takes effect next time engine is started</string>
<string name="prefs_gtbPath_title">GTB Directory</string>
<string name="prefs_gtbPath_summary">Directory where Gaviota tablebases are installed. Leave blank to use default directory</string>
<string name="buttonDesc_flip">Flip board button</string>
<string name="buttonDesc_mode">Mode button</string>
<string name="buttonDesc_back">Backward button</string>

View File

@ -138,7 +138,6 @@ public class DroidFish extends Activity implements GUIInterface {
// FIXME!!! Remember multi-PV analysis setting when program restarted.
// FIXME!!! Use high-res buttons from Scid on the go.
// FIXME!!! Auto-swap sides is not good in combination with analysis mode.
// FIXME!!! Better behavior if engine is terminated. How exactly?
// FIXME!!! Handle PGN intents with more than one game.
@ -479,8 +478,8 @@ public class DroidFish extends Activity implements GUIInterface {
flipButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setBoardFlipPrefs(!boardFlipped);
setBoardFlip(false);
setBoardFlipPrefs(!cb.flipped);
cb.setFlipped(boardFlipped);
}
});
modeButton = (ImageButton)findViewById(R.id.modeButton);
@ -581,7 +580,7 @@ public class DroidFish extends Activity implements GUIInterface {
boardFlipped = settings.getBoolean("boardFlipped", false);
autoSwapSides = settings.getBoolean("autoSwapSides", false);
playerNameFlip = settings.getBoolean("playerNameFlip", true);
setBoardFlip(true);
setBoardFlip(false);
boolean drawSquareLabels = settings.getBoolean("drawSquareLabels", false);
cb.setDrawSquareLabels(drawSquareLabels);
cb.oneTouchMoves = settings.getBoolean("oneTouchMoves", false);
@ -778,22 +777,7 @@ public class DroidFish extends Activity implements GUIInterface {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_new_game:
if (autoSwapSides && (gameMode.playerWhite() != gameMode.playerBlack())) {
int gameModeType;
if (gameMode.playerWhite()) {
gameModeType = GameMode.PLAYER_BLACK;
} else {
gameModeType = GameMode.PLAYER_WHITE;
}
Editor editor = settings.edit();
String gameModeStr = String.format("%d", gameModeType);
editor.putString("gameMode", gameModeStr);
editor.commit();
gameMode = new GameMode(gameModeType);
}
// savePGNToFile(ctrl.getPGN(), ".autosave.pgn", true);
ctrl.newGame(gameMode);
ctrl.startGame();
showDialog(NEW_GAME_DIALOG);
return true;
case R.id.item_editboard: {
Intent i = new Intent(DroidFish.this, EditBoard.class);
@ -865,7 +849,7 @@ public class DroidFish extends Activity implements GUIInterface {
try {
String fen = data.getAction();
ctrl.setFENOrPGN(fen);
setBoardFlip(true);
setBoardFlip(false);
} catch (ChessParseError e) {
}
}
@ -1166,6 +1150,21 @@ public class DroidFish extends Activity implements GUIInterface {
cb.setMoveHints(hints);
}
private final void startNewGame(int type) {
if (type != 2) {
int gameModeType = (type == 0) ? GameMode.PLAYER_WHITE : GameMode.PLAYER_BLACK;
Editor editor = settings.edit();
String gameModeStr = String.format("%d", gameModeType);
editor.putString("gameMode", gameModeStr);
editor.commit();
gameMode = new GameMode(gameModeType);
}
// savePGNToFile(ctrl.getPGN(), ".autosave.pgn", true);
ctrl.newGame(gameMode);
ctrl.startGame();
setBoardFlip(true);
}
static private final int PROMOTE_DIALOG = 0;
static private final int BOARD_MENU_DIALOG = 1;
static private final int ABOUT_DIALOG = 2;
@ -1182,10 +1181,35 @@ public class DroidFish extends Activity implements GUIInterface {
static private final int GO_BACK_MENU_DIALOG = 13;
static private final int GO_FORWARD_MENU_DIALOG = 14;
static private final int FILE_MENU_DIALOG = 15;
static private final int NEW_GAME_DIALOG = 16;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case NEW_GAME_DIALOG: {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.option_new_game);
builder.setMessage(R.string.start_new_game);
builder.setPositiveButton(R.string.yes, new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startNewGame(2);
}
});
builder.setNeutralButton(R.string.white, new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startNewGame(0);
}
});
builder.setNegativeButton(R.string.black, new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startNewGame(1);
}
});
return builder.create();
}
case PROMOTE_DIALOG: {
final CharSequence[] items = {
getString(R.string.queen), getString(R.string.rook),