X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=engineoutput.c;h=83c71417705a49fb18fd91b32e925c1664ed5479;hb=e70077aab0199817f37aef9ed0bdba1bbca93b45;hp=a21282e0fdffc5ad33fcd9a77410f50c74407b2e;hpb=56310c5b198bc521e0a715377c68378b7bcf10a5;p=xboard.git diff --git a/engineoutput.c b/engineoutput.c index a21282e..83c7141 100644 --- a/engineoutput.c +++ b/engineoutput.c @@ -5,6 +5,8 @@ * * Copyright 2005 Alessandro Scotti * + * Enhancements Copyright 1995, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + * * ------------------------------------------------------------------------ * * GNU XBoard is free software: you can redistribute it and/or modify @@ -45,6 +47,15 @@ #include "backend.h" #include "moves.h" #include "engineoutput.h" +#include "gettext.h" + +#ifdef ENABLE_NLS +# define _(s) gettext (s) +# define N_(s) gettext_noop (s) +#else +# define _(s) (s) +# define N_(s) s +#endif typedef struct { char * name; @@ -76,20 +87,28 @@ static char header[MSG_SIZ]; #define MAX_VAR 400 static int scores[MAX_VAR], textEnd[MAX_VAR], curDepth[2], nrVariations[2]; +extern int initialRulePlies; + void MakeEngineOutputTitle() { static char buf[MSG_SIZ]; static char oldTitle[MSG_SIZ]; - char *title = "Engine Output"; - extern int initialRulePlies; - int count; + char title[MSG_SIZ]; + int count, rule = 2*appData.ruleMoves; + + snprintf(title, MSG_SIZ, _("Engine Output") ); + + if(!EngineOutputIsUp()) return; // figure out value of 50-move counter count = currentMove; while( (signed char)boards[count][EP_STATUS] <= EP_NONE && count > backwardMostMove ) count--; if( count == backwardMostMove ) count -= initialRulePlies; - count += 2*appData.ruleMoves - currentMove; - snprintf(buf, MSG_SIZ, "%s (%d ply to draw)", title, count); - if(count <= 40) title = buf; + count = currentMove - count; + if(!rule) rule = 100; + if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving)) { + snprintf(buf, MSG_SIZ, _("%s (%d reversible plies)"), title, count); + safeStrCpy(title, buf, MSG_SIZ); + } if(!strcmp(oldTitle, title)) return; safeStrCpy(oldTitle, title, MSG_SIZ); SetEngineOutputTitle(title); @@ -194,7 +213,7 @@ void SetProgramStats( FrontEndProgramStats * stats ) // now directly called by b header[0] = NULLCHAR; if(gameMode == AnalyzeMode && (multi = MultiPV(&first)) >= 0) { snprintf(header, MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n", - appData.whitePOV ? "white" : "mover", first.option[multi].value); + appData.whitePOV || appData.scoreWhite ? "white" : "mover", first.option[multi].value); InsertIntoMemo( which, header, 0); } else if(appData.ponderNextMove && lastLine[which][0]) { @@ -481,7 +500,7 @@ static void UpdateControls( EngineOutputData * ed ) } /* Score */ - h = (gameMode == AnalyzeMode && appData.whitePOV && !WhiteOnMove(currentMove) ? -1 : 1) * ed->score; + h = ((gameMode == AnalyzeMode && appData.whitePOV || appData.scoreWhite) && !WhiteOnMove(currentMove) ? -1 : 1) * ed->score; if( h > 0 ) { snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "+%.2f", h / 100.0 ); }