src/game.c

changeset 25
3ab0c2e1a4e2
parent 23
824c9522ce66
child 26
e0a76ee1bb2b
--- a/src/game.c	Tue Apr 01 10:28:08 2014 +0200
+++ b/src/game.c	Tue Apr 01 12:30:25 2014 +0200
@@ -86,21 +86,26 @@
 
         if (logelem) {
             Move move = logelem->move;
-            char logstr[] = {
-                getpiecechr(move.piece),
-                filechr(move.fromfile), rowchr(move.fromrow),
-                move.capture ? 'x':'\0',
-                filechr(move.tofile), rowchr(move.torow),
-                move.check ? '+' : (move.checkmate ? '#' : 
-                    (move.promotion ? '=' : '\0')),
-                move.promotion ? getpiecechr(move.promotion) : '\0',
-                ' '
-            };
-            for (int stri = 0 ; stri < sizeof(logstr) ; stri++) {
-                if (logstr[stri]) {
-                    addch(logstr[stri]);
+            if ((move.piece&PIECE_MASK) == KING &&
+                abs(move.tofile-move.fromfile) == 2) {
+                addstr(move.tofile==fileidx('c')?"O-O-O":"O-O");
+            } else {
+                char logstr[] = {
+                    getpiecechr(move.piece),
+                    filechr(move.fromfile), rowchr(move.fromrow),
+                    move.capture ? 'x':'\0',
+                    filechr(move.tofile), rowchr(move.torow),
+                    move.check ? '+' : (move.checkmate ? '#' : 
+                        (move.promotion ? '=' : '\0')),
+                    move.promotion ? getpiecechr(move.promotion) : '\0'
+                };
+                for (int stri = 0 ; stri < sizeof(logstr) ; stri++) {
+                    if (logstr[stri]) {
+                        addch(logstr[stri]);
+                    }
                 }
             }
+            addch(' ');
             
             logelem = logelem->next;
         }

mercurial