X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=blobdiff_plain;f=backend.c;h=e60830754a948cc1d7d972896ae825c2ea1b2bfb;hp=e2aa771d5874bacd19f014a18a756667d88dbf53;hb=ca99bd4de57d0b079024cbdf5435de1ae61d5fd9;hpb=08d1691b8c734f49773076a001059a59812505d0 diff --git a/backend.c b/backend.c index e2aa771..e608307 100755 --- a/backend.c +++ b/backend.c @@ -1977,7 +1977,7 @@ VariantSwitch(Board board, VariantClass newVariant) case VariantSuper: newHoldingsWidth = 2; gameInfo.holdingsSize = 8; - return; + break; case VariantGothic: case VariantCapablanca: case VariantCapaRandom: @@ -2011,10 +2011,8 @@ VariantSwitch(Board board, VariantClass newVariant) gameInfo.holdingsWidth = newHoldingsWidth; gameInfo.variant = newVariant; InitDrawingSizes(-2, 0); - InitPosition(FALSE); /* this sets up board[0], but also other stuff */ - } else { gameInfo.variant = newVariant; InitPosition(FALSE); } - - DrawPosition(TRUE, boards[currentMove]); + InitPosition(TRUE); /* this sets up board[0], but also other stuff */ + } else { gameInfo.variant = newVariant; InitPosition(TRUE); } } static int loggedOn = FALSE; @@ -2731,7 +2729,7 @@ read_from_ics(isr, closure, data, count, error) moves and soak them up so user can step through them and/or save them. */ - Reset(FALSE, TRUE); + Reset(TRUE, TRUE); gameMode = IcsObserving; ModeHighlight(); ics_gamenum = -1; @@ -3426,7 +3424,7 @@ ParseBoard12(string) &white_stren, &black_stren, &white_time, &black_time, &moveNum, str, elapsed_time, move_str, &ics_flip, &ticking); -fprintf(debugFP, "old: %dx%d new: %dx%d weird=%d variant=%d\n",gameInfo.boardHeight,gameInfo.boardWidth,ranks,files,weird,gameInfo.variant);fflush(debugFP); + if (gameInfo.boardHeight != ranks || gameInfo.boardWidth != files || weird && (int)gameInfo.variant <= (int)VariantShogi) { /* [HGM] We seem to switch variant during a game! @@ -3436,7 +3434,8 @@ fprintf(debugFP, "old: %dx%d new: %dx%d weird=%d variant=%d\n",gameInfo.boardH if(ranks == 8 && files == 10) newVariant = VariantCapablanca; else if(ranks == 10 && files == 9) newVariant = VariantXiangqi; else if(ranks == 8 && files == 12) newVariant = VariantCourier; else - if(ranks == 9 && files == 9) newVariant = VariantShogi; + if(ranks == 9 && files == 9) newVariant = VariantShogi; else + if(!weird) newVariant = VariantNormal; VariantSwitch(boards[currentMove], newVariant); /* temp guess */ /* Get a move list just to see the header, which will tell us whether this is really bug or zh */ @@ -3531,7 +3530,7 @@ fprintf(debugFP, "old: %dx%d new: %dx%d weird=%d variant=%d\n",gameInfo.boardH /* Forget the old game and get the history (if any) of the new one */ if (gameMode != BeginningOfGame) { - Reset(FALSE, TRUE); + Reset(TRUE, TRUE); } newGame = TRUE; if (appData.autoRaiseBoard) BoardToTop(); @@ -6423,7 +6422,7 @@ if(appData.debugMode) fprintf(debugFP, "nodes = %d, %lld\n", (int) programStats. DisplayError(_("Bad FEN received from engine"), 0); return ; } else { - Reset(FALSE, FALSE); + Reset(TRUE, FALSE); CopyBoard(boards[0], initial_position); initialRulePlies = FENrulePlies; epStatus[0] = FENepStatus; @@ -7966,7 +7965,7 @@ TwoMachinesEventIfReady P((void)) void NextMatchGame P((void)) { - int index; /* [HGM] autoinc: step lod index during match */ + int index; /* [HGM] autoinc: step load index during match */ Reset(FALSE, TRUE); if (*appData.loadGameFile != NULLCHAR) { index = appData.loadGameIndex;