OSDN Git Service

[Refactor] #40571 Made eg_type for the preparation to divide examine_grid()
authorHourier <hourier@users.sourceforge.jp>
Sun, 26 Jul 2020 03:41:50 +0000 (12:41 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 26 Jul 2020 08:04:23 +0000 (17:04 +0900)
src/target/target-describer.c

index 7be766e..f93f9e9 100644 (file)
 
 bool show_gold_on_floor = FALSE;
 
+// Examine grid
+typedef struct eg_type {
+    concptr s1;
+    concptr s2;
+    concptr s3;
+    concptr x_info;
+    OBJECT_IDX floor_list[23];
+    ITEM_NUMBER floor_num;
+    OBJECT_IDX next_o_idx;
+} eg_type;
+
+static eg_type *initialize_eg_type(eg_type *eg_ptr)
+{
+    eg_ptr->s1 = "";
+    eg_ptr->s2 = "";
+    eg_ptr->s3 = "";
+    eg_ptr->x_info = "";
+    eg_ptr->floor_num = 0;
+    eg_ptr->next_o_idx = 0;
+    return eg_ptr;
+}
+
 /*
  * Evaluate number of kill needed to gain level
  */
@@ -87,43 +109,38 @@ static void evaluate_monster_exp(player_type *creature_ptr, char *buf, monster_t
  */
 char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type mode, concptr info)
 {
-    OBJECT_IDX next_o_idx = 0;
-    concptr s1 = "";
-    concptr s2 = "";
-    concptr s3 = "";
-    concptr x_info = "";
+    eg_type tmp_eg;
+    eg_type *eg_ptr = initialize_eg_type(&tmp_eg);
     bool boring = TRUE;
     FEAT_IDX feat;
     feature_type *f_ptr;
     char query = '\001';
     char out_val[MAX_NLEN + 80];
-    OBJECT_IDX floor_list[23];
-    ITEM_NUMBER floor_num = 0;
     if (easy_floor) {
-        floor_num = scan_floor_items(subject_ptr, floor_list, y, x, 0x02, 0);
-        if (floor_num)
-            x_info = _("x物 ", "x,");
+        eg_ptr->floor_num = scan_floor_items(subject_ptr, eg_ptr->floor_list, y, x, 0x02, 0);
+        if (eg_ptr->floor_num)
+            eg_ptr->x_info = _("x物 ", "x,");
     }
 
     if (player_bold(subject_ptr, y, x)) {
 #ifdef JP
-        s1 = "あなたは";
-        s2 = "の上";
-        s3 = "にいる";
+        eg_ptr->s1 = "あなたは";
+        eg_ptr->s2 = "の上";
+        eg_ptr->s3 = "にいる";
 #else
-        s1 = "You are ";
-        s2 = "on ";
+        eg_ptr->s1 = "You are ";
+        eg_ptr->s2 = "on ";
 #endif
     } else {
-        s1 = _("ターゲット:", "Target:");
+        eg_ptr->s1 = _("ターゲット:", "Target:");
     }
 
     if (subject_ptr->image) {
         concptr name = _("何か奇妙な物", "something strange");
 #ifdef JP
-        sprintf(out_val, "%s%s%s%s [%s]", s1, name, s2, s3, info);
+        sprintf(out_val, "%s%s%s%s [%s]", eg_ptr->s1, name, eg_ptr->s2, eg_ptr->s3, info);
 #else
-        sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, name, info);
+        sprintf(out_val, "%s%s%s%s [%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, name, info);
 #endif
         prt(out_val, 0, 0);
         move_cursor_relative(y, x);
@@ -149,7 +166,7 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
             if (recall) {
                 screen_save();
                 screen_roff(subject_ptr, m_ptr->ap_r_idx, 0);
-                term_addstr(-1, TERM_WHITE, format(_("  [r思 %s%s]", "  [r,%s%s]"), x_info, info));
+                term_addstr(-1, TERM_WHITE, format(_("  [r思 %s%s]", "  [r,%s%s]"), eg_ptr->x_info, info));
                 query = inkey();
                 screen_load();
                 if (query != 'r')
@@ -161,9 +178,11 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
 
             evaluate_monster_exp(subject_ptr, acount, m_ptr);
 #ifdef JP
-            sprintf(out_val, "[%s]%s%s(%s)%s%s [r思 %s%s]", acount, s1, m_name, look_mon_desc(m_ptr, 0x01), s2, s3, x_info, info);
+            sprintf(
+                out_val, "[%s]%s%s(%s)%s%s [r思 %s%s]", acount, eg_ptr->s1, m_name, look_mon_desc(m_ptr, 0x01), eg_ptr->s2, eg_ptr->s3, eg_ptr->x_info, info);
 #else
-            sprintf(out_val, "[%s]%s%s%s%s(%s) [r, %s%s]", acount, s1, s2, s3, m_name, look_mon_desc(m_ptr, 0x01), x_info, info);
+            sprintf(
+                out_val, "[%s]%s%s%s%s(%s) [r, %s%s]", acount, eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, m_name, look_mon_desc(m_ptr, 0x01), eg_ptr->x_info, info);
 #endif
             prt(out_val, 0, 0);
             move_cursor_relative(y, x);
@@ -180,29 +199,29 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
         if ((query == ' ') && !(mode & TARGET_LOOK))
             return query;
 
-        s1 = _("それは", "It is ");
+        eg_ptr->s1 = _("それは", "It is ");
         if (ap_r_ptr->flags1 & RF1_FEMALE)
-            s1 = _("彼女は", "She is ");
+            eg_ptr->s1 = _("彼女は", "She is ");
         else if (ap_r_ptr->flags1 & RF1_MALE)
-            s1 = _("彼は", "He is ");
+            eg_ptr->s1 = _("彼は", "He is ");
 
 #ifdef JP
-        s2 = "を";
-        s3 = "持っている";
+        eg_ptr->s2 = "を";
+        eg_ptr->s3 = "持っている";
 #else
-        s2 = "carrying ";
+        eg_ptr->s2 = "carrying ";
 #endif
 
-        for (OBJECT_IDX this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = next_o_idx) {
+        for (OBJECT_IDX this_o_idx = m_ptr->hold_o_idx; this_o_idx; this_o_idx = eg_ptr->next_o_idx) {
             GAME_TEXT o_name[MAX_NLEN];
             object_type *o_ptr;
             o_ptr = &subject_ptr->current_floor_ptr->o_list[this_o_idx];
-            next_o_idx = o_ptr->next_o_idx;
+            eg_ptr->next_o_idx = o_ptr->next_o_idx;
             describe_flavor(subject_ptr, o_name, o_ptr, 0);
 #ifdef JP
-            sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info);
+            sprintf(out_val, "%s%s%s%s[%s]", eg_ptr->s1, o_name, eg_ptr->s2, eg_ptr->s3, info);
 #else
-            sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info);
+            sprintf(out_val, "%s%s%s%s [%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, o_name, info);
 #endif
             prt(out_val, 0, 0);
             move_cursor_relative(y, x);
@@ -213,29 +232,29 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
             if ((query == ' ') && !(mode & TARGET_LOOK))
                 return query;
 
-            s2 = _("をまた", "also carrying ");
+            eg_ptr->s2 = _("をまた", "also carrying ");
         }
 
 #ifdef JP
-        s2 = "の上";
-        s3 = "にいる";
+        eg_ptr->s2 = "の上";
+        eg_ptr->s3 = "にいる";
 #else
-        s2 = "on ";
+        eg_ptr->s2 = "on ";
 #endif
     }
 
-    if (floor_num) {
+    if (eg_ptr->floor_num != 0) {
         int min_width = 0;
         while (TRUE) {
-            if (floor_num == 1) {
+            if (eg_ptr->floor_num == 1) {
                 GAME_TEXT o_name[MAX_NLEN];
                 object_type *o_ptr;
-                o_ptr = &subject_ptr->current_floor_ptr->o_list[floor_list[0]];
+                o_ptr = &subject_ptr->current_floor_ptr->o_list[eg_ptr->floor_list[0]];
                 describe_flavor(subject_ptr, o_name, o_ptr, 0);
 #ifdef JP
-                sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info);
+                sprintf(out_val, "%s%s%s%s[%s]", eg_ptr->s1, o_name, eg_ptr->s2, eg_ptr->s3, info);
 #else
-                sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info);
+                sprintf(out_val, "%s%s%s%s [%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, o_name, info);
 #endif
                 prt(out_val, 0, 0);
                 move_cursor_relative(y, x);
@@ -245,9 +264,9 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
 
             if (boring) {
 #ifdef JP
-                sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]", s1, (int)floor_num, s2, s3, info);
+                sprintf(out_val, "%s %d個のアイテム%s%s ['x'で一覧, %s]", eg_ptr->s1, (int)eg_ptr->floor_num, eg_ptr->s2, eg_ptr->s3, info);
 #else
-                sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", s1, s2, s3, (int)floor_num, info);
+                sprintf(out_val, "%s%s%sa pile of %d items [x,%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, (int)eg_ptr->floor_num, info);
 #endif
                 prt(out_val, 0, 0);
                 move_cursor_relative(y, x);
@@ -264,9 +283,9 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
                 (void)show_floor_items(subject_ptr, 0, y, x, &min_width, 0);
                 show_gold_on_floor = FALSE;
 #ifdef JP
-                sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]", s1, (int)floor_num, s2, s3, info);
+                sprintf(out_val, "%s %d個のアイテム%s%s [Enterで次へ, %s]", eg_ptr->s1, (int)eg_ptr->floor_num, eg_ptr->s2, eg_ptr->s3, info);
 #else
-                sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", s1, s2, s3, (int)floor_num, info);
+                sprintf(out_val, "%s%s%sa pile of %d items [Enter,%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, (int)eg_ptr->floor_num, info);
 #endif
                 prt(out_val, 0, 0);
                 query = inkey();
@@ -288,18 +307,18 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
         }
     }
 
-    for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) {
+    for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = eg_ptr->next_o_idx) {
         object_type *o_ptr;
         o_ptr = &subject_ptr->current_floor_ptr->o_list[this_o_idx];
-        next_o_idx = o_ptr->next_o_idx;
+        eg_ptr->next_o_idx = o_ptr->next_o_idx;
         if (o_ptr->marked & OM_FOUND) {
             GAME_TEXT o_name[MAX_NLEN];
             boring = FALSE;
             describe_flavor(subject_ptr, o_name, o_ptr, 0);
 #ifdef JP
-            sprintf(out_val, "%s%s%s%s[%s]", s1, o_name, s2, s3, info);
+            sprintf(out_val, "%s%s%s%s[%s]", eg_ptr->s1, o_name, eg_ptr->s2, eg_ptr->s3, info);
 #else
-            sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, o_name, info);
+            sprintf(out_val, "%s%s%s%s [%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, o_name, info);
 #endif
             prt(out_val, 0, 0);
             move_cursor_relative(y, x);
@@ -310,15 +329,15 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
             if ((query == ' ') && !(mode & TARGET_LOOK))
                 return query;
 
-            s1 = _("それは", "It is ");
+            eg_ptr->s1 = _("それは", "It is ");
             if (o_ptr->number != 1)
-                s1 = _("それらは", "They are ");
+                eg_ptr->s1 = _("それらは", "They are ");
 
 #ifdef JP
-            s2 = "の上";
-            s3 = "に見える";
+            eg_ptr->s2 = "の上";
+            eg_ptr->s3 = "に見える";
 #else
-            s2 = "on ";
+            eg_ptr->s2 = "on ";
 #endif
         }
     }
@@ -359,21 +378,21 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
         name = f_name + f_ptr->name;
     }
 
-    if (*s2
+    if (*eg_ptr->s2
         && ((!have_flag(f_ptr->flags, FF_MOVE) && !have_flag(f_ptr->flags, FF_CAN_FLY))
             || (!have_flag(f_ptr->flags, FF_LOS) && !have_flag(f_ptr->flags, FF_TREE)) || have_flag(f_ptr->flags, FF_TOWN))) {
-        s2 = _("の中", "in ");
+        eg_ptr->s2 = _("の中", "in ");
     }
 
     if (have_flag(f_ptr->flags, FF_STORE) || have_flag(f_ptr->flags, FF_QUEST_ENTER)
         || (have_flag(f_ptr->flags, FF_BLDG) && !subject_ptr->current_floor_ptr->inside_arena) || have_flag(f_ptr->flags, FF_ENTRANCE))
-        s2 = _("の入口", "");
+        eg_ptr->s2 = _("の入口", "");
 #ifdef JP
 #else
     else if (have_flag(f_ptr->flags, FF_FLOOR) || have_flag(f_ptr->flags, FF_TOWN) || have_flag(f_ptr->flags, FF_SHALLOW) || have_flag(f_ptr->flags, FF_DEEP))
-        s3 = "";
+        eg_ptr->s3 = "";
     else
-        s3 = (is_a_vowel(name[0])) ? "an " : "a ";
+        eg_ptr->s3 = (is_a_vowel(name[0])) ? "an " : "a ";
 #endif
 
     if (current_world_ptr->wizard) {
@@ -384,17 +403,17 @@ char examine_grid(player_type *subject_ptr, POSITION y, POSITION x, target_type
             sprintf(f_idx_str, "%d", g_ptr->feat);
 
 #ifdef JP
-        sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", s1, name, s2, s3, info, (unsigned int)g_ptr->info, f_idx_str, g_ptr->dist, g_ptr->cost,
-            g_ptr->when, (int)y, (int)x, travel.cost[y][x]);
+        sprintf(out_val, "%s%s%s%s[%s] %x %s %d %d %d (%d,%d) %d", eg_ptr->s1, name, eg_ptr->s2, eg_ptr->s3, info, (unsigned int)g_ptr->info, f_idx_str,
+            g_ptr->dist, g_ptr->cost, g_ptr->when, (int)y, (int)x, travel.cost[y][x]);
 #else
-        sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", s1, s2, s3, name, info, g_ptr->info, f_idx_str, g_ptr->dist, g_ptr->cost, g_ptr->when, (int)y,
-            (int)x);
+        sprintf(out_val, "%s%s%s%s [%s] %x %s %d %d %d (%d,%d)", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, name, info, g_ptr->info, f_idx_str, g_ptr->dist,
+            g_ptr->cost, g_ptr->when, (int)y, (int)x);
 #endif
     } else
 #ifdef JP
-        sprintf(out_val, "%s%s%s%s[%s]", s1, name, s2, s3, info);
+        sprintf(out_val, "%s%s%s%s[%s]", eg_ptr->s1, name, eg_ptr->s2, eg_ptr->s3, info);
 #else
-        sprintf(out_val, "%s%s%s%s [%s]", s1, s2, s3, name, info);
+        sprintf(out_val, "%s%s%s%s [%s]", eg_ptr->s1, eg_ptr->s2, eg_ptr->s3, name, info);
 #endif
 
     prt(out_val, 0, 0);