From 45b9c7bbedfe3aad3d8134a8311bf7e568981179 Mon Sep 17 00:00:00 2001 From: mogami Date: Sun, 3 Mar 2002 15:50:53 +0000 Subject: [PATCH] =?utf8?q?rgra=E3=81=AB=E6=B5=81=E3=82=8C=E3=81=A6?= =?utf8?q?=E3=81=84=E3=81=9F=E3=83=91=E3=83=83=E3=83=81=E3=82=92=E5=8F=82?= =?utf8?q?=E8=80=83=E3=81=AB=E3=80=81'%'=E3=82=B3=E3=83=9E=E3=83=B3?= =?utf8?q?=E3=83=89=E3=81=A7=E6=95=B0=E5=80=A4=E5=85=A5=E5=8A=9B=E3=81=A7c?= =?utf8?q?har=E3=82=84attr=E3=82=92=E5=A4=89=E6=9B=B4=20=E3=81=A7=E3=81=8D?= =?utf8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82^?= =?utf8?q?N=20^A=20^C=20=E3=81=A7=E6=95=B0=E5=80=A4=E5=85=A5=E5=8A=9B?= =?utf8?q?=E3=81=AB=E5=85=A5=E3=82=8B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/cmd4.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 97 insertions(+), 30 deletions(-) diff --git a/src/cmd4.c b/src/cmd4.c index c771645d3..816997ad1 100644 --- a/src/cmd4.c +++ b/src/cmd4.c @@ -3291,6 +3291,31 @@ void do_cmd_macros(void) } +static void cmd_visuals_aux(char i, int *num, int max) +{ + if (iscntrl(i)) + { + char str[10] = ""; + int tmp; + + sprintf(str, "%d", *num); + + if (!get_string(format("Input new number(0-%d): ", max-1), str, 4)) + return; + + tmp = strtol(str, NULL, 0); + if (tmp >= 0 && tmp < max) + *num = tmp; + return; + } + else if (isupper(i)) + *num = (*num + max - 1) % max; + else + *num = (*num + 1) % max; + + return; +} + /* * Interact with "visuals" */ @@ -3644,6 +3669,8 @@ void do_cmd_visuals(void) while (1) { monster_race *r_ptr = &r_info[r]; + char c; + int t; byte da = (r_ptr->d_attr); byte dc = (r_ptr->d_char); @@ -3689,26 +3716,38 @@ void do_cmd_visuals(void) /* Prompt */ #ifdef JP Term_putstr(0, 22, -1, TERM_WHITE, - "¥³¥Þ¥ó¥É (n/N/a/A/c/C): "); + "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): "); #else Term_putstr(0, 22, -1, TERM_WHITE, - "Command (n/N/a/A/c/C): "); + "Command (n/N/^N/a/A/^A/c/C/^C): "); #endif - /* Get a command */ i = inkey(); /* All done */ if (i == ESCAPE) break; - /* Analyze */ - if (i == 'n') r = (r + max_r_idx + 1) % max_r_idx; - if (i == 'N') r = (r + max_r_idx - 1) % max_r_idx; - if (i == 'a') r_ptr->x_attr = (byte)(ca + 1); - if (i == 'A') r_ptr->x_attr = (byte)(ca - 1); - if (i == 'c') r_ptr->x_char = (byte)(cc + 1); - if (i == 'C') r_ptr->x_char = (byte)(cc - 1); + if (iscntrl(i)) c = 'a' + i - KTRL('A'); + else if (isupper(i)) c = 'a' + i - 'A'; + else c = i; + + switch (c) + { + case 'n': + cmd_visuals_aux(i, &r, max_r_idx); + break; + case 'a': + t = (int)r_ptr->x_attr; + cmd_visuals_aux(i, &t, 256); + r_ptr->x_attr = (byte)t; + break; + case 'c': + t = (int)r_ptr->x_char; + cmd_visuals_aux(i, &t, 256); + r_ptr->x_char = (byte)t; + break; + } } } @@ -3729,6 +3768,8 @@ void do_cmd_visuals(void) while (1) { object_kind *k_ptr = &k_info[k]; + char c; + int t; byte da = (byte)k_ptr->d_attr; byte dc = (byte)k_ptr->d_char; @@ -3774,26 +3815,38 @@ void do_cmd_visuals(void) /* Prompt */ #ifdef JP Term_putstr(0, 22, -1, TERM_WHITE, - "¥³¥Þ¥ó¥É (n/N/a/A/c/C): "); + "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): "); #else Term_putstr(0, 22, -1, TERM_WHITE, - "Command (n/N/a/A/c/C): "); + "Command (n/N/^N/a/A/^A/c/C/^C): "); #endif - /* Get a command */ i = inkey(); /* All done */ if (i == ESCAPE) break; - /* Analyze */ - if (i == 'n') k = (k + max_k_idx + 1) % max_k_idx; - if (i == 'N') k = (k + max_k_idx - 1) % max_k_idx; - if (i == 'a') k_info[k].x_attr = (byte)(ca + 1); - if (i == 'A') k_info[k].x_attr = (byte)(ca - 1); - if (i == 'c') k_info[k].x_char = (byte)(cc + 1); - if (i == 'C') k_info[k].x_char = (byte)(cc - 1); + if (iscntrl(i)) c = 'a' + i - KTRL('A'); + else if (isupper(i)) c = 'a' + i - 'A'; + else c = i; + + switch (c) + { + case 'n': + cmd_visuals_aux(i, &k, max_k_idx); + break; + case 'a': + t = (int)k_info[k].x_attr; + cmd_visuals_aux(i, &t, 256); + k_info[k].x_attr = (byte)t; + break; + case 'c': + t = (int)k_info[k].x_char; + cmd_visuals_aux(i, &t, 256); + k_info[k].x_char = (byte)t; + break; + } } } @@ -3814,6 +3867,8 @@ void do_cmd_visuals(void) while (1) { feature_type *f_ptr = &f_info[f]; + char c; + int t; byte da = (byte)f_ptr->d_attr; byte dc = (byte)f_ptr->d_char; @@ -3859,26 +3914,38 @@ void do_cmd_visuals(void) /* Prompt */ #ifdef JP Term_putstr(0, 22, -1, TERM_WHITE, - "¥³¥Þ¥ó¥É (n/N/a/A/c/C): "); + "¥³¥Þ¥ó¥É (n/N/^N/a/A/^A/c/C/^C): "); #else Term_putstr(0, 22, -1, TERM_WHITE, - "Command (n/N/a/A/c/C): "); + "Command (n/N/^N/a/A/^A/c/C/^C): "); #endif - /* Get a command */ i = inkey(); /* All done */ if (i == ESCAPE) break; - /* Analyze */ - if (i == 'n') f = (f + max_f_idx + 1) % max_f_idx; - if (i == 'N') f = (f + max_f_idx - 1) % max_f_idx; - if (i == 'a') f_info[f].x_attr = (byte)(ca + 1); - if (i == 'A') f_info[f].x_attr = (byte)(ca - 1); - if (i == 'c') f_info[f].x_char = (byte)(cc + 1); - if (i == 'C') f_info[f].x_char = (byte)(cc - 1); + if (iscntrl(i)) c = 'a' + i - KTRL('A'); + else if (isupper(i)) c = 'a' + i - 'A'; + else c = i; + + switch (c) + { + case 'n': + cmd_visuals_aux(i, &f, max_f_idx); + break; + case 'a': + t = (int)f_info[f].x_attr; + cmd_visuals_aux(i, &t, 256); + f_info[f].x_attr = (byte)t; + break; + case 'c': + t = (int)f_info[f].x_char; + cmd_visuals_aux(i, &t, 256); + f_info[f].x_char = (byte)t; + break; + } } } -- 2.11.0