/*!
* @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;
}
};
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 {
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);
*/
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;
}