Implement new mate-score standard
authorH.G. Muller <h.g.muller@hccnet.nl>
Wed, 15 Jan 2014 21:35:23 +0000 (22:35 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 18 Jan 2014 23:01:58 +0000 (00:01 +0100)
Matescores are now indicated in the protocol as +/- 100000+DTM,
and in the Engine Output window as #DTM or #-DTM.

engine-intf.html
engineoutput.c

index 969495b..3b7cb6c 100644 (file)
@@ -1830,6 +1830,11 @@ the reported score is from a fail low, and thus represents an upper bound only.
 Similarly, an exclamation point should be used to indicate a fail high / lower bound.\r
 </p>\r
 \r
+<p class="version47">\r
+Mate scores should be indicated as 100000 + N for "mate in N moves",\r
+and -100000 - N for "mated in N moves".\r
+</p>\r
+\r
 <p>\r
 Example:\r
 </p>\r
index 75e1f8d..1ca977b 100644 (file)
@@ -434,6 +434,7 @@ InsertionPoint (int len, EngineOutputData *ed)
       return offs + strlen(header[ed->which]);
 }
 
+#define MATE_SCORE 100000
 static char spaces[] = "            "; // [HGM] align: spaces for padding
 
 static void
@@ -590,6 +591,8 @@ UpdateControls (EngineOutputData *ed)
         if( h == 0 ) {
          snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "  0.00%c\t", fail );
         } else
+       if( h >= MATE_SCORE) snprintf(s_score, 16, "  %s#%d%c\t", ( h > MATE_SCORE+9 ? "" : "  "),  h - MATE_SCORE, fail ); else
+       if(-h >= MATE_SCORE) snprintf(s_score, 16, " %s#-%d%c\t", (-h > MATE_SCORE+9 ? "" : "  "), -h - MATE_SCORE, fail ); else
         if( h > 0 ) {
          snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "+%.2f%c\t", h / 100.0, fail );
         }