OSDN Git Service

get_check_strictのyes/noを(o)k/(c)ancelに変更してみた. 動作確認はしているが, ゲームプレイ中に試してないので操作感の感想求む...
authorhenkma <henkma@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 16 Feb 2002 05:10:54 +0000 (05:10 +0000)
committerhenkma <henkma@0568b783-4c39-0410-ac80-bf13821ea2a2>
Sat, 16 Feb 2002 05:10:54 +0000 (05:10 +0000)
src/util.c

index db0484e..f624630 100644 (file)
@@ -3323,6 +3323,7 @@ bool get_check(cptr prompt)
  * mode & 0x01 : force user to answer "YES" or "N"
  * mode & 0x02 : don't allow ESCAPE key
  */
+#define CHECK_STRICT 0
 bool get_check_strict(cptr prompt, int mode)
 {
        int i;
@@ -3345,6 +3346,7 @@ bool get_check_strict(cptr prompt, int mode)
        /* Hack -- Build a "useful" prompt */
        if (mode & 1)
        {
+#if CHECK_STRICT
 #ifdef JP
                /* (79-8)¥Ð¥¤¥È¤Î»ØÄê, prompt¤¬Ä¹¤«¤Ã¤¿¾ì¹ç, 
                   (79-9)ʸ»ú¤Î¸å½ªÃ¼Ê¸»ú¤¬½ñ¤­¹þ¤Þ¤ì¤ë.     
@@ -3357,6 +3359,21 @@ bool get_check_strict(cptr prompt, int mode)
                buf[79-8]='\0';
 #endif
                strcat(buf, "[yes/no]");
+#else
+#ifdef JP
+               /* (79-8)¥Ð¥¤¥È¤Î»ØÄê, prompt¤¬Ä¹¤«¤Ã¤¿¾ì¹ç, 
+                  (79-9)ʸ»ú¤Î¸å½ªÃ¼Ê¸»ú¤¬½ñ¤­¹þ¤Þ¤ì¤ë.     
+                  ±Ñ¸ì¤ÎÊý¤Îstrncpy¤È¤Ï°ã¤¦¤Î¤ÇÃí°Õ.
+                  else¤ÎÊý¤Îʬ´ô¤âƱÍÍ. --henkma
+               */
+               mb_strlcpy(buf, prompt, 80-15);
+#else
+               strncpy(buf, prompt, 79-15);
+               buf[79-8]='\0';
+#endif
+               strcat(buf, "[(O)k/(C)ancel]");
+
+#endif
        }
        else
        {
@@ -3376,7 +3393,7 @@ bool get_check_strict(cptr prompt, int mode)
        while (TRUE)
        {
                i = inkey();
-
+#if CHECK_STRICT /* ¤³¤³¤«¤é(¤Á¤ç¤Ã¤ÈŤ¤¤Î¤Ç¥³¥á¥ó¥È) */
                if (i == 'y' || i == 'Y')
                {
                        if (!(mode & 1))
@@ -3408,7 +3425,51 @@ bool get_check_strict(cptr prompt, int mode)
                        }
                }
                if (!(mode & 2) && (i == ESCAPE)) break;
-               if (strchr("Nn", i)) break;
+               if (i == 'N' || i == 'n')
+               {
+                       if (!(mode & 1))
+                               break;
+                       else
+                       {
+#ifdef JP
+                               prt("n (NO¤ÈÆþÎϤ·¤Æ¤¯¤À¤µ¤¤)", 0, strlen(buf));
+#else
+                               prt("n (Please answer NO.)", 0, strlen(buf));
+#endif
+                               i = inkey();
+                               if (i == 'o' || i == 'O')
+                               {
+                                               break;
+                               }
+                               prt("", 0, strlen(buf));
+                       }
+               }
+#else
+               if ( mode & 1 )
+               {
+                       if ( i == 'o' || i == 'O' )
+                       {
+                               i = 'Y';
+                               break;
+                       }
+               }
+               else if (i == 'y' || i == 'Y')
+               {
+                               break;
+               }
+               if (!(mode & 2) && (i == ESCAPE)) break;
+               if ( mode & 1 )
+               {
+                       if ( i == 'c' || i == 'C' )
+                       {
+                               break;
+                       }
+               }
+               else if (i == 'n' || i == 'N')
+               {
+                               break;
+               }
+#endif /* ¤³¤³¤Þ¤Ç(¤Á¤ç¤Ã¤ÈŤ¤¤Î¤Ç¥³¥á¥ó¥È) */
                bell();
        }