OSDN Git Service

[Refactor] #3286 PlayerType::redraw に関わる処理を、RedrawingFlagsUpdaterに集約した
authorHourier <66951241+Hourier@users.noreply.github.com>
Thu, 4 May 2023 23:59:38 +0000 (08:59 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 20 May 2023 14:08:56 +0000 (23:08 +0900)
114 files changed:
src/birth/birth-stat.cpp
src/blue-magic/blue-magic-checker.cpp
src/cmd-action/cmd-hissatsu.cpp
src/cmd-action/cmd-mane.cpp
src/cmd-action/cmd-mind.cpp
src/cmd-action/cmd-move.cpp
src/cmd-action/cmd-open-close.cpp
src/cmd-action/cmd-others.cpp
src/cmd-action/cmd-pet.cpp
src/cmd-action/cmd-racial.cpp
src/cmd-action/cmd-spell.cpp
src/cmd-action/cmd-tunnel.cpp
src/cmd-building/cmd-building.cpp
src/cmd-io/cmd-floor.cpp
src/cmd-io/cmd-gameoption.cpp
src/cmd-io/cmd-process-screen.cpp
src/cmd-item/cmd-equipment.cpp
src/cmd-item/cmd-item.cpp
src/cmd-item/cmd-throw.cpp
src/cmd-visual/cmd-draw.cpp
src/combat/shoot.cpp
src/combat/slaying.cpp
src/core/disturbance.cpp
src/core/object-compressor.cpp
src/core/player-processor.cpp
src/core/stuff-handler.cpp
src/core/window-redrawer.cpp
src/dungeon/dungeon-processor.cpp
src/effect/effect-monster-oldies.cpp
src/effect/effect-monster-psi.cpp
src/effect/effect-monster-spirit.cpp
src/effect/effect-monster.cpp
src/effect/effect-player-resist-hurt.cpp
src/effect/effect-player-spirit.cpp
src/floor/floor-events.cpp
src/hpmp/hp-mp-processor.cpp
src/hpmp/hp-mp-regenerator.cpp
src/inventory/inventory-curse.cpp
src/inventory/player-inventory.cpp
src/io/cursor.cpp
src/io/input-key-processor.cpp
src/io/report.cpp
src/io/screen-util.cpp
src/market/bounty.cpp
src/melee/melee-postprocess.cpp
src/melee/melee-spell.cpp
src/melee/monster-attack-monster.cpp
src/mind/mind-blue-mage.cpp
src/mind/mind-elementalist.cpp
src/mind/mind-force-trainer.cpp
src/mind/mind-magic-resistance.cpp
src/mind/mind-mirror-master.cpp
src/mind/mind-monk.cpp
src/mind/mind-ninja.cpp
src/mind/mind-samurai.cpp
src/mind/mind-sniper.cpp
src/mind/mind-warrior-mage.cpp
src/monster-attack/monster-eating.cpp
src/monster-floor/monster-death.cpp
src/monster/monster-damage.cpp
src/monster/monster-status-setter.cpp
src/monster/monster-update.cpp
src/mspell/mspell-attack.cpp
src/mspell/mspell-dispel.cpp
src/mspell/mspell-status.cpp
src/mutation/mutation-processor.cpp
src/object-activation/activation-others.cpp
src/object-use/read/scroll-read-executor.cpp
src/pet/pet-fall-off.cpp
src/player-attack/attack-chaos-effect.cpp
src/player-base/player-class.cpp
src/player-status/player-basic-statistics.cpp
src/player/digestion-processor.cpp
src/player/player-damage.cpp
src/player/player-move.cpp
src/player/player-status.cpp
src/racial/racial-kutar.cpp
src/realm/realm-chaos.cpp
src/realm/realm-hex.cpp
src/realm/realm-hissatsu.cpp
src/realm/realm-song.cpp
src/specific-object/death-scythe.cpp
src/specific-object/stone-of-lore.cpp
src/spell-class/spells-mirror-master.cpp
src/spell-kind/earthquake.cpp
src/spell-kind/spells-fetcher.cpp
src/spell-kind/spells-floor.cpp
src/spell-kind/spells-genocide.cpp
src/spell-kind/spells-neighbor.cpp
src/spell-kind/spells-world.cpp
src/spell-realm/spells-chaos.cpp
src/spell-realm/spells-craft.cpp
src/spell-realm/spells-crusade.cpp
src/spell-realm/spells-demon.cpp
src/spell-realm/spells-hex.cpp
src/spell-realm/spells-song.cpp
src/spell-realm/spells-sorcery.cpp
src/spell/spells-status.cpp
src/status/action-setter.cpp
src/status/bad-status-setter.cpp
src/status/base-status.cpp
src/status/body-improvement.cpp
src/status/buff-setter.cpp
src/status/element-resistance.cpp
src/status/shape-changer.cpp
src/status/sight-setter.cpp
src/status/temporary-resistance.cpp
src/store/cmd-store.cpp
src/system/player-type-definition.h
src/target/grid-selector.cpp
src/target/target-checker.cpp
src/target/target-setter.cpp
src/wizard/wizard-special-process.cpp
src/world/world-movement-processor.cpp

index fe8f56a..1c7f314 100644 (file)
@@ -12,6 +12,7 @@
 #include "spell/spells-status.h"
 #include "sv-definition/sv-weapon-types.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include <array>
 
 namespace {
@@ -190,5 +191,5 @@ void get_max_stats(PlayerType *player_ptr)
     }
 
     player_ptr->knowledge &= ~(KNOW_STAT);
-    player_ptr->redraw |= (PR_ABILITY_SCORE);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
 }
index 20fcdec..439dba5 100644 (file)
@@ -22,6 +22,7 @@
 #include "status/experience.h"
 #include "system/angband.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "timed-effect/player-blindness.h"
 #include "timed-effect/player-confusion.h"
 #include "timed-effect/player-hallucination.h"
@@ -62,7 +63,7 @@ void learn_spell(PlayerType *player_ptr, MonsterAbilityType monspell)
         gain_exp(player_ptr, monster_power.level * monster_power.smana);
         sound(SOUND_STUDY);
         bluemage_data->new_magic_learned = true;
-        player_ptr->redraw |= PR_ACTION;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
     }
 }
 
index 4f4333b..84568ef 100644 (file)
@@ -350,15 +350,13 @@ void do_cmd_hissatsu(PlayerType *player_ptr)
     }
 
     PlayerEnergy(player_ptr).set_player_turn_energy(100);
-
-    /* Use some mana */
     player_ptr->csp -= spell.smana;
-
-    /* Limit */
     if (player_ptr->csp < 0) {
         player_ptr->csp = 0;
     }
-    player_ptr->redraw |= (PR_MP);
+
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     player_ptr->window_flags |= (PW_PLAYER | PW_SPELL);
 }
 
index 4a75413..5e6e89f 100644 (file)
@@ -59,6 +59,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/projection-path-calculator.h"
 #include "target/target-checker.h"
 #include "target/target-getter.h"
@@ -1287,12 +1288,10 @@ bool do_cmd_mane(PlayerType *player_ptr, bool baigaesi)
     }
 
     mane_data->mane_list.erase(std::next(mane_data->mane_list.begin(), n));
-
     PlayerEnergy(player_ptr).set_player_turn_energy(100);
-
-    player_ptr->redraw |= (PR_IMITATION);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::IMITATION);
     player_ptr->window_flags |= (PW_PLAYER);
     player_ptr->window_flags |= (PW_SPELL);
-
     return true;
 }
index 4a3520e..dd83620 100644 (file)
@@ -47,6 +47,7 @@
 #include "system/floor-type-definition.h"
 #include "system/grid-type-definition.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/screen-processor.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
@@ -374,7 +375,7 @@ static void process_hard_concentration(PlayerType *player_ptr, cm_type *cm_ptr)
 {
     if ((cm_ptr->use_mind == MindKindType::BERSERKER) || (cm_ptr->use_mind == MindKindType::NINJUTSU)) {
         take_hit(player_ptr, DAMAGE_USELIFE, cm_ptr->mana_cost, _("過度の集中", "concentrating too hard"));
-        player_ptr->redraw |= PR_HP;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::HP);
         return;
     }
 
@@ -425,7 +426,8 @@ void do_cmd_mind(PlayerType *player_ptr)
 
     mind_turn_passing(player_ptr, cm_ptr);
     process_hard_concentration(player_ptr, cm_ptr);
-    player_ptr->redraw |= PR_MP;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     player_ptr->window_flags |= PW_PLAYER;
     player_ptr->window_flags |= PW_SPELL;
 }
index 2ac7b1c..912e158 100644 (file)
@@ -348,7 +348,7 @@ void do_cmd_walk(PlayerType *player_ptr, bool pickup)
 {
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= PR_ACTION;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
@@ -426,7 +426,7 @@ void do_cmd_stay(PlayerType *player_ptr, bool pickup)
     uint32_t mpe_mode = MPE_STAYING | MPE_ENERGY_USE;
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= (PR_ACTION);
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
@@ -498,7 +498,7 @@ void do_cmd_rest(PlayerType *player_ptr)
     player_ptr->action = ACTION_REST;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    player_ptr->redraw |= (PR_ACTION);
+    rfu.set_flag(MainWindowRedrawingFlag::ACTION);
     handle_stuff(player_ptr);
     term_fresh();
 }
index 0f955e4..07299f2 100644 (file)
@@ -25,6 +25,7 @@
 #include "system/grid-type-definition.h"
 #include "system/item-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/terrain-type-definition.h"
 #include "target/target-getter.h"
 #include "term/screen-processor.h"
@@ -122,7 +123,7 @@ void do_cmd_open(PlayerType *player_ptr)
 
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= PR_ACTION;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
@@ -175,7 +176,7 @@ void do_cmd_close(PlayerType *player_ptr)
 
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= (PR_ACTION);
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
@@ -231,7 +232,7 @@ void do_cmd_disarm(PlayerType *player_ptr)
 
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= (PR_ACTION);
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
@@ -291,7 +292,7 @@ void do_cmd_bash(PlayerType *player_ptr)
 
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= (PR_ACTION);
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
index c210c85..f840c00 100644 (file)
@@ -34,6 +34,7 @@
 #include "system/floor-type-definition.h"
 #include "system/grid-type-definition.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/terrain-type-definition.h"
 #include "target/target-getter.h"
 #include "term/screen-processor.h"
@@ -48,7 +49,7 @@ void do_cmd_search(PlayerType *player_ptr)
 {
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= PR_ACTION;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
@@ -114,7 +115,7 @@ void do_cmd_alter(PlayerType *player_ptr)
 
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= PR_ACTION;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
index ff5b902..7159804 100644 (file)
@@ -162,10 +162,13 @@ void do_cmd_pet_dismiss(PlayerType *player_ptr)
 
                 player_ptr->riding = 0;
                 rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-                player_ptr->redraw |= (PR_EXTRA | PR_UHEALTH);
+                const auto flags = {
+                    MainWindowRedrawingFlag::EXTRA,
+                    MainWindowRedrawingFlag::UHEALTH,
+                };
+                rfu.set_flags(flags);
             }
 
-            /* HACK : Add the line to message buffer */
             msg_format(_("%s を放した。", "Dismissed %s."), friend_name.data());
             rfu.set_flag(StatusRedrawingFlag::BONUS);
             player_ptr->window_flags |= (PW_MESSAGE);
@@ -306,11 +309,13 @@ bool do_cmd_riding(PlayerType *player_ptr, bool force)
         StatusRedrawingFlag::BONUS,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= (PR_MAP | PR_EXTRA);
-    player_ptr->redraw |= (PR_UHEALTH);
-
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::UHEALTH,
+    };
+    rfu.set_flags(flags_mwrf);
     (void)move_player_effect(player_ptr, y, x, MPE_HANDLE_STUFF | MPE_ENERGY_USE | MPE_DONT_PICKUP | MPE_DONT_SWAP_MON);
-
     return true;
 }
 
index 00b750b..dee91b6 100644 (file)
@@ -30,6 +30,7 @@
 #include "racial/racial-util.h"
 #include "status/action-setter.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/screen-processor.h"
 #include "term/z-form.h"
 #include "util/bit-flags-calculator.h"
@@ -502,6 +503,10 @@ void do_cmd_racial_power(PlayerType *player_ptr)
         return;
     }
 
-    set_bits(player_ptr->redraw, PR_HP | PR_MP);
+    const auto flags = {
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
+    RedrawingFlagsUpdater::get_instance().set_flags(flags);
     set_bits(player_ptr->window_flags, PW_PLAYER | PW_SPELL);
 }
index e707277..49726a3 100644 (file)
@@ -1323,7 +1323,8 @@ bool do_cmd_cast(PlayerType *player_ptr)
     } else {
         over_exerted = true;
     }
-    player_ptr->redraw |= (PR_MP);
+
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
 
     /* Over-exert the player */
     if (over_exerted) {
index b3ec8c8..2ccc884 100644 (file)
@@ -15,6 +15,7 @@
 #include "system/floor-type-definition.h"
 #include "system/grid-type-definition.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/terrain-type-definition.h"
 #include "target/target-getter.h"
 #include "util/bit-flags-calculator.h"
@@ -39,7 +40,7 @@ void do_cmd_tunnel(PlayerType *player_ptr)
 
     if (command_arg) {
         command_rep = command_arg - 1;
-        player_ptr->redraw |= PR_ACTION;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
         command_arg = 0;
     }
 
index fa69172..92ae816 100644 (file)
@@ -410,14 +410,20 @@ void do_cmd_building(PlayerType *player_ptr)
     term_clear();
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    const auto flags = {
+    const auto flags_srf = {
         StatusRedrawingFlag::VIEW,
         StatusRedrawingFlag::MONSTER_STATUSES,
         StatusRedrawingFlag::BONUS,
         StatusRedrawingFlag::LITE,
         StatusRedrawingFlag::MONSTER_LITE,
     };
-    rfu.set_flags(flags);
-    player_ptr->redraw |= (PR_BASIC | PR_EXTRA | PR_EQUIPPY | PR_MAP);
+    rfu.set_flags(flags_srf);
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::EQUIPPY,
+        MainWindowRedrawingFlag::MAP,
+    };
+    rfu.set_flags(flags_mwrf);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
 }
index 3b65564..b3c06c7 100644 (file)
@@ -96,7 +96,7 @@ void do_cmd_locate(PlayerType *player_ptr)
     verify_panel(player_ptr);
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     handle_stuff(player_ptr);
 }
index 57f1079..72003f5 100644 (file)
@@ -17,6 +17,7 @@
 #include "main/sound-of-music.h"
 #include "system/game-option-types.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/gameterm.h"
 #include "term/screen-processor.h"
 #include "term/term-color-types.h"
@@ -628,7 +629,7 @@ void do_cmd_options(PlayerType *player_ptr)
     }
 
     screen_load();
-    player_ptr->redraw |= (PR_EQUIPPY);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::EQUIPPY);
 }
 
 /*!
index f86e1b7..f4421be 100644 (file)
@@ -14,6 +14,7 @@
 #include "io/files-util.h"
 #include "io/input-key-acceptor.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/gameterm.h"
 #include "term/screen-processor.h"
 #include "term/term-color-types.h"
@@ -349,7 +350,14 @@ static bool update_use_graphics(PlayerType *player_ptr)
 
     use_graphics = false;
     reset_visuals(player_ptr);
-    player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+    const auto flags = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::EQUIPPY,
+    };
+    RedrawingFlagsUpdater::get_instance().set_flags(flags);
     handle_stuff(player_ptr);
     return false;
 }
@@ -384,7 +392,14 @@ void do_cmd_save_screen(PlayerType *player_ptr)
 
     use_graphics = true;
     reset_visuals(player_ptr);
-    player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+    const auto flags = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::EQUIPPY,
+    };
+    RedrawingFlagsUpdater::get_instance().set_flags(flags);
     handle_stuff(player_ptr);
 }
 
index e6fba1e..455a273 100644 (file)
@@ -357,7 +357,7 @@ void do_cmd_wield(PlayerType *player_ptr)
     };
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= PR_EQUIPPY;
+    rfu.set_flag(MainWindowRedrawingFlag::EQUIPPY);
     player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
 }
 
@@ -412,6 +412,6 @@ void do_cmd_takeoff(PlayerType *player_ptr)
         StatusRedrawingFlag::MP,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= PR_EQUIPPY;
+    rfu.set_flag(MainWindowRedrawingFlag::EQUIPPY);
     player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
 }
index b307ab5..b40167b 100644 (file)
@@ -143,7 +143,7 @@ void do_cmd_drop(PlayerType *player_ptr)
         calc_android_exp(player_ptr);
     }
 
-    player_ptr->redraw |= (PR_EQUIPPY);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::EQUIPPY);
 }
 
 /*!
index 074f70d..5a0f83e 100644 (file)
@@ -17,6 +17,7 @@
 #include "status/action-setter.h"
 #include "system/item-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 
 ThrowCommand::ThrowCommand(PlayerType *player_ptr)
     : player_ptr(player_ptr)
@@ -63,7 +64,7 @@ bool ThrowCommand::do_cmd_throw(int mult, bool boomerang, OBJECT_IDX shuriken)
     ote.reflect_inventory_by_throw();
     if (ote.item >= INVEN_MAIN_HAND) {
         ote.equiped_item = true;
-        this->player_ptr->redraw |= PR_EQUIPPY;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::EQUIPPY);
     }
 
     ote.set_class_specific_throw_params();
index a9ac65b..b751036 100644 (file)
@@ -58,12 +58,16 @@ void do_cmd_redraw(PlayerType *player_ptr)
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-
-    player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
-
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::EQUIPPY,
+        MainWindowRedrawingFlag::MAP,
+    };
+    rfu.set_flags(flags_mwrf);
     player_ptr->window_flags |= (PW_INVENTORY | PW_EQUIPMENT | PW_SPELL | PW_PLAYER);
     player_ptr->window_flags |= (PW_MESSAGE | PW_OVERHEAD | PW_DUNGEON | PW_MONSTER_LORE | PW_ITEM_KNOWLEDGTE);
-
     update_playtime();
     handle_stuff(player_ptr);
     if (PlayerRace(player_ptr).equals(PlayerRaceType::ANDROID)) {
@@ -130,7 +134,15 @@ void do_cmd_player_status(PlayerType *player_ptr)
     }
 
     screen_load();
-    player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::EQUIPPY,
+        MainWindowRedrawingFlag::MAP,
+    };
+    rfu.set_flags(flags_mwrf);
     handle_stuff(player_ptr);
 }
 
index 5ecf517..2e390b4 100644 (file)
@@ -445,7 +445,7 @@ static MULTIPLY calc_shot_damage_with_slay(
 
         if ((flags.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (player_ptr->msp / 30))) {
             player_ptr->csp -= (1 + (player_ptr->msp / 30));
-            set_bits(player_ptr->redraw, PR_MP);
+            RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
             mult = mult * 5 / 2;
         }
         break;
index 3ceed85..a3d62ec 100644 (file)
@@ -22,6 +22,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 
 /*!
@@ -198,7 +199,7 @@ int calc_attack_damage_with_slay(PlayerType *player_ptr, ItemEntity *o_ptr, int
 
         if (!pc.equals(PlayerClassType::SAMURAI) && (flags.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (o_ptr->dd * o_ptr->ds / 5))) {
             player_ptr->csp -= (1 + (o_ptr->dd * o_ptr->ds / 5));
-            player_ptr->redraw |= (PR_MP);
+            RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
             mult = mult * 3 / 2 + 20;
         }
 
index ec60cf2..5b716cb 100644 (file)
@@ -22,7 +22,7 @@ void disturb(PlayerType *player_ptr, bool stop_search, bool stop_travel)
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (command_rep) {
         command_rep = 0;
-        player_ptr->redraw |= PR_ACTION;
+        rfu.set_flag(MainWindowRedrawingFlag::ACTION);
     }
 
     if ((player_ptr->action == ACTION_REST) || (player_ptr->action == ACTION_FISH) || (stop_search && (player_ptr->action == ACTION_SEARCH))) {
index 1479602..15ba9dc 100644 (file)
@@ -9,6 +9,7 @@
 #include "system/item-entity.h"
 #include "system/monster-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "view/display-messages.h"
 #include <algorithm>
 
@@ -56,7 +57,8 @@ void compact_objects(PlayerType *player_ptr, int size)
     ItemEntity *o_ptr;
     if (size) {
         msg_print(_("アイテム情報を圧縮しています...", "Compacting objects..."));
-        player_ptr->redraw |= PR_MAP;
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::MAP);
         player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     }
 
index ecc75f6..7c3ae00 100644 (file)
@@ -245,7 +245,7 @@ void process_player(PlayerType *player_ptr)
             s64b_sub(&(player_ptr->csp), &(player_ptr->csp_frac), cost, cost_frac);
         }
 
-        player_ptr->redraw |= PR_MP;
+        rfu.set_flag(MainWindowRedrawingFlag::MP);
     }
 
     if (PlayerClass(player_ptr).samurai_stance_is(SamuraiStanceType::MUSOU)) {
@@ -253,7 +253,7 @@ void process_player(PlayerType *player_ptr)
             set_action(player_ptr, ACTION_NONE);
         } else {
             player_ptr->csp -= 2;
-            player_ptr->redraw |= (PR_MP);
+            rfu.set_flag(MainWindowRedrawingFlag::MP);
         }
     }
 
@@ -292,7 +292,8 @@ void process_player(PlayerType *player_ptr)
                 if (!player_ptr->resting) {
                     set_action(player_ptr, ACTION_NONE);
                 }
-                player_ptr->redraw |= (PR_ACTION);
+
+                rfu.set_flag(MainWindowRedrawingFlag::ACTION);
             }
 
             energy.set_player_turn_energy(100);
@@ -304,7 +305,7 @@ void process_player(PlayerType *player_ptr)
             travel_step(player_ptr);
         } else if (command_rep) {
             command_rep--;
-            player_ptr->redraw |= (PR_ACTION);
+            rfu.set_flag(MainWindowRedrawingFlag::ACTION);
             handle_stuff(player_ptr);
             msg_flag = false;
             prt("", 0, 0);
@@ -330,7 +331,7 @@ void process_player(PlayerType *player_ptr)
             }
 
             if (effects->hallucination()->is_hallucinated()) {
-                player_ptr->redraw |= (PR_MAP);
+                rfu.set_flag(MainWindowRedrawingFlag::MAP);
             }
 
             for (MONSTER_IDX m_idx = 1; m_idx < player_ptr->current_floor_ptr->m_max; m_idx++) {
@@ -368,10 +369,11 @@ void process_player(PlayerType *player_ptr)
                         m_ptr->ml = false;
                         update_monster(player_ptr, m_idx, false);
                         if (player_ptr->health_who == m_idx) {
-                            player_ptr->redraw |= (PR_HEALTH);
+                            rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
                         }
+
                         if (player_ptr->riding == m_idx) {
-                            player_ptr->redraw |= (PR_UHEALTH);
+                            rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
                         }
 
                         lite_spot(player_ptr, m_ptr->fy, m_ptr->fx);
@@ -387,17 +389,17 @@ void process_player(PlayerType *player_ptr)
                 }
 
                 mane_data->new_mane = false;
-                player_ptr->redraw |= (PR_IMITATION);
+                rfu.set_flag(MainWindowRedrawingFlag::IMITATION);
             }
 
             if (player_ptr->action == ACTION_LEARN) {
                 auto mane_data = PlayerClass(player_ptr).get_specific_data<bluemage_data_type>();
                 mane_data->new_magic_learned = false;
-                player_ptr->redraw |= (PR_ACTION);
+                rfu.set_flag(MainWindowRedrawingFlag::ACTION);
             }
 
             if (player_ptr->timewalk && (player_ptr->energy_need > -1000)) {
-                player_ptr->redraw |= (PR_MAP);
+                rfu.set_flag(MainWindowRedrawingFlag::MAP);
                 rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
                 player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
 
index 5a3a570..50a5069 100644 (file)
@@ -15,7 +15,7 @@ void handle_stuff(PlayerType *player_ptr)
         update_creature(player_ptr);
     }
 
-    if (player_ptr->redraw) {
+    if (rfu.any_main()) {
         redraw_stuff(player_ptr);
     }
 
@@ -55,7 +55,7 @@ void health_track(PlayerType *player_ptr, MONSTER_IDX m_idx)
     }
 
     player_ptr->health_who = m_idx;
-    player_ptr->redraw |= (PR_HEALTH);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::HEALTH);
 }
 
 bool update_player(PlayerType *player_ptr)
@@ -77,7 +77,7 @@ bool redraw_player(PlayerType *player_ptr)
     }
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= PR_MP;
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     const auto flags_srf = {
         StatusRedrawingFlag::COMBINATION,
         StatusRedrawingFlag::REORDER,
index dfacb88..0099413 100644 (file)
@@ -12,6 +12,7 @@
 #include "player-base/player-class.h"
 #include "player-info/race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/gameterm.h"
 #include "term/screen-processor.h"
 #include "term/term-color-types.h"
@@ -68,7 +69,8 @@ static void print_dungeon(PlayerType *player_ptr)
  */
 void redraw_stuff(PlayerType *player_ptr)
 {
-    if (!player_ptr->redraw) {
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    if (!rfu.any_main()) {
         return;
     }
 
@@ -80,55 +82,66 @@ void redraw_stuff(PlayerType *player_ptr)
         return;
     }
 
-    if (player_ptr->redraw & (PR_WIPE)) {
-        player_ptr->redraw &= ~(PR_WIPE);
+    if (rfu.has(MainWindowRedrawingFlag::WIPE)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::WIPE);
         msg_print(nullptr);
         term_clear();
     }
 
-    if (player_ptr->redraw & (PR_MAP)) {
-        player_ptr->redraw &= ~(PR_MAP);
+    if (rfu.has(MainWindowRedrawingFlag::MAP)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::MAP);
         print_map(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_BASIC)) {
-        player_ptr->redraw &= ~(PR_BASIC);
-        player_ptr->redraw &= ~(PR_MISC | PR_TITLE | PR_ABILITY_SCORE);
-        player_ptr->redraw &= ~(PR_LEVEL | PR_EXP | PR_GOLD);
-        player_ptr->redraw &= ~(PR_AC | PR_HP | PR_MP);
-        player_ptr->redraw &= ~(PR_DEPTH | PR_HEALTH | PR_UHEALTH);
+    if (rfu.has(MainWindowRedrawingFlag::BASIC)) {
+        const auto flags = {
+            MainWindowRedrawingFlag::BASIC,
+            MainWindowRedrawingFlag::MISC,
+            MainWindowRedrawingFlag::TITLE,
+            MainWindowRedrawingFlag::ABILITY_SCORE,
+            MainWindowRedrawingFlag::LEVEL,
+            MainWindowRedrawingFlag::EXP,
+            MainWindowRedrawingFlag::GOLD,
+            MainWindowRedrawingFlag::AC,
+            MainWindowRedrawingFlag::HP,
+            MainWindowRedrawingFlag::MP,
+            MainWindowRedrawingFlag::DEPTH,
+            MainWindowRedrawingFlag::HEALTH,
+            MainWindowRedrawingFlag::UHEALTH,
+        };
+        rfu.reset_flags(flags);
         print_frame_basic(player_ptr);
         WorldTurnProcessor(player_ptr).print_time();
         print_dungeon(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_EQUIPPY)) {
-        player_ptr->redraw &= ~(PR_EQUIPPY);
+    if (rfu.has(MainWindowRedrawingFlag::EQUIPPY)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::EQUIPPY);
         display_player_equippy(player_ptr, ROW_EQUIPPY, COL_EQUIPPY, 0);
     }
 
-    if (player_ptr->redraw & (PR_MISC)) {
-        player_ptr->redraw &= ~(PR_MISC);
+    if (rfu.has(MainWindowRedrawingFlag::MISC)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::MISC);
         print_field(rp_ptr->title, ROW_RACE, COL_RACE);
     }
 
-    if (player_ptr->redraw & (PR_TITLE)) {
-        player_ptr->redraw &= ~(PR_TITLE);
+    if (rfu.has(MainWindowRedrawingFlag::TITLE)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::TITLE);
         print_title(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_LEVEL)) {
-        player_ptr->redraw &= ~(PR_LEVEL);
+    if (rfu.has(MainWindowRedrawingFlag::LEVEL)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::LEVEL);
         print_level(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_EXP)) {
-        player_ptr->redraw &= ~(PR_EXP);
+    if (rfu.has(MainWindowRedrawingFlag::EXP)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::EXP);
         print_exp(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_ABILITY_SCORE)) {
-        player_ptr->redraw &= ~(PR_ABILITY_SCORE);
+    if (rfu.has(MainWindowRedrawingFlag::ABILITY_SCORE)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
         print_stat(player_ptr, A_STR);
         print_stat(player_ptr, A_INT);
         print_stat(player_ptr, A_WIS);
@@ -137,90 +150,98 @@ void redraw_stuff(PlayerType *player_ptr)
         print_stat(player_ptr, A_CHR);
     }
 
-    if (player_ptr->redraw & (PR_TIMED_EFFECT)) {
-        player_ptr->redraw &= ~(PR_TIMED_EFFECT);
+    if (rfu.has(MainWindowRedrawingFlag::TIMED_EFFECT)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         print_status(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_AC)) {
-        player_ptr->redraw &= ~(PR_AC);
+    if (rfu.has(MainWindowRedrawingFlag::AC)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::AC);
         print_ac(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_HP)) {
-        player_ptr->redraw &= ~(PR_HP);
+    if (rfu.has(MainWindowRedrawingFlag::HP)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::HP);
         print_hp(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_MP)) {
-        player_ptr->redraw &= ~(PR_MP);
+    if (rfu.has(MainWindowRedrawingFlag::MP)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::MP);
         print_sp(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_GOLD)) {
-        player_ptr->redraw &= ~(PR_GOLD);
+    if (rfu.has(MainWindowRedrawingFlag::GOLD)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::GOLD);
         print_gold(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_DEPTH)) {
-        player_ptr->redraw &= ~(PR_DEPTH);
+    if (rfu.has(MainWindowRedrawingFlag::DEPTH)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::DEPTH);
         print_depth(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_UHEALTH)) {
-        player_ptr->redraw &= ~(PR_UHEALTH);
+    if (rfu.has(MainWindowRedrawingFlag::UHEALTH)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::UHEALTH);
         print_health(player_ptr, true);
     }
 
-    if (player_ptr->redraw & (PR_HEALTH)) {
-        player_ptr->redraw &= ~(PR_HEALTH);
+    if (rfu.has(MainWindowRedrawingFlag::HEALTH)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::HEALTH);
         print_health(player_ptr, false);
     }
 
-    if (player_ptr->redraw & (PR_EXTRA)) {
-        player_ptr->redraw &= ~(PR_EXTRA);
-        player_ptr->redraw &= ~(PR_CUT | PR_STUN);
-        player_ptr->redraw &= ~(PR_HUNGER);
-        player_ptr->redraw &= ~(PR_ACTION | PR_SPEED | PR_STUDY | PR_IMITATION | PR_TIMED_EFFECT);
+    if (rfu.has(MainWindowRedrawingFlag::EXTRA)) {
+        const auto flags = {
+            MainWindowRedrawingFlag::EXTRA,
+            MainWindowRedrawingFlag::CUT,
+            MainWindowRedrawingFlag::STUN,
+            MainWindowRedrawingFlag::HUNGER,
+            MainWindowRedrawingFlag::ACTION,
+            MainWindowRedrawingFlag::SPEED,
+            MainWindowRedrawingFlag::STUDY,
+            MainWindowRedrawingFlag::IMITATION,
+            MainWindowRedrawingFlag::TIMED_EFFECT,
+        };
+        rfu.reset_flags(flags);
         print_frame_extra(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_CUT)) {
-        player_ptr->redraw &= ~(PR_CUT);
+    if (rfu.has(MainWindowRedrawingFlag::CUT)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::CUT);
         print_cut(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_STUN)) {
-        player_ptr->redraw &= ~(PR_STUN);
+    if (rfu.has(MainWindowRedrawingFlag::STUN)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::STUN);
         print_stun(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_HUNGER)) {
-        player_ptr->redraw &= ~(PR_HUNGER);
+    if (rfu.has(MainWindowRedrawingFlag::HUNGER)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::HUNGER);
         print_hunger(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_ACTION)) {
-        player_ptr->redraw &= ~(PR_ACTION);
+    if (rfu.has(MainWindowRedrawingFlag::ACTION)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::ACTION);
         print_state(player_ptr);
     }
 
-    if (player_ptr->redraw & (PR_SPEED)) {
-        player_ptr->redraw &= ~(PR_SPEED);
+    if (rfu.has(MainWindowRedrawingFlag::SPEED)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::SPEED);
         print_speed(player_ptr);
     }
 
     if (PlayerClass(player_ptr).equals(PlayerClassType::IMITATOR)) {
-        if (player_ptr->redraw & (PR_IMITATION)) {
-            player_ptr->redraw &= ~(PR_IMITATION);
+        if (rfu.has(MainWindowRedrawingFlag::IMITATION)) {
+            rfu.reset_flag(MainWindowRedrawingFlag::IMITATION);
             print_imitation(player_ptr);
         }
 
         return;
     }
 
-    if (player_ptr->redraw & (PR_STUDY)) {
-        player_ptr->redraw &= ~(PR_STUDY);
+    if (rfu.has(MainWindowRedrawingFlag::STUDY)) {
+        rfu.reset_flag(MainWindowRedrawingFlag::STUDY);
         print_study(player_ptr);
     }
 }
index b6ee951..28cd6ba 100644 (file)
@@ -48,6 +48,15 @@ static void redraw_character_xtra(PlayerType *player_ptr)
 {
     w_ptr->character_xtra = true;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
+    set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_SPELL | PW_PLAYER | PW_MONSTER_LORE | PW_OVERHEAD | PW_DUNGEON);
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::EQUIPPY,
+        MainWindowRedrawingFlag::MAP,
+    };
+    rfu.set_flags(flags_mwrf);
     auto flags_srf = {
         StatusRedrawingFlag::BONUS,
         StatusRedrawingFlag::HP,
@@ -61,8 +70,6 @@ static void redraw_character_xtra(PlayerType *player_ptr)
         StatusRedrawingFlag::DISTANCE,
         StatusRedrawingFlag::FLOW,
     };
-    set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_SPELL | PW_PLAYER | PW_MONSTER_LORE | PW_OVERHEAD | PW_DUNGEON);
-    set_bits(player_ptr->redraw, PR_WIPE | PR_BASIC | PR_EXTRA | PR_EQUIPPY | PR_MAP);
     rfu.set_flags(flags_srf);
     handle_stuff(player_ptr);
     w_ptr->character_xtra = false;
index da469b6..38a8a7a 100644 (file)
@@ -16,6 +16,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
 
@@ -84,12 +85,14 @@ ProcessResult effect_monster_star_heal(PlayerType *player_ptr, effect_monster_ty
         em_ptr->m_ptr->maxhp = em_ptr->m_ptr->max_maxhp;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (!em_ptr->dam) {
         if (player_ptr->health_who == em_ptr->g_ptr->m_idx) {
-            player_ptr->redraw |= (PR_HEALTH);
+            rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
         }
+
         if (player_ptr->riding == em_ptr->g_ptr->m_idx) {
-            player_ptr->redraw |= (PR_UHEALTH);
+            rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
         }
 
         return ProcessResult::PROCESS_FALSE;
@@ -177,11 +180,13 @@ ProcessResult effect_monster_old_heal(PlayerType *player_ptr, effect_monster_typ
         }
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == em_ptr->g_ptr->m_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
+
     if (player_ptr->riding == em_ptr->g_ptr->m_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     em_ptr->note = _("は体力を回復したようだ。", " looks healthier.");
index fe817f5..b44c449 100644 (file)
@@ -19,6 +19,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
@@ -267,7 +268,8 @@ static void effect_monster_psi_drain_resist(PlayerType *player_ptr, effect_monst
         player_ptr->csp = 0;
     }
 
-    set_bits(player_ptr->redraw, PR_MP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     set_bits(player_ptr->window_flags, PW_SPELL);
     take_hit(player_ptr, DAMAGE_ATTACK, em_ptr->dam, em_ptr->killer);
     em_ptr->dam = 0;
@@ -287,7 +289,8 @@ static void effect_monster_psi_drain_change_power(PlayerType *player_ptr, effect
 
     b = std::min(player_ptr->msp, player_ptr->csp + b);
     player_ptr->csp = b;
-    set_bits(player_ptr->redraw, PR_MP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     set_bits(player_ptr->window_flags, PW_SPELL);
 }
 
index 15634b9..abb22c0 100644 (file)
@@ -15,6 +15,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
@@ -52,12 +53,13 @@ ProcessResult effect_monster_drain_mana(PlayerType *player_ptr, effect_monster_t
         em_ptr->m_caster_ptr->hp = em_ptr->m_caster_ptr->maxhp;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == em_ptr->who) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == em_ptr->who) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (em_ptr->see_s_msg) {
index a5f9a08..a698411 100644 (file)
@@ -53,6 +53,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
@@ -239,11 +240,13 @@ static bool deal_effect_damage_from_monster(PlayerType *player_ptr, effect_monst
         return false;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == em_ptr->g_ptr->m_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
+
     if (player_ptr->riding == em_ptr->g_ptr->m_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     (void)set_monster_csleep(player_ptr, em_ptr->g_ptr->m_idx, 0);
@@ -627,7 +630,7 @@ static void update_phase_out_stat(PlayerType *player_ptr, effect_monster_type *e
     }
 
     player_ptr->health_who = em_ptr->g_ptr->m_idx;
-    player_ptr->redraw |= (PR_HEALTH);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::HEALTH);
     handle_stuff(player_ptr);
 }
 
index 8038beb..c9259f1 100644 (file)
@@ -433,7 +433,11 @@ void effect_player_lite(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
     msg_print(_("閃光のため非物質的な影の存在でいられなくなった。", "The light forces you out of your incorporeal shadow form."));
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_MAP | PR_TIMED_EFFECT);
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::TIMED_EFFECT,
+    };
+    rfu.set_flags(flags_mwrf);
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
 }
index 8818743..e1c921e 100644 (file)
@@ -10,6 +10,7 @@
 #include "status/base-status.h"
 #include "system/monster-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "view/display-messages.h"
 #include "world/world.h"
 
@@ -40,7 +41,8 @@ void effect_player_drain_mana(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
         player_ptr->csp -= ep_ptr->dam;
     }
 
-    player_ptr->redraw |= (PR_MP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     player_ptr->window_flags |= (PW_PLAYER | PW_SPELL);
 
     if ((ep_ptr->who <= 0) || (ep_ptr->m_ptr->hp >= ep_ptr->m_ptr->maxhp)) {
@@ -54,10 +56,10 @@ void effect_player_drain_mana(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
     }
 
     if (player_ptr->health_who == ep_ptr->who) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
     if (player_ptr->riding == ep_ptr->who) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (ep_ptr->m_ptr->ml) {
@@ -95,7 +97,7 @@ void effect_player_mind_blast(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
         player_ptr->csp_frac = 0;
     }
 
-    player_ptr->redraw |= PR_MP;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
     ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
 }
 
@@ -108,13 +110,13 @@ void effect_player_brain_smash(PlayerType *player_ptr, EffectPlayerType *ep_ptr)
 
     if (!check_multishadow(player_ptr)) {
         msg_print(_("霊的エネルギーで精神が攻撃された。", "Your mind is blasted by psionic energy."));
-
         player_ptr->csp -= 100;
         if (player_ptr->csp < 0) {
             player_ptr->csp = 0;
             player_ptr->csp_frac = 0;
         }
-        player_ptr->redraw |= PR_MP;
+
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
     }
 
     ep_ptr->get_damage = take_hit(player_ptr, DAMAGE_ATTACK, ep_ptr->dam, ep_ptr->killer);
index 1d59ff4..f0ab22a 100644 (file)
@@ -52,7 +52,7 @@ static void update_sun_light(PlayerType *player_ptr)
         StatusRedrawingFlag::MONSTER_LITE,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     if ((player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].info & CAVE_GLOW) != 0) {
         set_superstealth(player_ptr, false);
@@ -313,7 +313,7 @@ void update_dungeon_feeling(PlayerType *player_ptr)
     player_ptr->feeling = new_feeling;
     do_cmd_feeling(player_ptr);
     select_floor_music(player_ptr);
-    player_ptr->redraw |= PR_DEPTH;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::DEPTH);
     if (disturb_minor) {
         disturb(player_ptr, false, false);
     }
@@ -356,7 +356,7 @@ void glow_deep_lava_and_bldg(PlayerType *player_ptr)
         StatusRedrawingFlag::MONSTER_LITE,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
 }
 
 /*
index 1d45954..f129b3d 100644 (file)
@@ -42,6 +42,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/terrain-type-definition.h"
 #include "timed-effect/player-cut.h"
 #include "timed-effect/player-poison.h"
@@ -457,7 +458,8 @@ bool hp_player(PlayerType *player_ptr, int num)
             player_ptr->chp_frac = 0;
         }
 
-        player_ptr->redraw |= (PR_HP);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::HP);
         player_ptr->window_flags |= (PW_PLAYER);
         if (num < 5) {
             msg_print(_("少し気分が良くなった。", "You feel a little better."));
index ad00dab..27dba59 100644 (file)
@@ -52,7 +52,8 @@ void regenhp(PlayerType *player_ptr, int percent)
     }
 
     if (old_chp != player_ptr->chp) {
-        player_ptr->redraw |= (PR_HP);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::HP);
         player_ptr->window_flags |= (PW_PLAYER);
         wild_regen = 20;
     }
@@ -108,7 +109,8 @@ void regenmana(PlayerType *player_ptr, MANA_POINT upkeep_factor, MANA_POINT rege
     }
 
     if (old_csp != player_ptr->csp) {
-        player_ptr->redraw |= (PR_MP);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::MP);
         player_ptr->window_flags |= (PW_PLAYER);
         player_ptr->window_flags |= (PW_SPELL);
         wild_regen = 20;
@@ -193,11 +195,12 @@ void regenerate_monsters(PlayerType *player_ptr)
                 m_ptr->hp = m_ptr->maxhp;
             }
 
+            auto &rfu = RedrawingFlagsUpdater::get_instance();
             if (player_ptr->health_who == i) {
-                player_ptr->redraw |= (PR_HEALTH);
+                rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
             }
             if (player_ptr->riding == i) {
-                player_ptr->redraw |= (PR_UHEALTH);
+                rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
             }
         }
     }
index c45fb60..1de862e 100644 (file)
@@ -444,7 +444,7 @@ static void curse_drain_mp(PlayerType *player_ptr)
         player_ptr->csp_frac = 0;
     }
 
-    player_ptr->redraw |= PR_MP;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
 }
 
 static void occur_curse_effects(PlayerType *player_ptr)
index f3c777d..8e11363 100644 (file)
@@ -92,6 +92,7 @@ void py_pickup_floor(PlayerType *player_ptr, bool pickup)
     OBJECT_IDX floor_o_idx = 0;
     int can_pickup = 0;
     auto &o_idx_list = player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].o_idx_list;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     for (auto it = o_idx_list.begin(); it != o_idx_list.end();) {
         const OBJECT_IDX this_o_idx = *it++;
         auto *o_ptr = &player_ptr->current_floor_ptr->o_list[this_o_idx];
@@ -102,7 +103,7 @@ void py_pickup_floor(PlayerType *player_ptr, bool pickup)
             msg_format(mes, (long)o_ptr->pval, item_name.data());
             sound(SOUND_SELL);
             player_ptr->au += o_ptr->pval;
-            player_ptr->redraw |= (PR_GOLD);
+            rfu.set_flag(MainWindowRedrawingFlag::GOLD);
             player_ptr->window_flags |= (PW_PLAYER);
             delete_object_idx(player_ptr, this_o_idx);
             continue;
@@ -245,7 +246,7 @@ void carry(PlayerType *player_ptr, bool pickup)
     verify_panel(player_ptr);
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= PW_OVERHEAD;
     handle_stuff(player_ptr);
     auto *g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
@@ -266,7 +267,7 @@ void carry(PlayerType *player_ptr, bool pickup)
             msg_format(_(" $%ld の価値がある%sを見つけた。", "You collect %ld gold pieces worth of %s."), (long)value, item_name.data());
             sound(SOUND_SELL);
             player_ptr->au += value;
-            player_ptr->redraw |= (PR_GOLD);
+            rfu.set_flag(MainWindowRedrawingFlag::GOLD);
             player_ptr->window_flags |= (PW_PLAYER);
             continue;
         }
index e0bf8ed..05becac 100644 (file)
@@ -46,7 +46,7 @@ void print_path(PlayerType *player_ptr, POSITION y, POSITION x)
 
     auto *floor_ptr = player_ptr->current_floor_ptr;
     projection_path path_g(player_ptr, (project_length ? project_length : get_max_range(player_ptr)), player_ptr->y, player_ptr->x, y, x, PROJECT_PATH | PROJECT_THRU);
-    player_ptr->redraw |= (PR_MAP);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MAP);
     handle_stuff(player_ptr);
     for (const auto &[ny, nx] : path_g) {
         auto *g_ptr = &floor_ptr->grid_array[ny][nx];
@@ -135,7 +135,7 @@ bool change_panel(PlayerType *player_ptr, POSITION dy, POSITION dx)
     panel_bounds_center();
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     handle_stuff(player_ptr);
     return true;
 }
index 85df61b..da7ef2f 100644 (file)
@@ -191,7 +191,7 @@ void process_command(PlayerType *player_ptr)
 
         auto &rfu = RedrawingFlagsUpdater::get_instance();
         rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-        player_ptr->redraw |= (PR_TITLE);
+        rfu.set_flag(MainWindowRedrawingFlag::TITLE);
         break;
     }
     case KTRL('A'): {
index cbc11aa..869de59 100644 (file)
@@ -26,6 +26,7 @@
 #include "system/dungeon-info.h"
 #include "system/floor-type-definition.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/system-variables.h"
 #include "term/gameterm.h"
 #include "term/screen-processor.h"
@@ -301,6 +302,7 @@ concptr make_screen_dump(PlayerType *player_ptr)
         return nullptr;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     bool old_use_graphics = use_graphics;
     if (old_use_graphics) {
         /* Clear -more- prompt first */
@@ -309,7 +311,14 @@ concptr make_screen_dump(PlayerType *player_ptr)
         use_graphics = false;
         reset_visuals(player_ptr);
 
-        player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+        const auto flags = {
+            MainWindowRedrawingFlag::WIPE,
+            MainWindowRedrawingFlag::BASIC,
+            MainWindowRedrawingFlag::EXTRA,
+            MainWindowRedrawingFlag::MAP,
+            MainWindowRedrawingFlag::EQUIPPY,
+        };
+        rfu.set_flags(flags);
         handle_stuff(player_ptr);
     }
 
@@ -402,8 +411,14 @@ concptr make_screen_dump(PlayerType *player_ptr)
 
     use_graphics = true;
     reset_visuals(player_ptr);
-
-    player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
+    const auto flags = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::EQUIPPY,
+    };
+    rfu.set_flags(flags);
     handle_stuff(player_ptr);
     return ret;
 }
index 4a2bafb..bcacb57 100644 (file)
@@ -70,8 +70,14 @@ void resize_map()
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    p_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
-
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::WIPE,
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::EQUIPPY,
+    };
+    rfu.set_flags(flags_mwrf);
     handle_stuff(p_ptr);
     term_redraw();
 
index 8b78c03..d11c433 100644 (file)
@@ -32,6 +32,7 @@
 #include "system/item-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/screen-processor.h"
 #include "term/term-color-types.h"
 #include "term/z-form.h"
@@ -48,6 +49,7 @@
 bool exchange_cash(PlayerType *player_ptr)
 {
     auto change = false;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     for (INVENTORY_IDX i = 0; i <= INVEN_SUB_HAND; i++) {
         const auto item_ptr = &player_ptr->inventory_list[i];
         const auto r_idx_of_item = static_cast<MonsterRaceId>(item_ptr->pval);
@@ -63,7 +65,7 @@ bool exchange_cash(PlayerType *player_ptr)
 
         msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(1000000L * item_ptr->number));
         player_ptr->au += 1000000L * item_ptr->number;
-        player_ptr->redraw |= (PR_GOLD);
+        rfu.set_flag(MainWindowRedrawingFlag::GOLD);
         vary_item(player_ptr, i, -item_ptr->number);
     }
 
@@ -82,7 +84,7 @@ bool exchange_cash(PlayerType *player_ptr)
 
         msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(200000L * item_ptr->number));
         player_ptr->au += 200000L * item_ptr->number;
-        player_ptr->redraw |= (PR_GOLD);
+        rfu.set_flag(MainWindowRedrawingFlag::GOLD);
         vary_item(player_ptr, i, -item_ptr->number);
     }
 
@@ -101,7 +103,7 @@ bool exchange_cash(PlayerType *player_ptr)
 
         msg_format(_("賞金 %ld$を手に入れた。", "You get %ldgp."), (long int)(100000L * item_ptr->number));
         player_ptr->au += 100000L * item_ptr->number;
-        player_ptr->redraw |= (PR_GOLD);
+        rfu.set_flag(MainWindowRedrawingFlag::GOLD);
         vary_item(player_ptr, i, -item_ptr->number);
     }
 
@@ -121,7 +123,7 @@ bool exchange_cash(PlayerType *player_ptr)
         constexpr auto mes = _("賞金 %ld$を手に入れた。", "You get %ldgp.");
         msg_format(mes, (long int)((monraces_info[w_ptr->today_mon].level * 50 + 100) * item_ptr->number));
         player_ptr->au += (monraces_info[w_ptr->today_mon].level * 50 + 100) * item_ptr->number;
-        player_ptr->redraw |= (PR_GOLD);
+        rfu.set_flag(MainWindowRedrawingFlag::GOLD);
         vary_item(player_ptr, i, -item_ptr->number);
     }
 
@@ -141,7 +143,7 @@ bool exchange_cash(PlayerType *player_ptr)
         constexpr auto mes = _("賞金 %ld$を手に入れた。", "You get %ldgp.");
         msg_format(mes, (long int)((monraces_info[w_ptr->today_mon].level * 30 + 60) * item_ptr->number));
         player_ptr->au += (monraces_info[w_ptr->today_mon].level * 30 + 60) * item_ptr->number;
-        player_ptr->redraw |= (PR_GOLD);
+        rfu.set_flag(MainWindowRedrawingFlag::GOLD);
         vary_item(player_ptr, i, -item_ptr->number);
     }
 
index 82e2ecd..804607a 100644 (file)
@@ -42,6 +42,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
@@ -81,12 +82,13 @@ static void prepare_redraw(PlayerType *player_ptr, mam_pp_type *mam_pp_ptr)
         return;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == mam_pp_ptr->m_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == mam_pp_ptr->m_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 }
 
index 8534f16..31fb94d 100644 (file)
@@ -18,6 +18,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "timed-effect/player-blindness.h"
 #include "timed-effect/timed-effects.h"
 #include "util/string-processor.h"
@@ -80,8 +81,7 @@ static void process_special_melee_spell(PlayerType *player_ptr, melee_spell_type
 
     mane_data->mane_list.push_back({ ms_ptr->thrown_spell, ms_ptr->dam });
     mane_data->new_mane = true;
-
-    player_ptr->redraw |= PR_IMITATION;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::IMITATION);
 }
 
 static void process_rememberance(melee_spell_type *ms_ptr)
index dcd6ccd..22dc2b8 100644 (file)
@@ -36,6 +36,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
 
@@ -51,12 +52,13 @@ static void heal_monster_by_melee(PlayerType *player_ptr, mam_type *mam_ptr)
         mam_ptr->m_ptr->hp = mam_ptr->m_ptr->maxhp;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == mam_ptr->m_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == mam_ptr->m_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (mam_ptr->see_m && did_heal) {
@@ -188,12 +190,13 @@ static void redraw_health_bar(PlayerType *player_ptr, mam_type *mam_ptr)
         return;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == mam_ptr->t_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == mam_ptr->t_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 }
 
index 462de3f..203c367 100644 (file)
@@ -19,6 +19,7 @@
 #include "status/bad-status-setter.h"
 #include "status/base-status.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/screen-processor.h"
 #include "timed-effect/player-stun.h"
 #include "timed-effect/timed-effects.h"
@@ -89,7 +90,8 @@ bool do_cmd_cast_learned(PlayerType *player_ptr)
     }
 
     PlayerEnergy(player_ptr).set_player_turn_energy(100);
-    player_ptr->redraw |= PR_MP;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     player_ptr->window_flags |= PW_PLAYER | PW_SPELL;
     return true;
 }
index 948905d..f8973fc 100644 (file)
@@ -63,6 +63,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/grid-selector.h"
 #include "target/target-getter.h"
 #include "term/screen-processor.h"
@@ -888,7 +889,8 @@ static bool try_cast_element_spell(PlayerType *player_ptr, SPELL_IDX spell_idx,
         player_ptr->csp = std::max(0, player_ptr->csp - player_ptr->msp * 10 / (20 + randint1(10)));
 
         PlayerEnergy(player_ptr).set_player_turn_energy(100);
-        set_bits(player_ptr->redraw, PR_MP);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::MP);
         set_bits(player_ptr->window_flags, PW_PLAYER | PW_SPELL);
 
         return false;
@@ -937,7 +939,8 @@ void do_cmd_element(PlayerType *player_ptr)
     }
 
     PlayerEnergy(player_ptr).set_player_turn_energy(100);
-    set_bits(player_ptr->redraw, PR_MP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     set_bits(player_ptr->window_flags, PW_PLAYER | PW_SPELL);
 }
 
index ea0c02c..331b098 100644 (file)
@@ -89,7 +89,7 @@ bool clear_mind(PlayerType *player_ptr)
         player_ptr->csp_frac = 0;
     }
 
-    player_ptr->redraw |= (PR_MP);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
     return true;
 }
 
@@ -177,8 +177,7 @@ bool set_tim_sh_force(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->tim_sh_touki = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -186,6 +185,7 @@ bool set_tim_sh_force(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     handle_stuff(player_ptr);
     return true;
 }
index 41c2434..a9b5934 100644 (file)
@@ -41,8 +41,7 @@ bool set_resist_magic(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->resist_magic = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
index c98e7a6..baaefd8 100644 (file)
@@ -271,8 +271,7 @@ bool set_multishadow(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->multishadow = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -320,8 +319,7 @@ bool set_dustrobe(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->dustrobe = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
index 2505170..a56cb89 100644 (file)
@@ -26,7 +26,7 @@ static void set_stance(PlayerType *player_ptr, const MonkStanceType new_stance)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    player_ptr->redraw |= PR_ACTION;
+    rfu.set_flag(MainWindowRedrawingFlag::ACTION);
     msg_format(_("%sの構えをとった。", "You assume the %s stance."), monk_stances[enum2i(new_stance) - 1].desc);
     pc.set_monk_stance(new_stance);
 }
@@ -88,7 +88,7 @@ bool choose_monk_stance(PlayerType *player_ptr)
     }
 
     set_stance(player_ptr, new_stance);
-    player_ptr->redraw |= PR_ACTION;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
     screen_load();
     return true;
 }
index c0b3d71..054c728 100644 (file)
@@ -54,6 +54,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/terrain-type-definition.h"
 #include "target/projection-path-calculator.h"
 #include "target/target-checker.h"
@@ -99,10 +100,11 @@ bool kawarimi(PlayerType *player_ptr, bool success)
         return false;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (!success && one_in_(3)) {
         msg_print(_("変わり身失敗!逃げられなかった。", "Kawarimi failed! You couldn't run away."));
         ninja_data->kawarimi = false;
-        player_ptr->redraw |= (PR_TIMED_EFFECT);
+        rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         return false;
     }
 
@@ -124,7 +126,7 @@ bool kawarimi(PlayerType *player_ptr, bool success)
     }
 
     ninja_data->kawarimi = false;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     return true;
 }
 
@@ -360,11 +362,12 @@ bool set_superstealth(PlayerType *player_ptr, bool set)
     if (!notice) {
         return false;
     }
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
 
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     return true;
 }
 
@@ -409,7 +412,7 @@ bool cast_ninja_spell(PlayerType *player_ptr, MindNinjaType spell)
         if (ninja_data && !ninja_data->kawarimi) {
             msg_print(_("敵の攻撃に対して敏感になった。", "You are now prepared to evade any attacks."));
             ninja_data->kawarimi = true;
-            player_ptr->redraw |= (PR_TIMED_EFFECT);
+            RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         }
 
         break;
index ab84686..b33de36 100644 (file)
@@ -366,7 +366,7 @@ void concentration(PlayerType *player_ptr)
         player_ptr->csp_frac = 0;
     }
 
-    player_ptr->redraw |= PR_MP;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
 }
 
 /*!
@@ -449,7 +449,11 @@ bool choose_samurai_stance(PlayerType *player_ptr)
         PlayerClass(player_ptr).set_samurai_stance(new_stance);
     }
 
-    player_ptr->redraw |= (PR_ACTION | PR_TIMED_EFFECT);
+    const auto flags = {
+        MainWindowRedrawingFlag::ACTION,
+        MainWindowRedrawingFlag::TIMED_EFFECT,
+    };
+    rfu.set_flags(flags);
     screen_load();
     return true;
 }
@@ -533,5 +537,5 @@ void musou_counterattack(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
     msg_format(_("%s^に反撃した!", "You counterattacked %s!"), m_target_name.data());
     do_cmd_attack(player_ptr, monap_ptr->m_ptr->fy, monap_ptr->m_ptr->fx, HISSATSU_COUNTER);
     monap_ptr->fear = false;
-    player_ptr->redraw |= (PR_MP);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
 }
index 94156f1..f340822 100644 (file)
@@ -137,7 +137,7 @@ static void reset_concentration_flag(PlayerType *player_ptr, sniper_data_type *s
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags);
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 }
 
 /*!
@@ -603,29 +603,33 @@ static bool cast_sniper_spell(PlayerType *player_ptr, int spell)
  */
 void do_cmd_snipe(PlayerType *player_ptr)
 {
-    COMMAND_CODE n = 0;
-    bool cast;
-
     if (cmd_limit_confused(player_ptr)) {
         return;
     }
+
     if (cmd_limit_image(player_ptr)) {
         return;
     }
+
     if (cmd_limit_stun(player_ptr)) {
         return;
     }
 
+    COMMAND_CODE n = 0;
     if (!get_snipe_power(player_ptr, &n, false)) {
         return;
     }
 
-    cast = cast_sniper_spell(player_ptr, n);
-
-    if (!cast) {
+    if (!cast_sniper_spell(player_ptr, n)) {
         return;
     }
-    player_ptr->redraw |= (PR_HP | PR_MP);
+
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
+    rfu.set_flags(flags_mwrf);
     player_ptr->window_flags |= (PW_PLAYER);
     player_ptr->window_flags |= (PW_SPELL);
 }
index 7b142ee..cc109ee 100644 (file)
@@ -3,15 +3,21 @@
 #include "hpmp/hp-mp-processor.h"
 #include "player/player-damage.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "view/display-messages.h"
 
 bool comvert_hp_to_mp(PlayerType *player_ptr)
 {
     constexpr auto mes = _("HPからMPへの無謀な変換", "thoughtless conversion from HP to SP");
     auto gain_sp = take_hit(player_ptr, DAMAGE_USELIFE, player_ptr->lev, mes) / 5;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    const auto flags = {
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
     if (!gain_sp) {
         msg_print(_("変換に失敗した。", "You failed to convert."));
-        player_ptr->redraw |= (PR_HP | PR_MP);
+        rfu.set_flags(flags);
         return true;
     }
 
@@ -21,7 +27,7 @@ bool comvert_hp_to_mp(PlayerType *player_ptr)
         player_ptr->csp_frac = 0;
     }
 
-    player_ptr->redraw |= (PR_HP | PR_MP);
+    rfu.set_flags(flags);
     return true;
 }
 
@@ -34,6 +40,10 @@ bool comvert_mp_to_hp(PlayerType *player_ptr)
         msg_print(_("変換に失敗した。", "You failed to convert."));
     }
 
-    player_ptr->redraw |= (PR_HP | PR_MP);
+    const auto flags = {
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
+    RedrawingFlagsUpdater::get_instance().set_flags(flags);
     return true;
 }
index 1761758..6f5d272 100644 (file)
@@ -74,7 +74,8 @@ void process_eat_gold(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
         chg_virtue(player_ptr, Virtue::SACRIFICE, 2);
     }
 
-    player_ptr->redraw |= (PR_GOLD);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::GOLD);
     player_ptr->window_flags |= (PW_PLAYER);
     monap_ptr->blinked = true;
 }
@@ -254,11 +255,11 @@ bool process_un_power(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == monap_ptr->m_idx) {
-        player_ptr->redraw |= PR_HEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == monap_ptr->m_idx) {
-        player_ptr->redraw |= PR_UHEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     monap_ptr->o_ptr->pval = !is_magic_mastery || (monap_ptr->o_ptr->pval == 1) ? 0 : monap_ptr->o_ptr->pval - drain;
@@ -304,12 +305,13 @@ void process_drain_life(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr,
         monap_ptr->m_ptr->hp = monap_ptr->m_ptr->maxhp;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == monap_ptr->m_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == monap_ptr->m_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (monap_ptr->m_ptr->ml && did_heal) {
@@ -331,7 +333,7 @@ void process_drain_mana(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr)
         player_ptr->csp_frac = 0;
     }
 
-    player_ptr->redraw |= (PR_MP);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
 }
 
 /*!
index 36b927a..d1bf87f 100644 (file)
@@ -331,7 +331,7 @@ static void on_defeat_last_boss(PlayerType *player_ptr)
 {
     w_ptr->total_winner = true;
     add_winner_class(player_ptr->pclass);
-    player_ptr->redraw |= PR_TITLE;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TITLE);
     play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_FINAL_QUEST_CLEAR);
     exe_write_diary(player_ptr, DIARY_DESCRIPTION, 0, _("見事に変愚蛮怒の勝利者となった!", "finally became *WINNER* of Hengband!"));
     patron_list[player_ptr->chaos_patron].admire(player_ptr);
index 2d66da3..e5d8469 100644 (file)
@@ -42,6 +42,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "timed-effect/player-hallucination.h"
 #include "timed-effect/timed-effects.h"
 #include "util/bit-flags-calculator.h"
@@ -487,12 +488,13 @@ void MonsterDamageProcessor::get_exp_from_mon(MonsterEntity *m_ptr, int exp_dam)
 
 void MonsterDamageProcessor::set_redraw()
 {
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (this->player_ptr->health_who == this->m_idx) {
-        this->player_ptr->redraw |= PR_HEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (this->player_ptr->riding == this->m_idx) {
-        this->player_ptr->redraw |= PR_UHEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 }
 
index 0671f0a..66926c0 100644 (file)
@@ -126,11 +126,11 @@ bool set_monster_csleep(PlayerType *player_ptr, MONSTER_IDX m_idx, int v)
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (m_ptr->ml) {
         if (player_ptr->health_who == m_idx) {
-            player_ptr->redraw |= PR_HEALTH;
+            rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
         }
 
         if (player_ptr->riding == m_idx) {
-            player_ptr->redraw |= PR_UHEALTH;
+            rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
         }
     }
 
@@ -310,12 +310,13 @@ bool set_monster_monfear(PlayerType *player_ptr, MONSTER_IDX m_idx, int v)
     }
 
     if (m_ptr->ml) {
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
         if (player_ptr->health_who == m_idx) {
-            player_ptr->redraw |= PR_HEALTH;
+            rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
         }
 
         if (player_ptr->riding == m_idx) {
-            player_ptr->redraw |= PR_UHEALTH;
+            rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
         }
     }
 
@@ -359,12 +360,13 @@ bool set_monster_invulner(PlayerType *player_ptr, MONSTER_IDX m_idx, int v, bool
     }
 
     if (m_ptr->ml) {
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
         if (player_ptr->health_who == m_idx) {
-            player_ptr->redraw |= PR_HEALTH;
+            rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
         }
 
         if (player_ptr->riding == m_idx) {
-            player_ptr->redraw |= PR_UHEALTH;
+            rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
         }
     }
 
@@ -428,7 +430,7 @@ bool set_monster_timewalk(PlayerType *player_ptr, int num, MonsterRaceId who, bo
     }
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
     player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     w_ptr->timewalk_m_idx = 0;
index 782073b..81a47c3 100644 (file)
@@ -497,12 +497,13 @@ static void update_invisible_monster(PlayerType *player_ptr, um_type *um_ptr, MO
     m_ptr->ml = true;
     lite_spot(player_ptr, um_ptr->fy, um_ptr->fx);
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == m_idx) {
-        player_ptr->redraw |= PR_HEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == m_idx) {
-        player_ptr->redraw |= PR_UHEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (!player_ptr->effects()->hallucination()->is_hallucinated()) {
@@ -536,12 +537,13 @@ static void update_visible_monster(PlayerType *player_ptr, um_type *um_ptr, MONS
     um_ptr->m_ptr->ml = false;
     lite_spot(player_ptr, um_ptr->fy, um_ptr->fx);
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == m_idx) {
-        player_ptr->redraw |= PR_HEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
 
     if (player_ptr->riding == m_idx) {
-        player_ptr->redraw |= PR_UHEALTH;
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (um_ptr->do_disturb && (disturb_pets || um_ptr->m_ptr->is_hostile())) {
index 0a37cf5..36e9fc7 100644 (file)
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/projection-path-calculator.h"
 #include "timed-effect/player-blindness.h"
 #include "timed-effect/timed-effects.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
 #include "world/world.h"
+#include <iterator>
 #ifdef JP
 #else
 #include "monster/monster-description-types.h"
 #endif
 
-#include <iterator>
-
 static void set_no_magic_mask(msa_type *msa_ptr)
 {
     if (!msa_ptr->no_inate) {
@@ -290,7 +290,7 @@ static void check_mspell_imitation(PlayerType *player_ptr, msa_type *msa_ptr)
 
     mane_data->mane_list.push_back({ msa_ptr->thrown_spell, msa_ptr->dam });
     mane_data->new_mane = true;
-    player_ptr->redraw |= PR_IMITATION;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::IMITATION);
 }
 
 static void remember_mspell(msa_type *msa_ptr)
index 34db674..ebb6ff2 100644 (file)
@@ -103,7 +103,12 @@ static void dispel_player(PlayerType *player_ptr)
             StatusRedrawingFlag::MONSTER_STATUSES,
         };
         rfu.set_flags(flags_srf);
-        player_ptr->redraw |= (PR_MAP | PR_TIMED_EFFECT | PR_ACTION);
+        const auto flags_mwrf = {
+            MainWindowRedrawingFlag::MAP,
+            MainWindowRedrawingFlag::TIMED_EFFECT,
+            MainWindowRedrawingFlag::ACTION,
+        };
+        rfu.set_flags(flags_mwrf);
         player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
         player_ptr->energy_need += ENERGY_NEED();
     }
index 6d33cf2..aec6ebe 100644 (file)
@@ -35,6 +35,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "timed-effect/player-blindness.h"
 #include "timed-effect/timed-effects.h"
 #include "view/display-messages.h"
@@ -617,12 +618,13 @@ MonsterSpellResult spell_RF6_HEAL(PlayerType *player_ptr, MONSTER_IDX m_idx, MON
     }
 
     monspell_message_base(player_ptr, m_idx, t_idx, msg, !seen, target_type);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->health_who == m_idx) {
-        player_ptr->redraw |= (PR_HEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::HEALTH);
     }
+
     if (player_ptr->riding == m_idx) {
-        player_ptr->redraw |= (PR_UHEALTH);
+        rfu.set_flag(MainWindowRedrawingFlag::UHEALTH);
     }
 
     if (!m_ptr->is_fearful()) {
index 1e424b5..52519ea 100644 (file)
@@ -47,6 +47,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/target-checker.h"
 #include "target/target-setter.h"
 #include "target/target-types.h"
@@ -160,7 +161,7 @@ void process_world_aux_mutation(PlayerType *player_ptr)
     if (player_ptr->muta.has(PlayerMutationType::ALCOHOL) && (randint1(6400) == 321)) {
         if (!has_resist_conf(player_ptr) && !has_resist_chaos(player_ptr)) {
             disturb(player_ptr, false, true);
-            player_ptr->redraw |= PR_EXTRA;
+            RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::EXTRA);
             msg_print(_("いひきがもーろーとひてきたきがふる...ヒック!", "You feel a SSSCHtupor cOmINg over yOu... *HIC*!"));
         }
 
@@ -192,7 +193,7 @@ void process_world_aux_mutation(PlayerType *player_ptr)
     if (player_ptr->muta.has(PlayerMutationType::HALLU) && (randint1(6400) == 42)) {
         if (!has_resist_chaos(player_ptr)) {
             disturb(player_ptr, false, true);
-            player_ptr->redraw |= PR_EXTRA;
+            RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::EXTRA);
             (void)bss.mod_hallucination(randint0(50) + 20);
         }
     }
@@ -463,6 +464,10 @@ void process_world_aux_mutation(PlayerType *player_ptr)
         (void)set_invuln(player_ptr, randint1(8) + 8, false);
     }
 
+    const auto flags = {
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
     if (player_ptr->muta.has(PlayerMutationType::SP_TO_HP) && one_in_(2000)) {
         MANA_POINT wounds = (MANA_POINT)(player_ptr->mhp - player_ptr->chp);
         if (wounds > 0) {
@@ -473,7 +478,7 @@ void process_world_aux_mutation(PlayerType *player_ptr)
 
             hp_player(player_ptr, healing);
             player_ptr->csp -= healing;
-            player_ptr->redraw |= (PR_HP | PR_MP);
+            RedrawingFlagsUpdater::get_instance().set_flags(flags);
         }
     }
 
@@ -486,7 +491,7 @@ void process_world_aux_mutation(PlayerType *player_ptr)
             }
 
             player_ptr->csp += healing;
-            player_ptr->redraw |= (PR_HP | PR_MP);
+            RedrawingFlagsUpdater::get_instance().set_flags(flags);
             take_hit(player_ptr, DAMAGE_LOSELIFE, healing, _("頭に昇った血", "blood rushing to the head"));
         }
     }
index c1ed8c1..065e578 100644 (file)
@@ -52,6 +52,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/projection-path-calculator.h"
 #include "target/target-checker.h"
 #include "target/target-getter.h"
@@ -384,7 +385,7 @@ bool activate_protection_elbereth(PlayerType *player_ptr)
     (void)bss.set_blindness(0);
     (void)bss.hallucination(0);
     set_blessed(player_ptr, randint0(25) + 25, true);
-    set_bits(player_ptr->redraw, PR_ABILITY_SCORE);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
     return true;
 }
 
index 038e28f..b49ef15 100644 (file)
@@ -303,7 +303,7 @@ bool ScrollReadExecutor::read()
 
         msg_print(_("手が輝き始めた。", "Your hands begin to glow."));
         this->player_ptr->special_attack |= ATTACK_CONFUSE;
-        this->player_ptr->redraw |= PR_TIMED_EFFECT;
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         this->ident = true;
         break;
     case SV_SCROLL_PROTECTION_FROM_EVIL: {
index 17c839d..12bb015 100644 (file)
@@ -173,12 +173,12 @@ bool process_fall_off_horse(PlayerType *player_ptr, int dam, bool force)
     handle_stuff(player_ptr);
 
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
-    player_ptr->redraw |= (PR_EXTRA);
-
-    /* Update health track of mount */
-    player_ptr->redraw |= (PR_UHEALTH);
-
-    bool fall_dam = false;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::UHEALTH,
+    };
+    rfu.set_flags(flags_mwrf);
+    auto fall_dam = false;
     if (player_ptr->levitation && !force) {
         const auto m_name = monster_desc(player_ptr, m_ptr, 0);
         msg_format(_("%sから落ちたが、空中でうまく体勢を立て直して着地した。", "You are thrown from %s but make a good landing."), m_name.data());
index d94ae47..3c7495f 100644 (file)
@@ -37,6 +37,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "util/string-processor.h"
 #include "view/display-messages.h"
@@ -54,7 +55,7 @@ static void attack_confuse(PlayerType *player_ptr, player_attack_type *pa_ptr, b
     if (player_ptr->special_attack & ATTACK_CONFUSE) {
         player_ptr->special_attack &= ~(ATTACK_CONFUSE);
         msg_print(_("手の輝きがなくなった。", "Your hands stop glowing."));
-        player_ptr->redraw |= (PR_TIMED_EFFECT);
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     }
 
     auto *r_ptr = pa_ptr->r_ptr;
@@ -149,7 +150,7 @@ static void attack_dispel(PlayerType *player_ptr, player_attack_type *pa_ptr)
 
     auto sp = damroll(dd, 8);
     player_ptr->csp = std::min(player_ptr->msp, player_ptr->csp + sp);
-    set_bits(player_ptr->redraw, PR_MP);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
 }
 
 /*!
index c1650da..a5e512a 100644 (file)
@@ -402,8 +402,11 @@ bool PlayerClass::lose_balance()
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    this->player_ptr->redraw |= PR_ACTION;
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::ACTION,
+        MainWindowRedrawingFlag::TIMED_EFFECT,
+    };
+    rfu.set_flags(flags_mwrf);
     this->player_ptr->action = ACTION_NONE;
     return true;
 }
index 3c34b2e..cee02f6 100644 (file)
@@ -107,7 +107,8 @@ void PlayerBasicStatistics::update_top_status()
 
     if (this->player_ptr->stat_top[status] != top) {
         this->player_ptr->stat_top[status] = (int16_t)top;
-        set_bits(this->player_ptr->redraw, PR_ABILITY_SCORE);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
         set_bits(this->player_ptr->window_flags, PW_PLAYER);
     }
 }
@@ -140,7 +141,8 @@ void PlayerBasicStatistics::update_use_status()
 
     if (this->player_ptr->stat_use[status] != use) {
         this->player_ptr->stat_use[status] = (int16_t)use;
-        set_bits(this->player_ptr->redraw, PR_ABILITY_SCORE);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
         set_bits(this->player_ptr->window_flags, PW_PLAYER);
     }
 }
index d362b6b..841086e 100644 (file)
@@ -217,7 +217,7 @@ bool set_food(PlayerType *player_ptr, TIME_EFFECT v)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    player_ptr->redraw |= (PR_HUNGER);
+    rfu.set_flag(MainWindowRedrawingFlag::HUNGER);
     handle_stuff(player_ptr);
 
     return true;
index 0a826e7..f2c35fb 100644 (file)
@@ -352,7 +352,8 @@ int take_hit(PlayerType *player_ptr, int damage_type, int damage, std::string_vi
         player_ptr->chp = 0;
     }
 
-    player_ptr->redraw |= PR_HP;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::HP);
     player_ptr->window_flags |= PW_PLAYER;
 
     if (damage_type != DAMAGE_GENO && player_ptr->chp == 0) {
index fc6e80d..b4a66c3 100644 (file)
@@ -174,7 +174,7 @@ bool move_player_effect(PlayerType *player_ptr, POSITION ny, POSITION nx, BIT_FL
         if (mpe_mode & MPE_FORGET_FLOW) {
             forget_flow(floor_ptr);
             rfu.set_flag(StatusRedrawingFlag::UN_VIEW);
-            player_ptr->redraw |= PR_MAP;
+            rfu.set_flag(MainWindowRedrawingFlag::MAP);
         }
 
         const auto flags_srf = {
index 55ca998..aed1cdf 100644 (file)
@@ -397,20 +397,21 @@ static void update_bonuses(PlayerType *player_ptr)
     is_esp_updated |= player_ptr->esp_good != old_esp_good;
     is_esp_updated |= player_ptr->esp_nonliving != old_esp_nonliving;
     is_esp_updated |= player_ptr->esp_unique != old_esp_unique;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (is_esp_updated) {
-        RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
+        rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
     }
 
     if (player_ptr->see_inv != old_see_inv) {
-        RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
+        rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
     }
 
     if (player_ptr->pspeed != old_speed) {
-        set_bits(player_ptr->redraw, PR_SPEED);
+        rfu.set_flag(MainWindowRedrawingFlag::SPEED);
     }
 
     if ((player_ptr->dis_ac != old_dis_ac) || (player_ptr->dis_to_a != old_dis_to_a)) {
-        set_bits(player_ptr->redraw, PR_AC);
+        rfu.set_flag(MainWindowRedrawingFlag::AC);
         set_bits(player_ptr->window_flags, PW_PLAYER);
     }
 
@@ -496,7 +497,8 @@ static void update_max_hitpoints(PlayerType *player_ptr)
 #endif
     player_ptr->mhp = mhp;
 
-    player_ptr->redraw |= PR_HP;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::HP);
     player_ptr->window_flags |= PW_PLAYER;
 }
 
@@ -771,7 +773,8 @@ static void update_num_of_spells(PlayerType *player_ptr)
     }
 
     player_ptr->old_spells = player_ptr->new_spells;
-    set_bits(player_ptr->redraw, PR_STUDY);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::STUDY);
     set_bits(player_ptr->window_flags, PW_ITEM_KNOWLEDGTE);
 }
 
@@ -799,7 +802,7 @@ static void update_max_mana(PlayerType *player_ptr)
     } else {
         if (mp_ptr->spell_first > player_ptr->lev) {
             player_ptr->msp = 0;
-            set_bits(player_ptr->redraw, PR_MP);
+            RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
             return;
         }
 
@@ -1002,7 +1005,8 @@ static void update_max_mana(PlayerType *player_ptr)
         }
 #endif
         player_ptr->msp = msp;
-        set_bits(player_ptr->redraw, PR_MP);
+        auto &rfu = RedrawingFlagsUpdater::get_instance();
+        rfu.set_flag(MainWindowRedrawingFlag::MP);
         set_bits(player_ptr->window_flags, (PW_PLAYER | PW_SPELL));
     }
 
@@ -2896,13 +2900,13 @@ void check_experience(PlayerType *player_ptr)
         player_ptr->max_max_exp = player_ptr->max_exp;
     }
 
-    set_bits(player_ptr->redraw, PR_EXP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::EXP);
     handle_stuff(player_ptr);
 
     PlayerRace pr(player_ptr);
     bool android = pr.equals(PlayerRaceType::ANDROID);
     PLAYER_LEVEL old_lev = player_ptr->lev;
-    auto &rfu = RedrawingFlagsUpdater::get_instance();
     const auto flags_srf = {
         StatusRedrawingFlag::BONUS,
         StatusRedrawingFlag::HP,
@@ -2912,7 +2916,11 @@ void check_experience(PlayerType *player_ptr)
     while ((player_ptr->lev > 1) && (player_ptr->exp < ((android ? player_exp_a : player_exp)[player_ptr->lev - 2] * player_ptr->expfact / 100L))) {
         player_ptr->lev--;
         rfu.set_flags(flags_srf);
-        set_bits(player_ptr->redraw, PR_LEVEL | PR_TITLE);
+        const auto flags_mwrf = {
+            MainWindowRedrawingFlag::LEVEL,
+            MainWindowRedrawingFlag::TITLE,
+        };
+        rfu.set_flags(flags_mwrf);
         set_bits(player_ptr->window_flags, PW_PLAYER);
         handle_stuff(player_ptr);
     }
@@ -2941,7 +2949,12 @@ void check_experience(PlayerType *player_ptr)
         sound(SOUND_LEVEL);
         msg_format(_("レベル %d にようこそ。", "Welcome to level %d."), player_ptr->lev);
         rfu.set_flags(flags_srf);
-        set_bits(player_ptr->redraw, (PR_LEVEL | PR_TITLE | PR_EXP));
+        const auto flags_mwrf_levelup = {
+            MainWindowRedrawingFlag::LEVEL,
+            MainWindowRedrawingFlag::TITLE,
+            MainWindowRedrawingFlag::EXP,
+        };
+        rfu.set_flags(flags_mwrf_levelup);
         set_bits(player_ptr->window_flags, (PW_PLAYER | PW_SPELL | PW_INVENTORY));
         player_ptr->level_up_message = true;
         handle_stuff(player_ptr);
@@ -3002,7 +3015,11 @@ void check_experience(PlayerType *player_ptr)
         }
 
         rfu.set_flags(flags_srf);
-        set_bits(player_ptr->redraw, (PR_LEVEL | PR_TITLE));
+        const auto flags_mwrf = {
+            MainWindowRedrawingFlag::LEVEL,
+            MainWindowRedrawingFlag::TITLE,
+        };
+        rfu.set_flags(flags_mwrf);
         set_bits(player_ptr->window_flags, (PW_PLAYER | PW_SPELL));
         handle_stuff(player_ptr);
     }
index c52e73d..e79a347 100644 (file)
@@ -41,7 +41,7 @@ bool set_leveling(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->tsubureru = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
index 4513ba1..f41e826 100644 (file)
@@ -22,6 +22,7 @@
 #include "spell/spells-summon.h"
 #include "status/shape-changer.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/target-getter.h"
 #include "view/display-messages.h"
 
@@ -126,7 +127,7 @@ std::optional<std::string> do_chaos_spell(PlayerType *player_ptr, SPELL_IDX spel
                 if (!(player_ptr->special_attack & ATTACK_CONFUSE)) {
                     msg_print(_("あなたの手は光り始めた。", "Your hands start glowing."));
                     player_ptr->special_attack |= ATTACK_CONFUSE;
-                    player_ptr->redraw |= (PR_TIMED_EFFECT);
+                    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
                 }
             }
         }
index ddda552..784c620 100644 (file)
@@ -732,8 +732,7 @@ std::optional<std::string> do_hex_spell(PlayerType *player_ptr, spell_hex_type s
                     StatusRedrawingFlag::SPELLS,
                 };
                 rfu.set_flags(flags);
-                player_ptr->redraw |= (PR_EXTRA);
-
+                rfu.set_flag(MainWindowRedrawingFlag::EXTRA);
                 return "";
             }
         }
@@ -973,7 +972,12 @@ std::optional<std::string> do_hex_spell(PlayerType *player_ptr, spell_hex_type s
             StatusRedrawingFlag::SPELLS,
         };
         rfu.set_flags(flags_srf);
-        player_ptr->redraw |= (PR_EXTRA | PR_HP | PR_MP);
+        const auto flags_mwrf = {
+            MainWindowRedrawingFlag::EXTRA,
+            MainWindowRedrawingFlag::HP,
+            MainWindowRedrawingFlag::MP,
+        };
+        rfu.set_flags(flags_mwrf);
     }
 
     return "";
index b5f4eca..5f0e534 100644 (file)
@@ -952,7 +952,7 @@ std::optional<std::string> do_hissatsu_spell(PlayerType *player_ptr, SPELL_IDX s
                 }
                 command_dir = 0;
 
-                player_ptr->redraw |= PR_MP;
+                RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
                 handle_stuff(player_ptr);
             } while (player_ptr->csp > mana_cost_per_monster);
 
index adebc4f..ccc8d4b 100644 (file)
@@ -47,7 +47,7 @@ static void start_singing(PlayerType *player_ptr, SPELL_IDX spell, int32_t song)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 }
 
 /*!
@@ -1092,20 +1092,19 @@ std::optional<std::string> do_music_spell(PlayerType *player_ptr, SPELL_IDX spel
 
         if (cast) {
             msg_print(_("フィンゴルフィンの冥王への挑戦を歌った...", "You recall the valor of Fingolfin's challenge to the Dark Lord..."));
-
-            player_ptr->redraw |= (PR_MAP);
-            RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
+            auto &rfu = RedrawingFlagsUpdater::get_instance();
+            rfu.set_flag(MainWindowRedrawingFlag::MAP);
+            rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
             player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
-
             start_singing(player_ptr, spell, MUSIC_INVULN);
         }
 
         if (stop) {
             if (!player_ptr->invuln) {
                 msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
-
-                player_ptr->redraw |= (PR_MAP);
-                RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
+                auto &rfu = RedrawingFlagsUpdater::get_instance();
+                rfu.set_flag(MainWindowRedrawingFlag::MAP);
+                rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
                 player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
             }
         }
index b37932d..7ee1f58 100644 (file)
@@ -22,6 +22,7 @@
 #include "status/element-resistance.h"
 #include "system/item-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
 
@@ -113,7 +114,7 @@ static void compensate_death_scythe_reflection_magnification(PlayerType *player_
 
     if (!PlayerClass(player_ptr).equals(PlayerClassType::SAMURAI) && (death_scythe_flags.has(TR_FORCE_WEAPON)) && (player_ptr->csp > (player_ptr->msp / 30))) {
         player_ptr->csp -= (1 + (player_ptr->msp / 30));
-        player_ptr->redraw |= (PR_MP);
+        RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
         *magnification = *magnification * 3 / 2 + 20;
     }
 }
index 8fa9b28..9b815e2 100644 (file)
@@ -10,6 +10,7 @@
 #include "spell-kind/spells-perception.h"
 #include "status/bad-status-setter.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
 
@@ -53,9 +54,10 @@ void StoneOfLore::consume_mp()
         return;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (this->player_ptr->csp >= 20) {
         this->player_ptr->csp -= 20;
-        set_bits(this->player_ptr->redraw, PR_MP);
+        rfu.set_flag(MainWindowRedrawingFlag::MP);
         return;
     }
 
@@ -66,5 +68,5 @@ void StoneOfLore::consume_mp()
     BadStatusSetter bss(this->player_ptr);
     (void)bss.mod_paralysis(randint1(5 * oops + 1));
     (void)bss.mod_confusion(randint1(5 * oops + 1));
-    set_bits(this->player_ptr->redraw, PR_MP);
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
 }
index 80b8c8c..0ba3562 100644 (file)
@@ -32,6 +32,7 @@
 #include "system/grid-type-definition.h"
 #include "system/monster-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "system/terrain-type-definition.h"
 #include "target/grid-selector.h"
 #include "target/projection-path-calculator.h"
@@ -170,7 +171,7 @@ bool SpellsMirrorMaster::mirror_concentration()
         this->player_ptr->csp_frac = 0;
     }
 
-    set_bits(this->player_ptr->redraw, PR_MP);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MP);
     return true;
 }
 
index 4fa5321..cb0d729 100644 (file)
@@ -370,7 +370,12 @@ bool earthquake(PlayerType *player_ptr, POSITION cy, POSITION cx, POSITION r, MO
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= (PR_HEALTH | PR_UHEALTH | PR_MAP);
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::HEALTH,
+        MainWindowRedrawingFlag::UHEALTH,
+        MainWindowRedrawingFlag::MAP,
+    };
+    rfu.set_flags(flags_mwrf);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
     if (floor_ptr->grid_array[player_ptr->y][player_ptr->x].info & CAVE_GLOW) {
         set_superstealth(player_ptr, false);
index def895b..6f9eac4 100644 (file)
@@ -111,7 +111,7 @@ void fetch_item(PlayerType *player_ptr, DIRECTION dir, WEIGHT wgt, bool require_
     const auto item_name = describe_flavor(player_ptr, o_ptr, OD_NAME_ONLY);
     msg_format(_("%s^があなたの足元に飛んできた。", "%s^ flies through the air to your feet."), item_name.data());
     note_spot(player_ptr, player_ptr->y, player_ptr->x);
-    player_ptr->redraw |= PR_MAP;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::MAP);
 }
 
 bool fetch_monster(PlayerType *player_ptr)
index bb55532..cc9ccc4 100644 (file)
@@ -123,7 +123,7 @@ void wiz_lite(PlayerType *player_ptr, bool ninja)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON | PW_FOUND_ITEMS);
 
     if (player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x].info & CAVE_GLOW) {
@@ -188,7 +188,7 @@ void wiz_dark(PlayerType *player_ptr)
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON | PW_FOUND_ITEMS);
 }
 
@@ -242,7 +242,8 @@ void map_area(PlayerType *player_ptr, POSITION range)
         }
     }
 
-    player_ptr->redraw |= (PR_MAP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
 }
 
@@ -483,7 +484,7 @@ bool destroy_area(PlayerType *player_ptr, POSITION y1, POSITION x1, POSITION r,
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
 
     if (floor_ptr->grid_array[player_ptr->y][player_ptr->x].info & CAVE_GLOW) {
index 35f2c51..bc56384 100644 (file)
@@ -28,6 +28,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/bit-flags-calculator.h"
 #include "view/display-messages.h"
 
@@ -111,7 +112,8 @@ bool genocide_aux(PlayerType *player_ptr, MONSTER_IDX m_idx, int power, bool pla
     }
 
     move_cursor_relative(player_ptr->y, player_ptr->x);
-    player_ptr->redraw |= (PR_HP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::HP);
     player_ptr->window_flags |= (PW_PLAYER);
     handle_stuff(player_ptr);
     term_fresh();
index 0b64232..d9ede95 100644 (file)
@@ -69,7 +69,7 @@ bool wall_stone(PlayerType *player_ptr)
     bool dummy = project(player_ptr, 0, 1, player_ptr->y, player_ptr->x, 0, AttributeType::STONE_WALL, flg).notice;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::FLOW);
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     return dummy;
 }
 
index 8b598e1..8af0587 100644 (file)
@@ -33,6 +33,7 @@
 #include "system/monster-entity.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "target/projection-path-calculator.h"
 #include "target/target-checker.h"
 #include "target/target-setter.h"
@@ -358,16 +359,17 @@ void reserve_alter_reality(PlayerType *player_ptr, TIME_EFFECT turns)
         return;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->alter_reality || turns == 0) {
         player_ptr->alter_reality = 0;
         msg_print(_("景色が元に戻った...", "The view around you returns to normal..."));
-        player_ptr->redraw |= PR_TIMED_EFFECT;
+        rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         return;
     }
 
     player_ptr->alter_reality = turns;
     msg_print(_("回りの景色が変わり始めた...", "The view around you begins to change..."));
-    player_ptr->redraw |= PR_TIMED_EFFECT;
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 }
 
 /*!
@@ -469,10 +471,11 @@ bool recall_player(PlayerType *player_ptr, TIME_EFFECT turns)
         }
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     if (player_ptr->word_recall || turns == 0) {
         player_ptr->word_recall = 0;
         msg_print(_("張りつめた大気が流れ去った...", "A tension leaves the air around you..."));
-        player_ptr->redraw |= (PR_TIMED_EFFECT);
+        rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         return true;
     }
 
@@ -487,7 +490,7 @@ bool recall_player(PlayerType *player_ptr, TIME_EFFECT turns)
 
     player_ptr->word_recall = turns;
     msg_print(_("回りの大気が張りつめてきた...", "The air about you becomes charged..."));
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     return true;
 }
 
@@ -524,8 +527,7 @@ bool free_level_recall(PlayerType *player_ptr)
     }
 
     msg_print(_("回りの大気が張りつめてきた...", "The air about you becomes charged..."));
-
-    player_ptr->redraw |= PR_TIMED_EFFECT;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     return true;
 }
 
index 85cadef..6102d07 100644 (file)
@@ -197,7 +197,7 @@ bool vanish_dungeon(PlayerType *player_ptr)
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
     return true;
 }
index c8d1bad..238448b 100644 (file)
@@ -90,7 +90,7 @@ bool set_ele_attack(PlayerType *player_ptr, uint32_t attack_type, TIME_EFFECT v)
     }
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
 
@@ -153,7 +153,7 @@ bool set_ele_immune(PlayerType *player_ptr, uint32_t immune_type, TIME_EFFECT v)
     }
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
 
index df0bcdf..c70a525 100644 (file)
@@ -143,7 +143,7 @@ bool set_tim_sh_holy(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     player_ptr->tim_sh_holy = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 
     if (!notice) {
         return false;
@@ -193,7 +193,7 @@ bool set_tim_eyeeye(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     player_ptr->tim_eyeeye = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 
     if (!notice) {
         return false;
index 6f97d96..713eee0 100644 (file)
@@ -41,7 +41,7 @@ bool set_tim_sh_fire(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->tim_sh_fire = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 
     if (!notice) {
         return false;
index 0a53a7c..11d05f0 100644 (file)
@@ -82,7 +82,12 @@ void SpellHex::stop_all_spells()
         StatusRedrawingFlag::SPELLS,
     };
     rfu.set_flags(flags_srf);
-    this->player_ptr->redraw |= PR_EXTRA | PR_HP | PR_MP;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
+    rfu.set_flags(flags_mwrf);
 }
 
 /*!
@@ -126,7 +131,12 @@ bool SpellHex::stop_spells_with_selection()
         StatusRedrawingFlag::SPELLS,
     };
     rfu.set_flags(flags_srf);
-    this->player_ptr->redraw |= PR_EXTRA | PR_HP | PR_MP;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+    };
+    rfu.set_flags(flags_mwrf);
     return is_selected;
 }
 
@@ -229,21 +239,26 @@ bool SpellHex::process_mana_cost(const bool need_restart)
     }
 
     s64b_sub(&(this->player_ptr->csp), &(this->player_ptr->csp_frac), need_mana, need_mana_frac);
-    this->player_ptr->redraw |= PR_MP;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     if (!need_restart) {
         return true;
     }
 
     msg_print(_("詠唱を再開した。", "You restart casting."));
     this->player_ptr->action = ACTION_SPELL;
-    auto &rfu = RedrawingFlagsUpdater::get_instance();
     const auto flags_srf = {
         StatusRedrawingFlag::BONUS,
         StatusRedrawingFlag::HP,
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    this->player_ptr->redraw |= PR_MAP | PR_TIMED_EFFECT | PR_ACTION;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::TIMED_EFFECT,
+        MainWindowRedrawingFlag::ACTION,
+    };
+    rfu.set_flags(flags_mwrf);
     this->player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     return true;
 }
index dd82013..31c790f 100644 (file)
@@ -50,29 +50,32 @@ void check_music(PlayerType *player_ptr)
     if (s64b_cmp(player_ptr->csp, player_ptr->csp_frac, need_mana, need_mana_frac) < 0) {
         stop_singing(player_ptr);
         return;
-    } else {
-        s64b_sub(&(player_ptr->csp), &(player_ptr->csp_frac), need_mana, need_mana_frac);
-
-        player_ptr->redraw |= PR_MP;
-        if (interupting_song_effect != 0) {
-            set_singing_song_effect(player_ptr, interupting_song_effect);
-            set_interrupting_song_effect(player_ptr, MUSIC_NONE);
-            msg_print(_("歌を再開した。", "You resume singing."));
-            player_ptr->action = ACTION_SING;
-            auto &rfu = RedrawingFlagsUpdater::get_instance();
-            const auto flags_srf = {
-                StatusRedrawingFlag::BONUS,
-                StatusRedrawingFlag::HP,
-                StatusRedrawingFlag::MONSTER_STATUSES,
-            };
-            rfu.set_flags(flags_srf);
-            player_ptr->redraw |= (PR_MAP | PR_TIMED_EFFECT | PR_ACTION);
-            player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
-        }
     }
 
-    PlayerSkill(player_ptr).gain_continuous_spell_skill_exp(REALM_MUSIC, spell);
+    s64b_sub(&(player_ptr->csp), &(player_ptr->csp_frac), need_mana, need_mana_frac);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
+    if (interupting_song_effect != 0) {
+        set_singing_song_effect(player_ptr, interupting_song_effect);
+        set_interrupting_song_effect(player_ptr, MUSIC_NONE);
+        msg_print(_("歌を再開した。", "You resume singing."));
+        player_ptr->action = ACTION_SING;
+        const auto flags_srf = {
+            StatusRedrawingFlag::BONUS,
+            StatusRedrawingFlag::HP,
+            StatusRedrawingFlag::MONSTER_STATUSES,
+        };
+        rfu.set_flags(flags_srf);
+        const auto flags_mwrf = {
+            MainWindowRedrawingFlag::MAP,
+            MainWindowRedrawingFlag::TIMED_EFFECT,
+            MainWindowRedrawingFlag::ACTION,
+        };
+        rfu.set_flags(flags_mwrf);
+        player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
+    }
 
+    PlayerSkill(player_ptr).gain_continuous_spell_skill_exp(REALM_MUSIC, spell);
     exe_spell(player_ptr, REALM_MUSIC, spell, SpellProcessType::CONTNUATION);
 }
 
@@ -110,8 +113,7 @@ bool set_tim_stealth(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->tim_stealth = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -152,7 +154,7 @@ void stop_singing(PlayerType *player_ptr)
     set_singing_song_id(player_ptr, 0);
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    set_bits(player_ptr->redraw, PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 }
 
 bool music_singing(PlayerType *player_ptr, int music_songs)
index a4bab23..92530bf 100644 (file)
@@ -12,6 +12,7 @@
 #include "object/object-value.h"
 #include "system/item-entity.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "term/z-form.h"
 #include "view/display-messages.h"
 
@@ -84,7 +85,8 @@ bool alchemy(PlayerType *player_ptr)
 
     msg_format(_("%sを$%d の金に変えた。", "You turn %s to %d coins worth of gold."), item_name.data(), price);
     player_ptr->au += price;
-    player_ptr->redraw |= PR_GOLD;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::GOLD);
     player_ptr->window_flags |= PW_PLAYER;
     vary_item(player_ptr, item, -amt);
     return true;
index 5ebfe06..a0dd5c3 100644 (file)
@@ -215,7 +215,7 @@ bool time_walk(PlayerType *player_ptr)
 
     player_ptr->energy_need -= 1000 + (100 + player_ptr->csp - 50) * TURNS_PER_TICK / 10;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
     player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
     handle_stuff(player_ptr);
@@ -257,7 +257,7 @@ void roll_hitdice(PlayerType *player_ptr, spell_operation options)
     auto percent = (player_ptr->player_hp[PY_MAX_LEVEL - 1] * 200) / (2 * player_ptr->hitdie + ((PY_MAX_LEVEL - 1 + 3) * (player_ptr->hitdie + 1)));
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::HP);
-    player_ptr->redraw |= (PR_HP);
+    rfu.set_flag(MainWindowRedrawingFlag::HP);
     player_ptr->window_flags |= (PW_PLAYER);
 
     if (!(options & SPOP_NO_UPDATE)) {
@@ -495,7 +495,8 @@ bool restore_mana(PlayerType *player_ptr, bool magic_eater)
     player_ptr->csp = player_ptr->msp;
     player_ptr->csp_frac = 0;
     msg_print(_("頭がハッキリとした。", "You feel your head clear."));
-    player_ptr->redraw |= (PR_MP);
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::MP);
     player_ptr->window_flags |= (PW_PLAYER);
     player_ptr->window_flags |= (PW_SPELL);
     return true;
@@ -548,7 +549,7 @@ bool fishing(PlayerType *player_ptr)
     }
 
     set_action(player_ptr, ACTION_FISH);
-    player_ptr->redraw |= (PR_ACTION);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
     return true;
 }
 
index 226a65b..d1f883c 100644 (file)
@@ -43,7 +43,7 @@ void set_action(PlayerType *player_ptr, uint8_t typ)
     switch (prev_typ) {
     case ACTION_SEARCH:
         msg_print(_("探索をやめた。", "You no longer walk carefully."));
-        player_ptr->redraw |= (PR_SPEED);
+        rfu.set_flag(MainWindowRedrawingFlag::SPEED);
         break;
     case ACTION_REST:
         player_ptr->resting = 0;
@@ -62,7 +62,7 @@ void set_action(PlayerType *player_ptr, uint8_t typ)
         msg_print(_("型を崩した。", "You stop assuming the special stance."));
         PlayerClass(player_ptr).set_samurai_stance(SamuraiStanceType::NONE);
         rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-        player_ptr->redraw |= (PR_TIMED_EFFECT);
+        rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
         break;
     case ACTION_SING:
         msg_print(_("歌うのをやめた。", "You stop singing."));
@@ -93,7 +93,7 @@ void set_action(PlayerType *player_ptr, uint8_t typ)
     switch (player_ptr->action) {
     case ACTION_SEARCH:
         msg_print(_("注意深く歩き始めた。", "You begin to walk carefully."));
-        player_ptr->redraw |= (PR_SPEED);
+        rfu.set_flag(MainWindowRedrawingFlag::SPEED);
         break;
     case ACTION_LEARN:
         msg_print(_("学習を始めた。", "You begin learning"));
@@ -109,5 +109,5 @@ void set_action(PlayerType *player_ptr, uint8_t typ)
     }
 
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    player_ptr->redraw |= (PR_ACTION);
+    rfu.set_flag(MainWindowRedrawingFlag::ACTION);
 }
index 5744336..351c02f 100644 (file)
@@ -83,7 +83,8 @@ bool BadStatusSetter::set_blindness(const TIME_EFFECT tmp_v)
     }
 
     blindness->set(v);
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -100,9 +101,8 @@ bool BadStatusSetter::set_blindness(const TIME_EFFECT tmp_v)
         StatusRedrawingFlag::MONSTER_STATUSES,
         StatusRedrawingFlag::MONSTER_LITE,
     };
-    auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flags(flags_srf);
-    this->player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     this->player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     handle_stuff(this->player_ptr);
     return true;
@@ -126,24 +126,23 @@ bool BadStatusSetter::set_confusion(const TIME_EFFECT tmp_v)
         return false;
     }
 
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
     auto is_confused = this->player_confusion->is_confused();
     if (v > 0) {
         if (!is_confused) {
             msg_print(_("あなたは混乱した!", "You are confused!"));
-            auto &rfu = RedrawingFlagsUpdater::get_instance();
             if (this->player_ptr->action == ACTION_LEARN) {
                 msg_print(_("学習が続けられない!", "You cannot continue learning!"));
                 auto bluemage_data = PlayerClass(player_ptr).get_specific_data<bluemage_data_type>();
                 bluemage_data->new_magic_learned = false;
-
-                this->player_ptr->redraw |= PR_ACTION;
+                rfu.set_flag(MainWindowRedrawingFlag::ACTION);
                 this->player_ptr->action = ACTION_NONE;
             }
             if (this->player_ptr->action == ACTION_MONK_STANCE) {
                 msg_print(_("構えがとけた。", "You lose your stance."));
                 PlayerClass(player_ptr).set_monk_stance(MonkStanceType::NONE);
                 rfu.set_flag(StatusRedrawingFlag::BONUS);
-                this->player_ptr->redraw |= PR_ACTION;
+                rfu.set_flag(MainWindowRedrawingFlag::ACTION);
                 this->player_ptr->action = ACTION_NONE;
             } else if (this->player_ptr->action == ACTION_SAMURAI_STANCE) {
                 msg_print(_("型が崩れた。", "You lose your stance."));
@@ -171,7 +170,7 @@ bool BadStatusSetter::set_confusion(const TIME_EFFECT tmp_v)
     }
 
     this->player_confusion->set(v);
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -217,7 +216,7 @@ bool BadStatusSetter::set_poison(const TIME_EFFECT tmp_v)
     }
 
     player_poison->set(v);
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -268,7 +267,7 @@ bool BadStatusSetter::set_fear(const TIME_EFFECT tmp_v)
     }
 
     fear->set(v);
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -321,7 +320,7 @@ bool BadStatusSetter::set_paralysis(const TIME_EFFECT tmp_v)
     }
 
     paralysis->set(v);
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -330,7 +329,7 @@ bool BadStatusSetter::set_paralysis(const TIME_EFFECT tmp_v)
         disturb(this->player_ptr, false, false);
     }
 
-    this->player_ptr->redraw |= PR_ACTION;
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::ACTION);
     handle_stuff(this->player_ptr);
     return true;
 }
@@ -376,7 +375,8 @@ bool BadStatusSetter::hallucination(const TIME_EFFECT tmp_v)
     }
 
     hallucination->set(v);
-    this->player_ptr->redraw |= PR_TIMED_EFFECT;
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -385,8 +385,12 @@ bool BadStatusSetter::hallucination(const TIME_EFFECT tmp_v)
         disturb(this->player_ptr, false, true);
     }
 
-    auto &rfu = RedrawingFlagsUpdater::get_instance();
-    this->player_ptr->redraw |= PR_MAP | PR_HEALTH | PR_UHEALTH;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::MAP,
+        MainWindowRedrawingFlag::HEALTH,
+        MainWindowRedrawingFlag::UHEALTH,
+    };
+    rfu.set_flags(flags_mwrf);
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
     this->player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
     handle_stuff(this->player_ptr);
@@ -479,7 +483,7 @@ bool BadStatusSetter::set_stun(const TIME_EFFECT tmp_v)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    this->player_ptr->redraw |= PR_STUN;
+    rfu.set_flag(MainWindowRedrawingFlag::STUN);
     handle_stuff(this->player_ptr);
     return true;
 }
@@ -519,7 +523,7 @@ bool BadStatusSetter::set_cut(const TIME_EFFECT tmp_v)
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::BONUS);
-    this->player_ptr->redraw |= PR_CUT;
+    rfu.set_flag(MainWindowRedrawingFlag::CUT);
     handle_stuff(this->player_ptr);
     return true;
 }
index 41c04b1..ce9f989 100644 (file)
@@ -179,7 +179,7 @@ bool dec_stat(PlayerType *player_ptr, int stat, int amount, int permanent)
         player_ptr->stat_cur[stat] = cur;
         player_ptr->stat_max[stat] = max;
         auto &rfu = RedrawingFlagsUpdater::get_instance();
-        player_ptr->redraw |= (PR_ABILITY_SCORE);
+        rfu.set_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
         rfu.set_flag(StatusRedrawingFlag::BONUS);
     }
 
@@ -197,7 +197,7 @@ bool res_stat(PlayerType *player_ptr, int stat)
         player_ptr->stat_cur[stat] = player_ptr->stat_max[stat];
         auto &rfu = RedrawingFlagsUpdater::get_instance();
         rfu.set_flag(StatusRedrawingFlag::BONUS);
-        player_ptr->redraw |= (PR_ABILITY_SCORE);
+        rfu.set_flag(MainWindowRedrawingFlag::ABILITY_SCORE);
         return true;
     }
 
index 8663533..455e10e 100644 (file)
@@ -46,7 +46,7 @@ bool set_protevil(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->protevil = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 
     if (!notice) {
         return false;
@@ -89,7 +89,7 @@ bool set_invuln(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
             chg_virtue(player_ptr, Virtue::HONOUR, -2);
             chg_virtue(player_ptr, Virtue::SACRIFICE, -3);
             chg_virtue(player_ptr, Virtue::VALOUR, -5);
-            player_ptr->redraw |= (PR_MAP);
+            rfu.set_flag(MainWindowRedrawingFlag::MAP);
             rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
             player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
         }
@@ -97,7 +97,7 @@ bool set_invuln(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         if (player_ptr->invuln && !music_singing(player_ptr, MUSIC_INVULN)) {
             msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
             notice = true;
-            player_ptr->redraw |= (PR_MAP);
+            rfu.set_flag(MainWindowRedrawingFlag::MAP);
             rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
             player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
             player_ptr->energy_need += ENERGY_NEED();
@@ -105,7 +105,7 @@ bool set_invuln(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->invuln = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
 
     if (!notice) {
         return false;
@@ -153,8 +153,8 @@ bool set_tim_regen(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->tim_regen = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -163,7 +163,7 @@ bool set_tim_regen(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         disturb(player_ptr, false, false);
     }
 
-    RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }
@@ -201,8 +201,8 @@ bool set_tim_reflect(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->tim_reflect = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -211,7 +211,7 @@ bool set_tim_reflect(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         disturb(player_ptr, false, false);
     }
 
-    RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }
@@ -249,8 +249,8 @@ bool set_pass_wall(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->tim_pass_wall = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -259,7 +259,7 @@ bool set_pass_wall(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         disturb(player_ptr, false, false);
     }
 
-    RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }
index ef8f073..405e90b 100644 (file)
@@ -204,8 +204,8 @@ bool set_shield(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->shield = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -213,7 +213,8 @@ bool set_shield(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
-    RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
+
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }
@@ -251,8 +252,8 @@ bool set_magicdef(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->magicdef = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -261,7 +262,7 @@ bool set_magicdef(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         disturb(player_ptr, false, false);
     }
 
-    RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }
@@ -299,8 +300,8 @@ bool set_blessed(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->blessed = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -309,7 +310,7 @@ bool set_blessed(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         disturb(player_ptr, false, false);
     }
 
-    RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }
@@ -347,8 +348,8 @@ bool set_hero(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->hero = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -417,12 +418,16 @@ bool set_mimic(PlayerType *player_ptr, TIME_EFFECT v, MimicKindType mimic_race_i
     }
 
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_BASIC | PR_TIMED_EFFECT);
-    const auto flags = {
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::TIMED_EFFECT,
+    };
+    rfu.set_flags(flags_mwrf);
+    const auto flags_srf = {
         StatusRedrawingFlag::BONUS,
         StatusRedrawingFlag::HP,
     };
-    rfu.set_flags(flags);
+    rfu.set_flags(flags_srf);
     handle_stuff(player_ptr);
     return true;
 }
@@ -465,8 +470,8 @@ bool set_shero(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->shero = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -513,8 +518,7 @@ bool set_wraith_form(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
             chg_virtue(player_ptr, Virtue::HONOUR, -2);
             chg_virtue(player_ptr, Virtue::SACRIFICE, -2);
             chg_virtue(player_ptr, Virtue::VALOUR, -5);
-
-            player_ptr->redraw |= (PR_MAP);
+            rfu.set_flag(MainWindowRedrawingFlag::MAP);
             rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
             player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
         }
@@ -522,16 +526,14 @@ bool set_wraith_form(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         if (player_ptr->wraith_form) {
             msg_print(_("不透明になった感じがする。", "You feel opaque."));
             notice = true;
-
-            player_ptr->redraw |= (PR_MAP);
+            rfu.set_flag(MainWindowRedrawingFlag::MAP);
             rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
             player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
         }
     }
 
     player_ptr->wraith_form = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -539,6 +541,7 @@ bool set_wraith_form(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
@@ -582,10 +585,9 @@ bool set_tsuyoshi(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
         }
     }
 
-    auto &rfu = RedrawingFlagsUpdater::get_instance();
     player_ptr->tsuyoshi = v;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
-
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
index 001c124..9c95155 100644 (file)
@@ -11,6 +11,7 @@
 #include "realm/realm-song-numbers.h"
 #include "spell-realm/spells-song.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "view/display-messages.h"
 
 /*!
@@ -46,15 +47,15 @@ bool set_oppose_acid(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->oppose_acid = v;
-
     if (!notice) {
         return false;
     }
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
 
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     handle_stuff(player_ptr);
     return true;
 }
@@ -93,15 +94,15 @@ bool set_oppose_elec(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->oppose_elec = v;
-
     if (!notice) {
         return false;
     }
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
 
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     handle_stuff(player_ptr);
     return true;
 }
@@ -142,15 +143,15 @@ bool set_oppose_fire(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->oppose_fire = v;
-
     if (!notice) {
         return false;
     }
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
 
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     handle_stuff(player_ptr);
     return true;
 }
@@ -188,15 +189,15 @@ bool set_oppose_cold(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->oppose_cold = v;
-
     if (!notice) {
         return false;
     }
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
 
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     handle_stuff(player_ptr);
     return true;
 }
@@ -241,11 +242,12 @@ bool set_oppose_pois(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
     if (!notice) {
         return false;
     }
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
 
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (disturb_state) {
         disturb(player_ptr, false, false);
     }
+
     handle_stuff(player_ptr);
     return true;
 }
index bda82af..80c604b 100644 (file)
@@ -98,7 +98,7 @@ void change_race(PlayerType *player_ptr, PlayerRaceType new_race, concptr effect
     roll_hitdice(player_ptr, SPOP_NONE);
     check_experience(player_ptr);
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_BASIC);
+    rfu.set_flag(MainWindowRedrawingFlag::BASIC);
     rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
 
index c406c48..e43444d 100644 (file)
@@ -13,7 +13,7 @@
 static bool update_sight(PlayerType *player_ptr, const bool notice)
 {
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
index eaf7696..8e1b41c 100644 (file)
@@ -41,7 +41,7 @@ bool set_tim_levitation(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->tim_levitation = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -83,7 +83,7 @@ bool set_ultimate_res(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->ult_res = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -127,7 +127,7 @@ bool set_tim_res_nether(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->tim_res_nether = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
@@ -168,7 +168,7 @@ bool set_tim_res_time(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 
     player_ptr->tim_res_time = v;
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (!notice) {
         return false;
     }
index ab0c911..2ffd3c7 100644 (file)
@@ -219,7 +219,12 @@ void do_cmd_store(PlayerType *player_ptr)
         StatusRedrawingFlag::MONSTER_STATUSES,
     };
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= PR_BASIC | PR_EXTRA | PR_EQUIPPY;
-    player_ptr->redraw |= PR_MAP;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::EXTRA,
+        MainWindowRedrawingFlag::EQUIPPY,
+        MainWindowRedrawingFlag::MAP,
+    };
+    rfu.set_flags(flags_mwrf);
     player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
 }
index b0e5065..f5d0e37 100644 (file)
@@ -282,7 +282,6 @@ public:
 
     POSITION cur_lite{}; /* Radius of lite (if any) */
 
-    BIT_FLAGS redraw{}; /* Normal Redraws */
     BIT_FLAGS window_flags{}; /* Window Redraws */
     int16_t stat_use[A_MAX]{}; /* Current modified stats */
     int16_t stat_top[A_MAX]{}; /* Maximal modified stats */
index 4fa874a..79e2b40 100644 (file)
@@ -161,7 +161,7 @@ void tgt_pt_info::move_to_symbol(PlayerType *player_ptr)
         verify_panel(player_ptr);
         auto &rfu = RedrawingFlagsUpdater::get_instance();
         rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-        player_ptr->redraw |= PR_MAP;
+        rfu.set_flag(MainWindowRedrawingFlag::MAP);
         player_ptr->window_flags |= PW_OVERHEAD;
         handle_stuff(player_ptr);
     } else {
@@ -305,7 +305,7 @@ bool tgt_pt(PlayerType *player_ptr, POSITION *x_ptr, POSITION *y_ptr)
     verify_panel(player_ptr);
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= PW_OVERHEAD;
     handle_stuff(player_ptr);
     *x_ptr = info.x;
index d8a778f..fb4c5d8 100644 (file)
@@ -128,7 +128,7 @@ void verify_panel(PlayerType *player_ptr)
     panel_bounds_center();
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    player_ptr->redraw |= PR_MAP;
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
 }
 
index 2ee8f1f..78dbc8e 100644 (file)
@@ -256,7 +256,7 @@ static void switch_target_input(PlayerType *player_ptr, ts_type *ts_ptr)
         verify_panel(player_ptr);
         auto &rfu = RedrawingFlagsUpdater::get_instance();
         rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-        player_ptr->redraw |= PR_MAP;
+        rfu.set_flag(MainWindowRedrawingFlag::MAP);
         player_ptr->window_flags |= PW_OVERHEAD;
         handle_stuff(player_ptr);
         target_set_prepare(player_ptr, ys_interest, xs_interest, ts_ptr->mode);
@@ -354,7 +354,7 @@ static void sweep_targets(PlayerType *player_ptr, ts_type *ts_ptr)
         panel_col_min = ts_ptr->x2;
         panel_bounds_center();
         rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-        player_ptr->redraw |= PR_MAP;
+        rfu.set_flag(MainWindowRedrawingFlag::MAP);
         player_ptr->window_flags |= PW_OVERHEAD;
         handle_stuff(player_ptr);
         target_set_prepare(player_ptr, ys_interest, xs_interest, ts_ptr->mode);
@@ -457,7 +457,7 @@ static void switch_next_grid_command(PlayerType *player_ptr, ts_type *ts_ptr)
         verify_panel(player_ptr);
         auto &rfu = RedrawingFlagsUpdater::get_instance();
         rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-        player_ptr->redraw |= PR_MAP;
+        rfu.set_flag(MainWindowRedrawingFlag::MAP);
         player_ptr->window_flags |= PW_OVERHEAD;
         handle_stuff(player_ptr);
         target_set_prepare(player_ptr, ys_interest, xs_interest, ts_ptr->mode);
@@ -601,7 +601,7 @@ bool target_set(PlayerType *player_ptr, target_type mode)
     verify_panel(player_ptr);
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
-    set_bits(player_ptr->redraw, PR_MAP);
+    rfu.set_flag(MainWindowRedrawingFlag::MAP);
     set_bits(player_ptr->window_flags, PW_OVERHEAD | PW_FLOOR_ITEMS);
     handle_stuff(player_ptr);
     return target_who != 0;
index 805c6ee..fe12749 100644 (file)
@@ -676,7 +676,7 @@ void wiz_learn_items_all(PlayerType *player_ptr)
 static void change_birth_flags(PlayerType *player_ptr)
 {
     auto &rfu = RedrawingFlagsUpdater::get_instance();
-    const auto &flags_srf = EnumClassFlagGroup<StatusRedrawingFlag>{
+    const auto flags_srf = {
         StatusRedrawingFlag::BONUS,
         StatusRedrawingFlag::HP,
         StatusRedrawingFlag::MP,
@@ -684,7 +684,13 @@ static void change_birth_flags(PlayerType *player_ptr)
     };
     player_ptr->window_flags |= PW_PLAYER;
     rfu.set_flags(flags_srf);
-    player_ptr->redraw |= PR_BASIC | PR_HP | PR_MP | PR_ABILITY_SCORE;
+    const auto flags_mwrf = {
+        MainWindowRedrawingFlag::BASIC,
+        MainWindowRedrawingFlag::HP,
+        MainWindowRedrawingFlag::MP,
+        MainWindowRedrawingFlag::ABILITY_SCORE,
+    };
+    rfu.set_flags(flags_mwrf);
 }
 
 /*!
index 0f44cda..32d4414 100644 (file)
@@ -16,6 +16,7 @@
 #include "system/floor-type-definition.h"
 #include "system/monster-race-info.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "util/enum-range.h"
 #include "view/display-messages.h"
 #include "world/world.h"
@@ -66,7 +67,7 @@ void execute_recall(PlayerType *player_ptr)
     }
 
     player_ptr->word_recall--;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (player_ptr->word_recall != 0) {
         return;
     }
@@ -150,7 +151,7 @@ void execute_floor_reset(PlayerType *player_ptr)
     }
 
     player_ptr->alter_reality--;
-    player_ptr->redraw |= (PR_TIMED_EFFECT);
+    RedrawingFlagsUpdater::get_instance().set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
     if (player_ptr->alter_reality != 0) {
         return;
     }