From c9201c55fca78bb9fab13a89fcec46c282c4adb7 Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 26 Jul 2020 12:41:50 +0900 Subject: [PATCH] [Refactor] #40571 Made eg_type for the preparation to divide examine_grid() --- src/target/target-describer.c | 147 ++++++++++++++++++++++++------------------ 1 file changed, 83 insertions(+), 64 deletions(-) diff --git a/src/target/target-describer.c b/src/target/target-describer.c index 7be766e83..f93f9e973 100644 --- a/src/target/target-describer.c +++ b/src/target/target-describer.c @@ -38,6 +38,28 @@ 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); -- 2.11.0