Send setup command to GUI
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 6 Nov 2010 20:39:56 +0000 (21:39 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 6 Nov 2010 20:39:56 +0000 (21:39 +0100)
After receiving the variant command for variant fairy, Fairy-Max
responds with a setup command to inform the GUI about the piece names
and opening array of the actually selected variant.
The piece names are defeined (in the format of a WinBoard
-pieceToCharTable string) after the variant name in the fmax.ini file,
separated from it by a '#' sign.

data/fmax.ini
fairymax.c

index a684c2e..db90b99 100644 (file)
@@ -470,7 +470,7 @@ h:640 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7 15,7 17,7 -15,7 -17,7 30,7 34,
 m:640 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7 1,7 16,7 -1,7 -16,7 2,7 -2,7 32,7 -32,7\r
 \r
 // Spartan Chess, where black has a different army from white's orthodox FIDE, with two kings\r
-Game: fairy/Spartan\r
+Game: fairy/Spartan # PNBRQ..............K....q.lwg.....c...hk\r
 8x8\r
 6 4 5 7 11 5 4 6\r
 3 9 11 8 8 11 10 3\r
index 36bda21..be12a63 100644 (file)
@@ -435,7 +435,7 @@ void PrintOptions()
                                          \r
 int LoadGame(char *name)\r
 {\r
-        int i, j, count=0; char c, buf[80];\r
+        int i, j, ptc, count=0; char c, buf[80], pieceToChar[80];\r
         static int currentVariant;\r
         FILE *f;\r
 \r
@@ -450,7 +450,7 @@ int LoadGame(char *name)
         if(name != NULL)\r
         {  /* search for game name in definition file */\r
            if(!strcmp(name, "fairy")) name = selectedFairy;\r
-           while(fscanf(f, "Game: %s", buf)!=1 || strcmp(name, buf) ) {\r
+           while((ptc=fscanf(f, "Game: %s # %s", buf, pieceToChar))==0 || strcmp(name, buf) ) {\r
                while((c = fgetc(f)) != EOF && c != '\n');\r
                count++;\r
                if(c == EOF) {\r
@@ -488,6 +488,14 @@ int LoadGame(char *name)
         fclose(f);\r
        sh = w[7] < 250 ? 3 : 0;\r
        makruk = w[7]==181 ? 64 : 0; // w[7] is used as kludge to enable makruk promotions\r
+        if(name == selectedFairy) {\r
+            printf(ptc == 1 ? "setup " : "setup (%s) ", pieceToChar); // setup board in GUI\r
+            for(i=0; i<BW; i++) printf("%c", piecename[oo[i+16]]+'`'); printf("/");\r
+            for(i=0; i<BW; i++) printf("%c", piecename[2]+'`'); printf("/");\r
+            for(i=2; i<BH-2; i++) printf("%d/", BW);\r
+            for(i=0; i<BW; i++) printf("%c", piecename[1]+'@'); printf("/");\r
+            for(i=0; i<BW; i++) printf("%c", piecename[oo[i]]+'@'); printf(" w KQkq - 0 1\n");\r
+        }\r
 }\r
 \r
 int main(int argc, char **argv)\r