From 5f8e4f754bdf040f92f97cb1b4332e6d4508ae9a Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 8 Mar 2020 00:13:36 +0900 Subject: [PATCH] [Refactor] #40030 Moved save_old_race_flags() from monster-process.c to monster-util.c/h --- src/monster-process.c | 34 +--------------------------------- src/monster/monster-object.c | 9 +++------ src/monster/monster-util.c | 30 ++++++++++++++++++++++++++++++ src/monster/monster-util.h | 1 + 4 files changed, 35 insertions(+), 39 deletions(-) diff --git a/src/monster-process.c b/src/monster-process.c index 31cb620ea..ae9b84f3b 100644 --- a/src/monster-process.c +++ b/src/monster-process.c @@ -87,7 +87,6 @@ void update_player_type(player_type *target_ptr, turn_flags *turn_flags_ptr, mon void update_monster_race_flags(player_type *target_ptr, turn_flags *turn_flags_ptr, monster_type *m_ptr); bool process_monster_fear(player_type *target_ptr, turn_flags *turn_flags_ptr, MONSTER_IDX m_idx); -void save_old_race_flags(player_type *target_ptr, old_race_flags *old_race_flags_ptr); void sweep_monster_process(player_type *target_ptr); bool decide_process_continue(player_type *target_ptr, monster_type *m_ptr); SPEED decide_monster_speed(player_type *target_ptr, monster_type *m_ptr, int monster_number); @@ -330,7 +329,6 @@ static bool get_moves_aux2(player_type *target_ptr, MONSTER_IDX m_idx, POSITION /*! - * todo まだ分割せず放置 (このままいくと3000行を超えかねない) * @brief モンスターがプレイヤーに向けて接近することが可能なマスを走査する / * Choose the "best" direction for "flowing" * @param m_idx モンスターの参照ID @@ -2270,7 +2268,7 @@ void process_monsters(player_type *target_ptr) floor_ptr->monster_noise = FALSE; MONRACE_IDX old_monster_race_idx = target_ptr->monster_race_idx; - save_old_race_flags(target_ptr, old_race_flags_ptr); + save_old_race_flags(target_ptr->monster_race_idx, old_race_flags_ptr); sweep_monster_process(target_ptr); hack_m_idx = 0; @@ -2282,36 +2280,6 @@ void process_monsters(player_type *target_ptr) /*! - * @brief 古いモンスター情報の保存 - * @param target_ptr プレーヤーへの参照ポインタ - * @param old_race_flags_ptr モンスターフラグへの参照ポインタ - * @return なし - */ -void save_old_race_flags(player_type *target_ptr, old_race_flags *old_race_flags_ptr) -{ - if (target_ptr->monster_race_idx == 0) return; - - monster_race *r_ptr; - r_ptr = &r_info[target_ptr->monster_race_idx]; - - old_race_flags_ptr->old_r_flags1 = r_ptr->r_flags1; - old_race_flags_ptr->old_r_flags2 = r_ptr->r_flags2; - old_race_flags_ptr->old_r_flags3 = r_ptr->r_flags3; - old_race_flags_ptr->old_r_flags4 = r_ptr->r_flags4; - old_race_flags_ptr->old_r_flags5 = r_ptr->r_flags5; - old_race_flags_ptr->old_r_flags6 = r_ptr->r_flags6; - old_race_flags_ptr->old_r_flagsr = r_ptr->r_flagsr; - - old_race_flags_ptr->old_r_blows0 = r_ptr->r_blows[0]; - old_race_flags_ptr->old_r_blows1 = r_ptr->r_blows[1]; - old_race_flags_ptr->old_r_blows2 = r_ptr->r_blows[2]; - old_race_flags_ptr->old_r_blows3 = r_ptr->r_blows[3]; - - old_race_flags_ptr->old_r_cast_spell = r_ptr->r_cast_spell; -} - - -/*! * @brief フロア内のモンスターについてターン終了時の処理を繰り返す * @param target_ptr プレーヤーへの参照ポインタ */ diff --git a/src/monster/monster-object.c b/src/monster/monster-object.c index 05d8c6a4f..3840ddcf8 100644 --- a/src/monster/monster-object.c +++ b/src/monster/monster-object.c @@ -1,10 +1,7 @@ /*! - * @brief monster-processのための構造体群初期化処理と共通性の極めて高い処理 + * @brief モンスターが移動した結果、床のアイテムに重なった時の処理 * @date 2020/03/07 * @author Hourier - * @details - * 概ね、player_type 構造体が引数でない場合はここへ移動させることを検討しても良い - * 引数に入っていたらここには移動させないこと */ #include "monster/monster-object.h" @@ -120,9 +117,9 @@ void update_object_by_monster_movement(player_type *target_ptr, turn_flags *turn grid_type *g_ptr; g_ptr = &target_ptr->current_floor_ptr->grid_array[ny][nx]; - OBJECT_IDX this_o_idx, next_o_idx; turn_flags_ptr->do_take = (r_ptr->flags2 & RF2_TAKE_ITEM) != 0; - for (this_o_idx = g_ptr->o_idx; this_o_idx; this_o_idx = next_o_idx) + OBJECT_IDX next_o_idx; + for (OBJECT_IDX this_o_idx = g_ptr->o_idx; this_o_idx > 0; this_o_idx = next_o_idx) { BIT_FLAGS flgs[TR_FLAG_SIZE], flg2 = 0L, flg3 = 0L, flgr = 0L; GAME_TEXT m_name[MAX_NLEN], o_name[MAX_NLEN]; diff --git a/src/monster/monster-util.c b/src/monster/monster-util.c index a3b320f6a..d67ac1d66 100644 --- a/src/monster/monster-util.c +++ b/src/monster/monster-util.c @@ -130,3 +130,33 @@ void store_enemy_approch_direction(int *mm, POSITION y, POSITION x) mm[2] = 2; } } + + +/*! + * @brief 古いモンスター情報の保存 + * @param monster_race_idx モンスターID + * @param old_race_flags_ptr モンスターフラグへの参照ポインタ + * @return なし + */ +void save_old_race_flags(MONRACE_IDX monster_race_idx, old_race_flags *old_race_flags_ptr) +{ + if (monster_race_idx == 0) return; + + monster_race *r_ptr; + r_ptr = &r_info[monster_race_idx]; + + old_race_flags_ptr->old_r_flags1 = r_ptr->r_flags1; + old_race_flags_ptr->old_r_flags2 = r_ptr->r_flags2; + old_race_flags_ptr->old_r_flags3 = r_ptr->r_flags3; + old_race_flags_ptr->old_r_flags4 = r_ptr->r_flags4; + old_race_flags_ptr->old_r_flags5 = r_ptr->r_flags5; + old_race_flags_ptr->old_r_flags6 = r_ptr->r_flags6; + old_race_flags_ptr->old_r_flagsr = r_ptr->r_flagsr; + + old_race_flags_ptr->old_r_blows0 = r_ptr->r_blows[0]; + old_race_flags_ptr->old_r_blows1 = r_ptr->r_blows[1]; + old_race_flags_ptr->old_r_blows2 = r_ptr->r_blows[2]; + old_race_flags_ptr->old_r_blows3 = r_ptr->r_blows[3]; + + old_race_flags_ptr->old_r_cast_spell = r_ptr->r_cast_spell; +} diff --git a/src/monster/monster-util.h b/src/monster/monster-util.h index 763728097..0678e625e 100644 --- a/src/monster/monster-util.h +++ b/src/monster/monster-util.h @@ -53,3 +53,4 @@ old_race_flags *init_old_race_flags(old_race_flags *old_race_flags_ptr); coordinate_candidate init_coordinate_candidate(void); void store_enemy_approch_direction(int *mm, POSITION y, POSITION x); +void save_old_race_flags(MONRACE_IDX monster_race_idx, old_race_flags *old_race_flags_ptr); -- 2.11.0