EditBoard: display message on wrong input.
authorYann Dirson <ydirson@free.fr>
Sun, 16 Feb 2014 15:03:39 +0000 (16:03 +0100)
committerYann Dirson <ydirson@free.fr>
Sun, 16 Feb 2014 15:12:30 +0000 (16:12 +0100)
NEWS
gnushogi/cursesdsp.c
gnushogi/rawdsp.c

diff --git a/NEWS b/NEWS
index d5bc3b2..35537b8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,9 @@ Changes in version 1.4.2 (unreleased):
 
 * XShogi is no longer included in the GNU Shogi source, it is
   available as a separate source archive.
-* Fix clobbering of board on invalid input when editing board.
+* Fixes for edit mode:
+  - fixed clobbering of board on invalid input
+  - display a message on wrong input
 * Fixed Curses mode display:
   - reversed column number for MiniShogi
   - clock position for MiniShogi
index 2fa6d4c..bf5452f 100644 (file)
@@ -485,6 +485,7 @@ Curses_EditBoard(void)
         ClearEoln();
         FLUSH_SCANW("%s", s);
         found = 0;
+        ClearMessage();
 
         if (s[0] == '.')
             break;
@@ -520,15 +521,18 @@ Curses_EditBoard(void)
                     break;
                 }
             }
-
+            if (!found)
+                AlwaysShowMessage("Invalid piece type '%c'", s[0]);
             continue;
         }
 
         c = COL_NUM(s[1]);
         r = ROW_NUM(s[2]);
 
-        if ((c < 0) || (c >= NO_COLS) || (r < 0) || (r >= NO_ROWS))
+        if ((c < 0) || (c >= NO_COLS) || (r < 0) || (r >= NO_ROWS)) {
+            AlwaysShowMessage("Out-of-board '%c%c'", s[1], s[2]);
             continue;
+        }
 
         sq = locn(r, c);
 
@@ -547,6 +551,9 @@ Curses_EditBoard(void)
             }
         }
 
+        if (!found)
+            AlwaysShowMessage("Invalid piece type '%c'", s[0]);
+
         DrawPiece(sq);
     }
 
index 0ca5c5a..53d051c 100644 (file)
@@ -385,6 +385,8 @@ Raw_EditBoard(void)
                     break;
                 }
             }
+            if (!found)
+                printf("# Invalid piece type '%c'\n", s[0]);
             continue;
         }
 
@@ -392,6 +394,7 @@ Raw_EditBoard(void)
         r = ROW_NUM(s[2]);
 
         if ((c < 0) || (c >= NO_COLS) || (r < 0) || (r >= NO_ROWS)) {
+            printf("# Out-of-board position '%c%c'\n", s[1], s[2]);
             continue;
         }
 
@@ -411,6 +414,9 @@ Raw_EditBoard(void)
                 break;
             }
         }
+
+        if (!found)
+            printf("# Invalid piece type '%c'\n", s[0]);
     }
 
     for (sq = 0; sq < NO_SQUARES; sq++)