OSDN Git Service

[Refactor] #define ALLOW_EASY_OPEN による分岐処理削除。 / Delete #define branch by ALLOW_EASY_OPEN.
[hengband/hengband.git] / src / util.c
index 2f2150a..9be0b61 100644 (file)
@@ -11,6 +11,7 @@
 /* Purpose: Angband utilities -BEN- */
 
 #include "angband.h"
+#include "monster-hook.h"
 
 
 static int num_more = 0;
@@ -283,7 +284,6 @@ static errr path_temp(char *buf, int max)
        /* Temp file */
        s = tmpnam(NULL);
 
-       /* Oops */
        if (!s) return (-1);
 
        /* Format to length */
@@ -532,7 +532,7 @@ errr my_fgets(FILE *fff, char *buf, huge n)
  *
  * Dump a string, plus a newline, to a file
  *
- * XXX XXX XXX Process internal weirdness?
+ * Process internal weirdness?
  */
 errr my_fputs(FILE *fff, cptr buf, huge n)
 {
@@ -605,7 +605,6 @@ errr fd_kill(cptr file)
        /* Remove */
        (void)remove(buf);
 
-       /* XXX XXX XXX */
        return (0);
 }
 
@@ -627,7 +626,6 @@ errr fd_move(cptr file, cptr what)
        /* Rename */
        (void)rename(buf, aux);
 
-       /* XXX XXX XXX */
        return (0);
 }
 
@@ -678,7 +676,6 @@ errr fd_copy(cptr file, cptr what)
        fd_close(src_fd);
        fd_close(dst_fd);
 
-       /* XXX XXX XXX */
        return (0);
 }
 
@@ -690,13 +687,13 @@ errr fd_copy(cptr file, cptr what)
  *
  * Note that we assume that the file should be "binary"
  *
- * XXX XXX XXX The horrible "BEN_HACK" code is for compiling under
+ * The horrible "BEN_HACK" code is for compiling under
  * the CodeWarrior compiler, in which case, for some reason, none
  * of the "O_*" flags are defined, and we must fake the definition
  * of "O_RDONLY", "O_WRONLY", and "O_RDWR" in "A-win-h", and then
  * we must simulate the effect of the proper "open()" call below.
  */
-int fd_make(cptr file, int mode)
+int fd_make(cptr file, BIT_FLAGS mode)
 {
        char buf[1024];
 
@@ -936,7 +933,6 @@ errr fd_close(int fd)
        /* Close */
        (void)close(fd);
 
-       /* XXX XXX XXX */
        return (0);
 }
 
@@ -947,7 +943,7 @@ errr fd_close(int fd)
 
 
 /*
- * XXX XXX XXX Important note about "colors" XXX XXX XXX
+ * Important note about "colors" 
  *
  * The "TERM_*" color definitions list the "composition" of each
  * "Angband color" in terms of "quarters" of each of the three color
@@ -1197,8 +1193,8 @@ void text_to_ascii(char *buf, cptr str)
                        /* Hex-mode XXX */
                        if (*str == 'x')
                        {
-                               *s = 16 * dehex(*++str);
-                               *s++ += dehex(*++str);
+                               *s = 16 * (char)dehex(*++str);
+                               *s++ += (char)dehex(*++str);
                        }
 
                        /* Hack -- simple way to specify "backslash" */
@@ -1252,29 +1248,29 @@ void text_to_ascii(char *buf, cptr str)
                        /* Octal-mode */
                        else if (*str == '0')
                        {
-                               *s = 8 * deoct(*++str);
-                               *s++ += deoct(*++str);
+                               *s = 8 * (char)deoct(*++str);
+                               *s++ += (char)deoct(*++str);
                        }
 
                        /* Octal-mode */
                        else if (*str == '1')
                        {
-                               *s = 64 + 8 * deoct(*++str);
-                               *s++ += deoct(*++str);
+                               *s = 64 + 8 * (char)deoct(*++str);
+                               *s++ += (char)deoct(*++str);
                        }
 
                        /* Octal-mode */
                        else if (*str == '2')
                        {
-                               *s = 64 * 2 + 8 * deoct(*++str);
-                               *s++ += deoct(*++str);
+                               *s = 64 * 2 + 8 * (char)deoct(*++str);
+                               *s++ += (char)deoct(*++str);
                        }
 
                        /* Octal-mode */
                        else if (*str == '3')
                        {
-                               *s = 64 * 3 + 8 * deoct(*++str);
-                               *s++ += deoct(*++str);
+                               *s = 64 * 3 + 8 * (char)deoct(*++str);
+                               *s++ += (char)deoct(*++str);
                        }
 
                        /* Skip the final char */
@@ -1322,7 +1318,7 @@ static bool trigger_ascii_to_text(char **bufptr, cptr *strptr)
                switch(ch)
                {
                case '&':
-                       while ((tmp = my_strchr(macro_modifier_chr, *str)))
+                       while ((tmp = my_strchr(macro_modifier_chr, *str)) != 0)
                        {
                                j = (int)(tmp - macro_modifier_chr);
                                tmp = macro_modifier_name[j];
@@ -1598,15 +1594,15 @@ static sint macro_find_ready(cptr pat)
  * Add a macro definition (or redefinition).
  *
  * We should use "act == NULL" to "remove" a macro, but this might make it
- * impossible to save the "removal" of a macro definition.  XXX XXX XXX
+ * impossible to save the "removal" of a macro definition.  
  *
  * We should consider refusing to allow macros which contain existing macros,
  * or which are contained in existing macros, because this would simplify the
- * macro analysis code.  XXX XXX XXX
+ * macro analysis code.  
  *
  * We should consider removing the "command macro" crap, and replacing it
  * with some kind of "powerful keymap" ability, but this might make it hard
- * to change the "roguelike" option from inside the game.  XXX XXX XXX
+ * to change the "roguelike" option from inside the game.  
  */
 errr macro_add(cptr pat, cptr act)
 {
@@ -1760,7 +1756,7 @@ void select_floor_music(void)
                return;
        }
 
-       for(i = 0; i < max_quests; i++)
+       for(i = 0; i < max_q_idx; i++)
        { // TODO マクロで類似条件を統合すること
                if(quest[i].status == QUEST_STATUS_TAKEN &&
                        (quest[i].type == QUEST_TYPE_KILL_LEVEL || quest[i].type == QUEST_TYPE_RANDOM) &&
@@ -1826,7 +1822,7 @@ void select_floor_music(void)
  * Only 500 (0+1+2+...+29+30) milliseconds may elapse between each key in
  * the macro trigger sequence.  If a key sequence forms the "prefix" of a
  * macro trigger, 500 milliseconds must pass before the key sequence is
- * known not to be that macro trigger.  XXX XXX XXX
+ * known not to be that macro trigger.  
  */
 static char inkey_aux(void)
 {
@@ -2005,7 +2001,7 @@ static void forget_macro_action(void)
 
 
 /*
- * Mega-Hack -- special "inkey_next" pointer.  XXX XXX XXX
+ * Mega-Hack -- special "inkey_next" pointer.  
  *
  * This special pointer allows a sequence of keys to be "inserted" into
  * the stream of keys returned by "inkey()".  This key sequence will not
@@ -2018,7 +2014,7 @@ static cptr inkey_next = NULL;
 #ifdef ALLOW_BORG
 
 /*
- * Mega-Hack -- special "inkey_hack" hook.  XXX XXX XXX
+ * Mega-Hack -- special "inkey_hack" hook.  
  *
  * This special function hook allows the "Borg" (see elsewhere) to take
  * control of the "inkey()" function, and substitute in fake keypresses.
@@ -2205,11 +2201,9 @@ char inkey(void)
                                /* Wait for (and remove) a pending key */
                                if (0 == Term_inkey(&ch, TRUE, TRUE))
                                {
-                                       /* Done */
                                        break;
                                }
 
-                               /* Oops */
                                break;
                        }
 
@@ -2219,7 +2213,6 @@ char inkey(void)
                                /* Check for (and remove) a pending key */
                                if (0 == Term_inkey(&ch, FALSE, TRUE))
                                {
-                                       /* Done */
                                        break;
                                }
 
@@ -2237,7 +2230,6 @@ char inkey(void)
                                }
                        }
 
-                       /* Done */
                        break;
                }
 
@@ -2351,9 +2343,9 @@ void quark_init(void)
 /*
  * Add a new "quark" to the set of quarks.
  */
-s16b quark_add(cptr str)
+u16b quark_add(cptr str)
 {
-       int i;
+       u16b i;
 
        /* Look for an existing quark */
        for (i = 1; i < quark__num; i++)
@@ -2379,7 +2371,7 @@ s16b quark_add(cptr str)
 /*
  * This function looks up a quark
  */
-cptr quark_str(s16b i)
+cptr quark_str(STR_OFFSET i)
 {
        cptr q;
 
@@ -2477,7 +2469,8 @@ cptr message_str(int age)
  */
 void message_add(cptr str)
 {
-       int i, k, x, m, n;
+       u32b i, n;
+       int k, x, m;
 
        char u[4096];
        char splitted1[81];
@@ -2592,7 +2585,6 @@ void message_add(cptr str)
                        now_message++;
                }
 
-               /* Done */
                break;
        }
 
@@ -2815,13 +2807,13 @@ static void msg_flush(int x)
  * The global "msg_flag" variable can be cleared to tell us to
  * "erase" any "pending" messages still on the screen.
  *
- * XXX XXX XXX Note that we must be very careful about using the
+ * Note that we must be very careful about using the
  * "msg_print()" functions without explicitly calling the special
  * "msg_print(NULL)" function, since this may result in the loss
  * of information if the screen is cleared, or if anything is
  * displayed on the top line.
  *
- * XXX XXX XXX Note that "msg_print(NULL)" will clear the top line
+ * Note that "msg_print(NULL)" will clear the top line
  * even if no messages are pending.  This is probably a hack.
  */
 void msg_print(cptr msg)
@@ -2869,11 +2861,11 @@ void msg_print(cptr msg)
        }
        else
        {
-               sprintf(buf, ("T:%d - %s"), turn, msg);
+               sprintf(buf, ("T:%d - %s"), (int)turn, msg);
        }
 
        /* New Message Length */
-       n = (buf ? strlen(buf) : 0);
+       n = strlen(buf);
 
        /* Memorize the message */
        if (character_generated) message_add(buf);
@@ -2958,7 +2950,6 @@ void msg_print(cptr msg)
        /* Memorize the tail */
        /* if (character_generated) message_add(t); */
 
-       /* Window stuff */
        p_ptr->window |= (PW_MESSAGE);
        window_stuff();
 
@@ -3093,7 +3084,7 @@ void msg_format_wizard(int cheat_type, cptr fmt, ...)
  * At the given location, using the given attribute, if allowed,
  * add the given string.  Do not clear the line.
  */
-void c_put_str(byte attr, cptr str, int row, int col)
+void c_put_str(TERM_COLOR attr, cptr str, int row, int col)
 {
        /* Position cursor, Dump the attr/text */
        Term_putstr(col, row, -1, attr, str);
@@ -3208,7 +3199,7 @@ void c_roff(byte a, cptr str)
                {
                        int i, n = 0;
 
-                       byte av[256];
+                       TERM_COLOR av[256];
                        char cv[256];
 
                        /* Wrap word */
@@ -3621,7 +3612,7 @@ bool get_string(cptr prompt, char *buf, int len)
 {
        bool res;
 
-       /* Paranoia XXX XXX XXX */
+       /* Paranoia */
        msg_print(NULL);
 
        /* Display prompt */
@@ -3658,7 +3649,7 @@ bool get_check(cptr prompt)
  * mode & CHECK_NO_HISTORY  : no message_add
  * mode & CHECK_DEFAULT_Y   : accept any key as y, except n and Esc.
  */
-bool get_check_strict(cptr prompt, int mode)
+bool get_check_strict(cptr prompt, BIT_FLAGS mode)
 {
        int i;
        char buf[80];
@@ -3671,7 +3662,7 @@ bool get_check_strict(cptr prompt, int mode)
                num_more = 0;
        }
 
-       /* Paranoia XXX XXX XXX */
+       /* Paranoia */
        msg_print(NULL);
 
        if (!rogue_like_commands)
@@ -3773,7 +3764,7 @@ bool get_check_strict(cptr prompt, int mode)
  */
 bool get_com(cptr prompt, char *command, bool z_escape)
 {
-       /* Paranoia XXX XXX XXX */
+       /* Paranoia */
        msg_print(NULL);
 
        /* Display a prompt */
@@ -3802,12 +3793,13 @@ bool get_com(cptr prompt, char *command, bool z_escape)
  *
  * Hack -- allow "command_arg" to specify a quantity
  */
-s16b get_quantity(cptr prompt, int max)
+QUANTITY get_quantity(cptr prompt, QUANTITY max)
 {
-       bool res;
-       int amt;
+       bool res, result;
+       QUANTITY amt;
        char tmp[80];
        char buf[80];
+       COMMAND_CODE code;
 
 
        /* Use "command_arg" */
@@ -3826,10 +3818,10 @@ s16b get_quantity(cptr prompt, int max)
                return (amt);
        }
 
-#ifdef ALLOW_REPEAT /* TNB */
-
        /* Get the item index */
-       if ((max != 1) && repeat_pull(&amt))
+       result = repeat_pull(&code);
+       amt = (QUANTITY)code;
+       if ((max != 1) && result)
        {
                /* Enforce the maximum */
                if (amt > max) amt = max;
@@ -3841,8 +3833,6 @@ s16b get_quantity(cptr prompt, int max)
                return (amt);
        }
 
-#endif /* ALLOW_REPEAT -- TNB */
-
        /* Build a prompt if needed */
        if (!prompt)
        {
@@ -3853,7 +3843,7 @@ s16b get_quantity(cptr prompt, int max)
                prompt = tmp;
        }
 
-       /* Paranoia XXX XXX XXX */
+       /* Paranoia */
        msg_print(NULL);
 
        /* Display prompt */
@@ -3878,7 +3868,7 @@ s16b get_quantity(cptr prompt, int max)
        if (!res) return 0;
 
        /* Extract a number */
-       amt = atoi(buf);
+       amt = (COMMAND_CODE)atoi(buf);
 
        /* A letter means "all" */
        if (isalpha(buf[0])) amt = max;
@@ -3889,11 +3879,7 @@ s16b get_quantity(cptr prompt, int max)
        /* Enforce the minimum */
        if (amt < 0) amt = 0;
 
-#ifdef ALLOW_REPEAT /* TNB */
-
-       if (amt) repeat_push(amt);
-
-#endif /* ALLOW_REPEAT -- TNB */
+       if (amt) repeat_push((COMMAND_CODE)amt);
 
        /* Return the result */
        return (amt);
@@ -3901,7 +3887,7 @@ s16b get_quantity(cptr prompt, int max)
 
 
 /*
- * Pause for user response XXX XXX XXX
+ * Pause for user response 
  */
 void pause_line(int row)
 {
@@ -4398,13 +4384,13 @@ static char inkey_from_menu(void)
  * Note that this command is used both in the dungeon and in
  * stores, and must be careful to work in both situations.
  *
- * Note that "p_ptr->command_new" may not work any more.  XXX XXX XXX
+ * Note that "p_ptr->command_new" may not work any more.  
  */
 void request_command(int shopping)
 {
        int i;
 
-       char cmd;
+       s16b cmd;
        int mode;
 
        cptr act;
@@ -4478,7 +4464,7 @@ void request_command(int shopping)
                /* Command Count */
                if (cmd == '0')
                {
-                       int old_arg = command_arg;
+                       COMMAND_ARG old_arg = command_arg;
 
                        /* Reset */
                        command_arg = 0;
@@ -4612,7 +4598,6 @@ void request_command(int shopping)
                /* Use command */
                command_cmd = (byte)cmd;
 
-               /* Done */
                break;
        }
 
@@ -4620,7 +4605,7 @@ void request_command(int shopping)
        if (always_repeat && (command_arg <= 0))
        {
                /* Hack -- auto repeat certain commands */
-               if (my_strchr("TBDoc+", command_cmd))
+               if (my_strchr("TBDoc+", (char)command_cmd))
                {
                        /* Repeat 99 times */
                        command_arg = 99;
@@ -4813,7 +4798,7 @@ int get_keymap_dir(char ch)
        }
        else
        {
-               int mode;
+               BIT_FLAGS mode;
                cptr act, s;
 
                /* Roguelike */
@@ -4851,8 +4836,6 @@ int get_keymap_dir(char ch)
 }
 
 
-#ifdef ALLOW_REPEAT /* TNB */
-
 #define REPEAT_MAX             20
 
 /* Number of chars saved */
@@ -4862,10 +4845,10 @@ static int repeat__cnt = 0;
 static int repeat__idx = 0;
 
 /* Saved "stuff" */
-static int repeat__key[REPEAT_MAX];
+static COMMAND_CODE repeat__key[REPEAT_MAX];
 
 
-void repeat_push(IDX what)
+void repeat_push(COMMAND_CODE what)
 {
        /* Too many keys */
        if (repeat__cnt == REPEAT_MAX) return;
@@ -4878,7 +4861,7 @@ void repeat_push(IDX what)
 }
 
 
-bool repeat_pull(IDX *what)
+bool repeat_pull(COMMAND_CODE *what)
 {
        /* All out of keys */
        if (repeat__idx == repeat__cnt) return (FALSE);
@@ -4892,7 +4875,7 @@ bool repeat_pull(IDX *what)
 
 void repeat_check(void)
 {
-       int             what;
+       COMMAND_CODE what;
 
        /* Ignore some commands */
        if (command_cmd == ESCAPE) return;
@@ -4928,8 +4911,6 @@ void repeat_check(void)
        }
 }
 
-#endif /* ALLOW_REPEAT -- TNB */
-
 
 #ifdef SORT_R_INFO
 
@@ -5453,7 +5434,7 @@ void str_tolower(char *str)
                        continue;
                }
 #endif
-               *str = tolower(*str);
+               *str = (char)tolower(*str);
        }
 }