OSDN Git Service

[Refactor] #3381 save_old_race_flags() をold_race_flags のコンストラクタに繰り込んだ
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 10 Jun 2023 03:01:50 +0000 (12:01 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 10 Jun 2023 13:36:34 +0000 (22:36 +0900)
src/monster/monster-processor-util.cpp
src/monster/monster-processor-util.h
src/monster/monster-processor.cpp

index 4f485b3..f86a9cf 100644 (file)
@@ -256,32 +256,30 @@ void store_moves_val(int *mm, int y, int x)
 
 /*!
  * @brief 古いモンスター情報の保存
- * @param monster_race_idx モンスターID
- * @param old_race_flags_ptr モンスターフラグへの参照ポインタ
+ * @param monrace_idx モンスター種族ID
  */
-void save_old_race_flags(MonsterRaceId monster_race_idx, old_race_flags *old_race_flags_ptr)
+old_race_flags::old_race_flags(MonsterRaceId monrace_idx)
 {
-    if (!MonsterRace(monster_race_idx).is_valid()) {
+    if (!MonsterRace(monrace_idx).is_valid()) {
         return;
     }
 
-    MonsterRaceInfo *r_ptr;
-    r_ptr = &monraces_info[monster_race_idx];
+    const auto &monrace = monraces_info[monrace_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_resistance_flags = r_ptr->r_resistance_flags;
-    old_race_flags_ptr->old_r_ability_flags = r_ptr->r_ability_flags;
-    old_race_flags_ptr->old_r_behavior_flags = r_ptr->r_behavior_flags;
-    old_race_flags_ptr->old_r_kind_flags = r_ptr->r_kind_flags;
-    old_race_flags_ptr->old_r_drop_flags = r_ptr->r_drop_flags;
-    old_race_flags_ptr->old_r_feature_flags = r_ptr->r_feature_flags;
+    this->old_r_flags1 = monrace.r_flags1;
+    this->old_r_flags2 = monrace.r_flags2;
+    this->old_r_flags3 = monrace.r_flags3;
+    this->old_r_ability_flags = monrace.r_ability_flags;
+    this->old_r_behavior_flags = monrace.r_behavior_flags;
+    this->old_r_kind_flags = monrace.r_kind_flags;
+    this->old_r_resistance_flags = monrace.r_resistance_flags;
+    this->old_r_drop_flags = monrace.r_drop_flags;
+    this->old_r_feature_flags = monrace.r_feature_flags;
 
-    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];
+    this->old_r_blows0 = monrace.r_blows[0];
+    this->old_r_blows1 = monrace.r_blows[1];
+    this->old_r_blows2 = monrace.r_blows[2];
+    this->old_r_blows3 = monrace.r_blows[3];
 
-    old_race_flags_ptr->old_r_cast_spell = r_ptr->r_cast_spell;
+    this->old_r_cast_spell = monrace.r_cast_spell;
 }
index be5bd7e..71ed9ee 100644 (file)
@@ -37,25 +37,25 @@ struct turn_flags {
 };
 
 struct old_race_flags {
-    old_race_flags() = default;
+    old_race_flags(MonsterRaceId monrace_idx);
 
-    BIT_FLAGS old_r_flags1 = 0;
-    BIT_FLAGS old_r_flags2 = 0;
-    BIT_FLAGS old_r_flags3 = 0;
+    BIT_FLAGS old_r_flags1;
+    BIT_FLAGS old_r_flags2;
+    BIT_FLAGS old_r_flags3;
     BIT_FLAGS old_r_flagsr = 0;
-    EnumClassFlagGroup<MonsterAbilityType> old_r_ability_flags{};
-    EnumClassFlagGroup<MonsterBehaviorType> old_r_behavior_flags{};
-    EnumClassFlagGroup<MonsterKindType> old_r_kind_flags{};
-    EnumClassFlagGroup<MonsterResistanceType> old_r_resistance_flags{};
-    EnumClassFlagGroup<MonsterDropType> old_r_drop_flags{};
-    EnumClassFlagGroup<MonsterFeatureType> old_r_feature_flags{};
+    EnumClassFlagGroup<MonsterAbilityType> old_r_ability_flags;
+    EnumClassFlagGroup<MonsterBehaviorType> old_r_behavior_flags;
+    EnumClassFlagGroup<MonsterKindType> old_r_kind_flags;
+    EnumClassFlagGroup<MonsterResistanceType> old_r_resistance_flags;
+    EnumClassFlagGroup<MonsterDropType> old_r_drop_flags;
+    EnumClassFlagGroup<MonsterFeatureType> old_r_feature_flags;
 
-    byte old_r_blows0 = 0;
-    byte old_r_blows1 = 0;
-    byte old_r_blows2 = 0;
-    byte old_r_blows3 = 0;
+    byte old_r_blows0;
+    byte old_r_blows1;
+    byte old_r_blows2;
+    byte old_r_blows3;
 
-    byte old_r_cast_spell = 0;
+    byte old_r_cast_spell;
 };
 
 struct coordinate_candidate {
@@ -70,4 +70,3 @@ coordinate_candidate init_coordinate_candidate(void);
 
 void store_enemy_approch_direction(int *mm, POSITION y, POSITION x);
 void store_moves_val(int *mm, int y, int x);
-void save_old_race_flags(MonsterRaceId monster_race_idx, old_race_flags *old_race_flags_ptr);
index 30f0ef8..f15ce80 100644 (file)
@@ -570,14 +570,13 @@ bool process_monster_fear(PlayerType *player_ptr, turn_flags *turn_flags_ptr, MO
  */
 void process_monsters(PlayerType *player_ptr)
 {
-    old_race_flags tmp_flags;
+    const auto old_monrace_id = player_ptr->monster_race_idx;
+    old_race_flags tmp_flags(old_monrace_id);
     old_race_flags *old_race_flags_ptr = &tmp_flags;
     player_ptr->current_floor_ptr->monster_noise = false;
-    MonsterRaceId old_monster_race_idx = player_ptr->monster_race_idx;
-    save_old_race_flags(player_ptr->monster_race_idx, old_race_flags_ptr);
     sweep_monster_process(player_ptr);
     hack_m_idx = 0;
-    if (!MonsterRace(player_ptr->monster_race_idx).is_valid() || (player_ptr->monster_race_idx != old_monster_race_idx)) {
+    if (!MonsterRace(player_ptr->monster_race_idx).is_valid() || (player_ptr->monster_race_idx != old_monrace_id)) {
         return;
     }