#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-confusion.h"
#include "timed-effect/player-hallucination.h"
if (p_can_kill_walls) {
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_DISI);
- player_ptr->update |= PU_FLOW;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
}
uint32_t mpe_mode = MPE_ENERGY_USE;
#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 "util/bit-flags-calculator.h"
#include "view/display-messages.h"
sound(SOUND_DIG_THROUGH);
msg_format(_("%sをくずした。", "You have removed the %s."), name);
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::TUNNEL);
- player_ptr->update |= PU_FLOW;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
} else {
msg_format(_("%sをくずしている。", "You dig into the %s."), name);
more = true;
msg_format(_("%sを切り払った。", "You have cleared away the %s."), name);
} else {
msg_print(_("穴を掘り終えた。", "You have finished the tunnel."));
- player_ptr->update |= (PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
}
if (f_ptr->flags.has(TerrainCharacteristics::GLASS)) {
#include "system/item-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"
autopick_last_destroyed_object = *o_ptr;
o_ptr->marked.set(OmType::AUTODESTROY);
- player_ptr->update |= PU_AUTO_DESTRUCTION;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::AUTO_DESTRUCTION);
}
#include "object-enchant/item-feeling.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 "util/quarks.h"
o_ptr->inscription = autopick_list[idx].insc;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->window_flags |= (PW_EQUIPMENT | PW_INVENTORY);
- player_ptr->update |= (PU_BONUS);
- player_ptr->update |= (PU_COMBINATION);
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ };
+ rfu.set_flags(flags);
}
/*!
#include "player-info/race-types.h"
#include "realm/realm-names-table.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "util/enum-converter.h"
/*!
}
}
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
return;
}
}
#include "player/process-name.h"
#include "system/game-option-types.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"
static bool display_auto_roller_result(PlayerType *player_ptr, bool prev, char *c)
{
BIT_FLAGS mode = 0;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
while (true) {
- player_ptr->update |= (PU_BONUS | PU_HP);
+ rfu.set_flags(flags);
update_creature(player_ptr);
player_ptr->chp = player_ptr->mhp;
player_ptr->csp = player_ptr->msp;
#include "player/process-name.h"
#include "player/race-info-table.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "util/enum-converter.h"
ap_ptr = &personality_info[player_ptr->ppersonality];
get_extra(player_ptr, false);
- player_ptr->update |= (PU_BONUS | PU_HP);
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
update_creature(player_ptr);
player_ptr->chp = player_ptr->mhp;
player_ptr->csp = player_ptr->msp;
#include "status/action-setter.h"
#include "system/item-entity.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/int-char-converter.h"
PlayerEnergy(player_ptr).set_player_turn_energy(100);
}
- player_ptr->update |= (PU_SPELLS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::SPELLS);
}
#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 "timed-effect/player-cut.h"
player_ptr->resting = command_arg;
player_ptr->action = ACTION_REST;
- player_ptr->update |= PU_BONUS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->redraw |= (PR_ACTION);
handle_stuff(player_ptr);
term_fresh();
#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/target-checker.h"
#include "target/target-getter.h"
ang_sort(player_ptr, who.data(), &dummy_why, who.size(), ang_sort_comp_pet_dismiss, ang_sort_swap_hook);
/* Process the monsters (backwards) */
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
for (auto i = 0U; i < who.size(); i++) {
auto pet_ctr = who[i];
m_ptr = &player_ptr->current_floor_ptr->m_list[pet_ctr];
msg_format(_("%sから降りた。", "You dismount from %s. "), friend_name.data());
player_ptr->riding = 0;
-
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= (PR_EXTRA | PR_UHEALTH);
}
/* HACK : Add the line to message buffer */
msg_format(_("%s を放した。", "Dismissed %s."), friend_name.data());
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->window_flags |= (PW_MESSAGE);
delete_monster_idx(player_ptr, pet_ctr);
PlayerEnergy(player_ptr).set_player_turn_energy(100);
- /* Mega-Hack -- Forget the view and lite */
- player_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
- player_ptr->update |= (PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::BONUS,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_MAP | PR_EXTRA);
player_ptr->redraw |= (PR_UHEALTH);
} else {
player_ptr->pet_extra_flags |= (PF_TWO_HANDS);
}
- player_ptr->update |= (PU_BONUS);
+
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
break;
}
#include "system/floor-type-definition.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "term/z-form.h"
#include "timed-effect/player-blindness.h"
player_ptr->old_realm |= 1U << (player_ptr->realm2 - 1);
player_ptr->realm2 = next_realm;
- player_ptr->update |= (PU_REORDER);
- player_ptr->update |= (PU_SPELLS);
+ const auto flags = {
+ StatusRedrawingFlag::REORDER,
+ StatusRedrawingFlag::SPELLS,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
handle_stuff(player_ptr);
/* Load an autopick preference file */
/* One less spell available */
player_ptr->learned_spells++;
- /* Update Study */
- player_ptr->update |= (PU_SPELLS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::SPELLS);
update_creature(player_ptr);
/* Redraw object recall */
#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 "term/gameterm.h"
#include "term/screen-processor.h"
w_ptr->character_icky_depth--;
term_clear();
- player_ptr->update |= (PU_VIEW | PU_MONSTER_STATUSES | PU_BONUS | PU_LITE | PU_MONSTER_LITE);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ 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);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
}
#include "io/screen-util.h"
#include "main/sound-of-music.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"
}
verify_panel(player_ptr);
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
handle_stuff(player_ptr);
#include "system/item-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"
#include "view/object-describer.h"
* do not rearrange the inventory before the food item is destroyed in
* the pack.
*/
- BIT_FLAGS inventory_flags = (PU_COMBINATION | PU_REORDER | (player_ptr->update & PU_AUTO_DESTRUCTION));
- player_ptr->update &= ~(PU_COMBINATION | PU_REORDER | PU_AUTO_DESTRUCTION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ using Srf = StatusRedrawingFlag;
+ EnumClassFlagGroup<Srf> flags_srf = { Srf::COMBINATION, Srf::REORDER };
+ if (rfu.has(Srf::AUTO_DESTRUCTION)) {
+ flags_srf.set(Srf::AUTO_DESTRUCTION);
+ }
+ rfu.reset_flags(flags_srf);
if (!(o_ptr->is_aware())) {
chg_virtue(player_ptr, Virtue::KNOWLEDGE, -1);
chg_virtue(player_ptr, Virtue::PATIENCE, -1);
/* Undeads drain recharge of magic device */
if (exe_eat_charge_of_magic_device(player_ptr, o_ptr, item)) {
- player_ptr->update |= inventory_flags;
+ rfu.set_flags(flags_srf);
return;
}
msg_format(_("%sは燃え上り灰になった。精力を吸収した気がする。", "%s^ is burnt to ashes. You absorb its vitality!"), item_name.data());
(void)set_food(player_ptr, PY_FOOD_MAX - 1);
- player_ptr->update |= inventory_flags;
+ rfu.set_flags(flags_srf);
vary_item(player_ptr, item, -1);
return;
}
}
}
- player_ptr->update |= inventory_flags;
+ rfu.set_flags(flags_srf);
vary_item(player_ptr, item, -1);
}
#include "status/shape-changer.h"
#include "system/item-entity.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"
*/
static void do_curse_on_equip(OBJECT_IDX slot, ItemEntity *o_ptr, PlayerType *player_ptr)
{
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (set_anubis_and_chariot(player_ptr) && ((slot == INVEN_MAIN_HAND) || (slot == INVEN_SUB_HAND))) {
ItemEntity *anubis = &(player_ptr->inventory_list[INVEN_MAIN_HAND]);
chariot->curse_flags.set(CurseTraitType::VUL_CURSE);
msg_format(_("『銀の戦車』プラス『アヌビス神』二刀流ッ!", "*Silver Chariot* plus *Anubis God* Two Swords!"));
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
return;
}
o_ptr->curse_flags.set(CurseTraitType::HEAVY_CURSE);
msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding your %s..."), item_name.data());
o_ptr->feeling = FEEL_NONE;
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
}
/*!
}
calc_android_exp(player_ptr);
- player_ptr->update |= PU_BONUS | PU_TORCH | PU_MP;
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::MP,
+ };
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_EQUIPPY;
player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
}
}
PlayerEnergy energy(player_ptr);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (o_ptr->is_cursed()) {
if (o_ptr->curse_flags.has(CurseTraitType::PERMA_CURSE) || !pc.equals(PlayerClassType::BERSERKER)) {
msg_print(_("ふーむ、どうやら呪われているようだ。", "Hmmm, it seems to be cursed."));
o_ptr->ident |= (IDENT_SENSE);
o_ptr->curse_flags.clear();
o_ptr->feeling = FEEL_NONE;
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->window_flags |= PW_EQUIPMENT;
msg_print(_("呪いを打ち破った。", "You break the curse."));
} else {
(void)inven_takeoff(player_ptr, item, 255);
verify_equip_slot(player_ptr, item);
calc_android_exp(player_ptr);
- player_ptr->update |= PU_BONUS | PU_TORCH | PU_MP;
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::MP,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_EQUIPPY;
player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
}
#include "status/action-setter.h"
#include "system/item-entity.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"
msg_print(_("銘を消した。", "Inscription removed."));
o_ptr->inscription.reset();
- set_bits(player_ptr->update, PU_COMBINATION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::BONUS,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
- set_bits(player_ptr->update, PU_BONUS);
}
/*!
if (get_string(_("銘: ", "Inscription: "), out_val, MAX_INSCRIPTION)) {
o_ptr->inscription.emplace(out_val);
- set_bits(player_ptr->update, PU_COMBINATION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::BONUS,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
- set_bits(player_ptr->update, PU_BONUS);
}
}
#include "sv-definition/sv-lite-types.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"
}
vary_item(player_ptr, item, -1);
- player_ptr->update |= PU_TORCH;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::TORCH);
}
/*!
}
vary_item(player_ptr, item, -1);
- player_ptr->update |= PU_TORCH;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::TORCH);
}
/*!
#include "player/process-name.h"
#include "racial/racial-android.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"
{
term_xtra(TERM_XTRA_REACT, 0);
- player_ptr->update |= (PU_COMBINATION | PU_REORDER);
- player_ptr->update |= (PU_TORCH);
- player_ptr->update |= (PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
- player_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
- player_ptr->update |= (PU_VIEW | PU_LITE | PU_MONSTER_LITE);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
#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"
}
/* Forget the wall */
reset_bits(g_ptr->info, (CAVE_MARK));
- set_bits(player_ptr->update, PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTER_LITE);
+ const auto flags = {
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::FLOW,
+ StatusRedrawingFlag::MONSTER_LITE,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
/* Destroy the wall */
cave_alter_feat(player_ptr, ny, nx, TerrainCharacteristics::HURT_ROCK);
#include "player/attack-defense-types.h"
#include "status/action-setter.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-checker.h"
#include "term/screen-processor.h"
*/
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;
verify_panel(player_ptr);
}
- player_ptr->update |= PU_TORCH;
- player_ptr->update |= PU_FLOW;
+ const auto flags = {
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::FLOW,
+ };
+ rfu.set_flags(flags);
}
if (stop_travel) {
verify_panel(player_ptr);
}
- player_ptr->update |= PU_TORCH;
+ rfu.set_flag(StatusRedrawingFlag::TORCH);
}
if (flush_disturb) {
#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 "term/gameterm.h"
#include "term/screen-processor.h"
quit(0);
}
- player_ptr->update |= (PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
update_creature(player_ptr);
player_ptr->is_dead = true;
w_ptr->start_time = (uint32_t)time(nullptr);
#include "system/grid-type-definition.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 "timed-effect/player-blindness.h"
#include "timed-effect/player-confusion.h"
set_lightspeed(player_ptr, player_ptr->lightspeed - 1, true);
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (PlayerClass(player_ptr).equals(PlayerClassType::FORCETRAINER) && get_current_ki(player_ptr)) {
if (get_current_ki(player_ptr) < 40) {
set_current_ki(player_ptr, true, 0);
} else {
set_current_ki(player_ptr, false, -40);
}
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
}
if (player_ptr->action == ACTION_LEARN) {
if (player_ptr->timewalk && (player_ptr->energy_need > -1000)) {
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
msg_print(_("「時は動きだす…」", "You feel time flowing around you once more."));
#include "core/window-redrawer.h"
#include "player/player-status.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
/*!
* @brief 全更新処理をチェックして処理していく
- * Handle "player_ptr->update" and "player_ptr->redraw" and "player_ptr->window"
*/
void handle_stuff(PlayerType *player_ptr)
{
- if (player_ptr->update) {
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ if (rfu.any_stats()) {
update_creature(player_ptr);
}
+
if (player_ptr->redraw) {
redraw_stuff(player_ptr);
}
+
if (player_ptr->window_flags) {
window_stuff(player_ptr);
}
bool update_player(PlayerType *player_ptr)
{
- player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= PW_INVENTORY;
return true;
}
player_ptr->csp = player_ptr->msp;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= PR_MP;
- player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= PW_INVENTORY;
return true;
}
#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 "target/target-checker.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
msg_erase();
w_ptr->character_xtra = true;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ 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);
- set_bits(player_ptr->update, PU_BONUS | PU_HP | PU_MP | PU_SPELLS | PU_VIEW | PU_LITE | PU_MONSTER_LITE | PU_TORCH | PU_MONSTER_STATUSES | PU_DISTANCE | PU_FLOW);
+ rfu.set_flags(flags_srf);
handle_stuff(player_ptr);
w_ptr->character_xtra = false;
- set_bits(player_ptr->update, PU_BONUS | PU_HP | PU_MP | PU_SPELLS | PU_COMBINATION | PU_REORDER);
+ flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
handle_stuff(player_ptr);
term_fresh();
#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"
#include <algorithm>
msg_print(_("魔法の階段が現れた...", "A magical staircase appears..."));
cave_set_feat(this->player_ptr, y, x, feat_down_stair);
- set_bits(this->player_ptr->update, PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
return Pos2D(y, x);
}
#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 "timed-effect/player-blindness.h"
#include "timed-effect/timed-effects.h"
}
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_ROCK);
- player_ptr->update |= (PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
break;
}
case AttributeType::MAKE_DOOR: {
}
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_ROCK);
- player_ptr->update |= (PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
break;
}
case AttributeType::SOUND: {
}
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_ROCK);
- player_ptr->update |= (PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
break;
}
case AttributeType::DISINTEGRATE: {
}
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_DISI);
- player_ptr->update |= (PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
break;
}
default:
#include "status/shape-changer.h"
#include "system/item-entity.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"
player_ptr->wraith_form = 0;
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);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
}
player_ptr->stat_cur[k] = 3;
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
static void effect_player_time_all_disabilities(PlayerType *player_ptr)
}
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
static void effect_player_time_addition(PlayerType *player_ptr)
#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 "util/bit-flags-calculator.h"
#include "view/display-messages.h"
static void update_sun_light(PlayerType *player_ptr)
{
- player_ptr->update |= PU_MONSTER_STATUSES | PU_MONSTER_LITE;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ StatusRedrawingFlag::MONSTER_LITE,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_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) {
}
}
- player_ptr->update |= PU_VIEW | PU_LITE | PU_MONSTER_LITE;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_MAP;
}
#include "system/floor-type-definition.h"
#include "system/grid-type-definition.h" // @todo 相互依存している. 後で何とかする.
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "system/terrain-type-definition.h"
#include "util/bit-flags-calculator.h"
#include "world/world.h"
note_spot(player_ptr, y, x);
lite_spot(player_ptr, y, x);
if (old_los ^ f_ptr->flags.has(TerrainCharacteristics::LOS)) {
- player_ptr->update |= PU_VIEW | PU_LITE | PU_MONSTER_LITE | PU_MONSTER_STATUSES;
+ const auto flags = {
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
}
if (f_ptr->flags.has_not(TerrainCharacteristics::GLOW) || dungeons_info[player_ptr->dungeon_idx].flags.has(DungeonFeatureType::DARKNESS)) {
#include "system/monster-entity.h"
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
/*!<広域マップ移動時の自然回復処理カウンタ(広域マップ1マス毎に20回処理を基本とする)*/
int wild_regen = 20;
}
if (heal) {
- player_ptr->update |= (PU_COMBINATION);
- // FIXME 広域マップ移動で1歩毎に何度も再描画されて重くなる。現在はボール中モンスターのHP回復でボールの表示は変わらないためコメントアウトする。
- // player_ptr->window_flags |= (PW_INVENTORY);
- // player_ptr->window_flags |= (PW_EQUIPMENT);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::COMBINATION);
+
+ /*!
+ * @todo FIXME 広域マップ移動で1歩毎に何度も再描画されて重くなる.
+ * 現在はボール中モンスターのHP回復でボールの表示は変わらないためコメントアウトする.
+ */
+ // rfu.set_flag(SubWindowRedrawingFlag::INVENTORY);
+ // rfu.set_flag(SubWindowRedrawingFlag::EQUIPMENT);
wild_regen = 20;
}
}
#include "system/floor-type-definition.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 "util/quarks.h"
#include "util/string-processor.h"
o_ptr->curse_flags.set(new_curse);
msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding your %s..."), item_name.data());
o_ptr->feeling = FEEL_NONE;
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
static void multiply_high_curse(PlayerType *player_ptr)
o_ptr->curse_flags.set(new_curse);
msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding your %s..."), item_name.data());
o_ptr->feeling = FEEL_NONE;
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
static void persist_curse(PlayerType *player_ptr)
o_ptr->curse_flags.set(CurseTraitType::HEAVY_CURSE);
msg_format(_("悪意に満ちた黒いオーラが%sをとりまいた...", "There is a malignant black aura surrounding your %s..."), item_name.data());
o_ptr->feeling = FEEL_NONE;
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
static void curse_call_monster(PlayerType *player_ptr)
#include "spell-realm/spells-craft.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "util/object-sort.h"
#include "view/display-messages.h"
#include "view/object-describer.h"
}
o_ptr->number += num;
- player_ptr->update |= (PU_BONUS);
- player_ptr->update |= (PU_MP);
- player_ptr->update |= (PU_COMBINATION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::COMBINATION,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= (PW_INVENTORY | PW_EQUIPMENT);
if (o_ptr->number || !player_ptr->ele_attack) {
if (item >= INVEN_MAIN_HAND) {
player_ptr->equip_cnt--;
(&player_ptr->inventory_list[item])->wipe();
- player_ptr->update |= PU_BONUS;
- player_ptr->update |= PU_TORCH;
- player_ptr->update |= PU_MP;
-
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::MP,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= PW_EQUIPMENT;
player_ptr->window_flags |= PW_SPELL;
return;
n = j;
if (object_similar(j_ptr, o_ptr)) {
object_absorb(j_ptr, o_ptr);
-
- player_ptr->update |= (PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->window_flags |= (PW_INVENTORY | PW_PLAYER);
return j;
}
j_ptr->marked.clear().set(OmType::TOUCHED);
player_ptr->inven_cnt++;
- player_ptr->update |= (PU_BONUS | PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= (PW_INVENTORY | PW_PLAYER);
return i;
#include "system/grid-type-definition.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-checker.h"
#include "term/z-form.h"
#include "util/string-processor.h"
void carry(PlayerType *player_ptr, bool pickup)
{
verify_panel(player_ptr);
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD;
handle_stuff(player_ptr);
#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/projection-path-calculator.h"
#include "term/term-color-types.h"
panel_row_min = y;
panel_col_min = x;
panel_bounds_center();
-
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= (PR_MAP);
handle_stuff(player_ptr);
return true;
#include "system/dungeon-info.h"
#include "system/floor-type-definition.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "util/int-char-converter.h"
#include "view/display-messages.h"
msg_print(_("ウィザードモード突入。", "Wizard mode on."));
}
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= (PR_TITLE);
break;
}
#include "system/dungeon-info.h"
#include "system/floor-type-definition.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-checker.h"
#include "term/screen-processor.h"
#include "term/term-color-types.h"
panel_col_min = p_ptr->current_floor_ptr->width;
verify_panel(p_ptr);
- p_ptr->update |= (PU_TORCH | PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
- p_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
- p_ptr->update |= (PU_VIEW | PU_LITE | PU_MONSTER_LITE);
- p_ptr->update |= (PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
p_ptr->redraw |= (PR_WIPE | PR_BASIC | PR_EXTRA | PR_MAP | PR_EQUIPPY);
handle_stuff(p_ptr);
#include "system/baseitem-info.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
inven_item_increase(player_ptr, mater, -1);
inven_item_optimize(player_ptr, mater);
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return cost;
}
#include "sv-definition/sv-weapon-types.h"
#include "system/item-entity.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"
int n = 1;
total = bcost;
-
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
while (true) {
clear_bldg(0, 22);
w_ptr->character_xtra = true;
i_ptr->copy_from(o_ptr[i]);
}
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
list_weapon(player_ptr, o_ptr[i], row, col);
i_ptr->copy_from(&orig_weapon);
}
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
w_ptr->character_xtra = old_character_xtra;
#include "system/baseitem-info.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "view/display-messages.h"
#else
msg_format("%s^ %s recharged for %d gold.", item_name.data(), ((o_ptr->number > 1) ? "were" : "was"), price);
#endif
- player_ptr->update |= (PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
player_ptr->window_flags |= (PW_INVENTORY);
player_ptr->au -= price;
}
msg_format(_("$%d で再充填しました。", "You pay %d gold."), total_cost);
msg_print(nullptr);
- player_ptr->update |= (PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
player_ptr->window_flags |= (PW_INVENTORY);
player_ptr->au -= total_cost;
}
#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 "util/bit-flags-calculator.h"
}
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_ROCK);
- player_ptr->update |= PU_FLOW;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
return true;
}
case AMMO_ARROW: {
#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"
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
}
lite_spot(player_ptr, ty, tx);
if (r_ptr->brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
return true;
boost /= 2;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
switch (spell) {
case MindForceTrainerType::SMALL_FORCE_BALL:
if (!get_aim_dir(player_ptr, &dir)) {
case MindForceTrainerType::IMPROVE_FORCE:
msg_print(_("気を練った。", "You improved the Force."));
set_current_ki(player_ptr, false, 70 + plev);
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
if (randint1(get_current_ki(player_ptr)) > (plev * 4 + 120)) {
msg_print(_("気が暴走した!", "The Force exploded!"));
fire_ball(player_ptr, AttributeType::MANA, 0, get_current_ki(player_ptr) / 2, 10);
}
set_current_ki(player_ptr, true, 0);
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
return true;
}
#include "core/stuff-handler.h"
#include "game-option/disturbance-options.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
}
player_ptr->resist_magic = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#include "status/sight-setter.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-getter.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
o_ptr->feeling = feel;
o_ptr->marked.set(OmType::TOUCHED);
- set_bits(player_ptr->update, PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
bool okay = false;
#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 "target/grid-selector.h"
#include "target/projection-path-calculator.h"
#include "target/target-getter.h"
}
player_ptr->multishadow = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
}
player_ptr->dustrobe = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#include "player/special-defense-types.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/int-char-converter.h"
return;
}
- player_ptr->update |= PU_BONUS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->redraw |= PR_ACTION;
msg_format(_("%sの構えをとった。", "You assume the %s stance."), monk_stances[enum2i(new_stance) - 1].desc);
pc.set_monk_stance(new_stance);
#include "racial/racial-android.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"
const auto item_name = describe_flavor(player_ptr, o_ptr, OD_OMIT_PREFIX | OD_NAME_ONLY);
auto flags = object_flags(o_ptr);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (o_ptr->is_cursed()) {
auto can_disturb_blessing = o_ptr->curse_flags.has(CurseTraitType::HEAVY_CURSE) && (randint1(100) < 33);
can_disturb_blessing |= flags.has(TR_ADD_L_CURSE);
o_ptr->curse_flags.clear();
set_bits(o_ptr->ident, IDENT_SENSE);
o_ptr->feeling = FEEL_NONE;
- set_bits(player_ptr->update, PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
set_bits(player_ptr->window_flags, PW_EQUIPMENT | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
}
}
}
- set_bits(player_ptr->update, PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
set_bits(player_ptr->window_flags, PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
calc_android_exp(player_ptr);
return true;
#include "system/monster-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/z-form.h"
#include "timed-effect/player-cut.h"
}
set_action(player_ptr, ACTION_SAMURAI_STANCE);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (PlayerClass(player_ptr).samurai_stance_is(new_stance)) {
msg_print(_("構え直した。", "You reassume a stance."));
} else {
- player_ptr->update |= (PU_BONUS | PU_MONSTER_STATUSES);
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
msg_format(_("%sの型で構えた。", "You assume the %s stance."), samurai_stances[enum2i(new_stance) - 1].desc);
PlayerClass(player_ptr).set_samurai_stance(new_stance);
}
#include "system/monster-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"
static void reset_concentration_flag(PlayerType *player_ptr, sniper_data_type *sniper_data)
{
sniper_data->reset_concent = false;
- player_ptr->update |= (PU_BONUS | PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags);
player_ptr->redraw |= (PR_TIMED_EFFECT);
}
#include "smith/smith-types.h"
#include "system/item-entity.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"
static void set_smith_redrawing_flags(PlayerType *player_ptr)
{
- player_ptr->update |= (PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
player_ptr->window_flags |= (PW_INVENTORY);
}
#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-cut.h"
#include "timed-effect/player-hallucination.h"
#include "timed-effect/player-stun.h"
}
this->player_ptr->skill_exp[PlayerSkillKindType::SHIELD] = std::min<short>(max, cur + increment);
- this->player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
/*!
#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-paralysis.h"
#include "timed-effect/timed-effects.h"
#include "view/display-messages.h"
return;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
switch (randint1(10)) {
case 1:
case 2:
case 8:
case 9:
describe_disability(player_ptr, monap_ptr);
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
break;
case 10:
msg_print(_("あなたは以前ほど力強くなくなってしまった...。", "You're not as powerful as you used to be..."));
}
}
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
break;
}
}
#include "system/item-entity.h"
#include "system/monster-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "timed-effect/player-blindness.h"
#include "timed-effect/player-paralysis.h"
#include "timed-effect/timed-effects.h"
recovery = std::min(recovery, monap_ptr->m_ptr->maxhp - monap_ptr->m_ptr->hp);
monap_ptr->m_ptr->hp += recovery;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (player_ptr->health_who == monap_ptr->m_idx) {
player_ptr->redraw |= PR_HEALTH;
}
}
monap_ptr->o_ptr->pval = !is_magic_mastery || (monap_ptr->o_ptr->pval == 1) ? 0 : monap_ptr->o_ptr->pval - drain;
- player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
player_ptr->window_flags |= PW_INVENTORY;
return true;
}
#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/system-variables.h"
#include "timed-effect/player-hallucination.h"
#include "timed-effect/timed-effects.h"
}
if (md_ptr->r_ptr->brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= PU_MONSTER_LITE;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
write_pet_death(player_ptr, md_ptr);
concptr extract_note_dies(MonsterRaceId r_idx)
{
const auto &r_ref = monraces_info[r_idx];
- const auto explode = std::any_of(std::begin(r_ref.blow), std::end(r_ref.blow), [](const auto &blow) { return blow.method == RaceBlowMethodType::EXPLODE; });
+ const auto explode = std::any_of(std::begin(r_ref.blow), std::end(r_ref.blow),
+ [](const auto &blow) { return blow.method == RaceBlowMethodType::EXPLODE; });
if (monster_living(r_idx)) {
if (explode) {
#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/point-2d.h"
#include "view/display-messages.h"
#include "world/world.h"
floor_ptr->mon_lite_n = 0;
for (size_t i = 0; i < end_temp; i++) {
- const auto [fy, fx] = points[i];
+ const auto &[fy, fx] = points[i];
grid_type *const g_ptr = &floor_ptr->grid_array[fy][fx];
if (g_ptr->info & CAVE_MNLT) {
}
for (size_t i = end_temp; i < size(points); i++) {
- const auto [y, x] = points[i];
+ const auto &[y, x] = points[i];
floor_ptr->grid_array[y][x].info &= ~(CAVE_TEMP | CAVE_XTRA);
}
- player_ptr->update |= PU_DELAY_VISIBILITY;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::DELAY_VISIBILITY);
player_ptr->monlite = (floor_ptr->grid_array[player_ptr->y][player_ptr->x].info & CAVE_MNLT) != 0;
auto ninja_data = PlayerClass(player_ptr).get_specific_data<ninja_data_type>();
if (!ninja_data || !ninja_data->s_stealth) {
#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 "util/bit-flags-calculator.h"
if (turn_flags_ptr->did_bash_door && ((randint0(100) < 50) || is_open || terrain_ptr->flags.has(TerrainCharacteristics::GLASS))) {
cave_alter_feat(player_ptr, ny, nx, TerrainCharacteristics::BASH);
if (!m_ptr->is_valid()) {
- player_ptr->update |= (PU_FLOW);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::FLOW);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
r_ptr->r_behavior_flags.set(MonsterBehaviorType::BASH_DOOR);
cave_alter_feat(player_ptr, ny, nx, TerrainCharacteristics::HURT_DISI);
if (!m_ptr->is_valid()) {
- player_ptr->update |= (PU_FLOW);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::FLOW);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
if (is_original_ap_and_seen(player_ptr, m_ptr)) {
r_ptr->r_feature_flags.set(MonsterFeatureType::KILL_WALL);
#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"
/*!
floor_ptr->m_cnt--;
lite_spot(player_ptr, y, x);
if (r_ptr->brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
}
#include "system/grid-type-definition.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"
#include "wizard/wizard-messages.h"
m_ptr->mflag.set(MonsterTemporaryFlagType::BORN);
}
- if (r_ptr->brightness_flags.has_any_of(self_ld_mask)) {
- set_bits(player_ptr->update, PU_MONSTER_LITE);
- } else if (r_ptr->brightness_flags.has_any_of(has_ld_mask) && !m_ptr->is_asleep()) {
- set_bits(player_ptr->update, PU_MONSTER_LITE);
+ auto is_awake_lightning_monster = r_ptr->brightness_flags.has_any_of(self_ld_mask);
+ is_awake_lightning_monster |= r_ptr->brightness_flags.has_any_of(has_ld_mask) && !m_ptr->is_asleep();
+ if (is_awake_lightning_monster) {
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
+
update_monster(player_ptr, g_ptr->m_idx, true);
m_ptr->get_real_r_ref().cur_num++;
#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/probability-table.h"
#include "view/display-messages.h"
#include "world/world.h"
auto old_r_idx = m_ptr->r_idx;
if (monraces_info[old_r_idx].brightness_flags.has_any_of(ld_mask) || r_ptr->brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
if (born) {
#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 "view/display-messages.h"
}
if (turn_flags_ptr->is_riding_mon) {
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
process_angar(player_ptr, m_idx, turn_flags_ptr->see_m);
#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 "view/display-messages.h"
#include "world/world.h"
return false;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (m_ptr->ml) {
if (player_ptr->health_who == m_idx) {
player_ptr->redraw |= PR_HEALTH;
}
if (monraces_info[m_ptr->r_idx].brightness_flags.has_any_of(has_ld_mask)) {
- player_ptr->update |= PU_MONSTER_LITE;
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
return true;
}
if ((player_ptr->riding == m_idx) && !player_ptr->leaving) {
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
return true;
}
if ((player_ptr->riding == m_idx) && !player_ptr->leaving) {
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
return true;
}
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= PR_MAP;
- player_ptr->update |= PU_MONSTER_STATUSES;
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
w_ptr->timewalk_m_idx = 0;
if (vs_player || (player_has_los_bold(player_ptr, m_ptr->fy, m_ptr->fx) && projectable(player_ptr, player_ptr->y, player_ptr->x, m_ptr->fy, m_ptr->fx))) {
#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/player-hallucination.h"
#include "timed-effect/timed-effects.h"
return;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (m_ptr->exp < r_ptr->next_exp) {
if (m_idx == player_ptr->riding) {
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
}
return;
lite_spot(player_ptr, m_ptr->fy, m_ptr->fx);
if (m_idx == player_ptr->riding) {
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
}
}
#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/player-hallucination.h"
{
using Mbt = MonsterBrightnessType;
const auto except_has_lite = EnumClassFlagGroup<Mbt>(self_ld_mask).set({ Mbt::HAS_DARK_1, Mbt::HAS_DARK_2 });
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (turn_flags_ptr->do_view) {
- player_ptr->update |= PU_FLOW;
+ rfu.set_flag(StatusRedrawingFlag::FLOW);
player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
}
const auto has_lite = r_ptr->brightness_flags.has_any_of({ Mbt::HAS_LITE_1, Mbt::HAS_LITE_2 });
if (turn_flags_ptr->do_move && (r_ptr->brightness_flags.has_any_of(except_has_lite) || (has_lite && !player_ptr->phase_out))) {
- player_ptr->update |= PU_MONSTER_LITE;
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
}
#include "status/sight-setter.h"
#include "status/temporary-resistance.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
}
player_ptr->action = ACTION_NONE;
- player_ptr->update |= (PU_BONUS | PU_HP | PU_MONSTER_STATUSES);
+ 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);
player_ptr->energy_need += ENERGY_NEED();
#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/bit-flags-calculator.h"
teleport_away(player_ptr, m_idx, 10, TELEPORT_SPONTANEOUS);
if (target_type == MONSTER_TO_PLAYER) {
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
}
return res;
#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"
simple_monspell_message(player_ptr, m_idx, t_idx, msg, target_type);
teleport_away(player_ptr, m_idx, 10, TELEPORT_NONMAGICAL);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
return MonsterSpellResult::make_valid();
}
#include "mutation/mutation-util.h"
#include "player-base/player-race.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
neutralize_other_status(player_ptr, gm_ptr);
player_ptr->mutant_regenerate_mod = calc_mutant_regenerate_mod(player_ptr);
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
player_ptr->muta.reset(glm_ptr->muta_which);
}
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
player_ptr->mutant_regenerate_mod = calc_mutant_regenerate_mod(player_ptr);
return true;
chg_virtue(player_ptr, Virtue::CHANCE, -5);
msg_print(_("全ての突然変異が治った。", "You are cured of all mutations."));
player_ptr->muta.clear();
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
player_ptr->mutant_regenerate_mod = calc_mutant_regenerate_mod(player_ptr);
}
#include "object/object-flags.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 "util/enum-converter.h"
#include "view/display-messages.h"
o_ptr->feeling = FEEL_NONE;
}
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
#include "system/item-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"
/*!
o_ptr->feeling = feel;
o_ptr->ident |= IDENT_SENSE;
- player_ptr->update |= (PU_COMBINATION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::COMBINATION);
player_ptr->window_flags |= (PW_INVENTORY | PW_EQUIPMENT);
return false;
}
#include "system/angband.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "timed-effect/player-acceleration.h"
#include "timed-effect/player-poison.h"
#include "timed-effect/timed-effects.h"
{
roll_hitdice(this->player_ptr, SPOP_NONE);
get_max_stats(this->player_ptr);
- this->player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
lose_all_mutations(this->player_ptr);
return true;
}
#include "system/baseitem-info.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "view/display-messages.h"
(void)potion_smash_effect(this->player_ptr, 0, this->player_ptr->y, this->player_ptr->x, o_ref.bi_id);
}
- this->player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags_srf);
this->change_virtue_as_quaff(o_ref);
object_tried(&o_ref);
if (ident && !o_ref.is_aware()) {
#include "system/baseitem-info.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"
auto executor = ReadExecutorFactory::create(player_ptr, o_ptr, known);
auto used_up = executor->read();
- BIT_FLAGS inventory_flags = PU_COMBINATION | PU_REORDER | (this->player_ptr->update & PU_AUTO_DESTRUCTION);
- reset_bits(this->player_ptr->update, PU_COMBINATION | PU_REORDER | PU_AUTO_DESTRUCTION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ using Srf = StatusRedrawingFlag;
+ EnumClassFlagGroup<Srf> flags_srf = { Srf::COMBINATION, Srf::REORDER };
+ if (rfu.has(Srf::AUTO_DESTRUCTION)) {
+ flags_srf.set(Srf::AUTO_DESTRUCTION);
+ }
+
+ rfu.reset_flags(flags_srf);
this->change_virtue_as_read(*o_ptr);
object_tried(o_ptr);
this->gain_exp_from_item_use(o_ptr, executor->is_identified());
this->player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
- this->player_ptr->update |= inventory_flags;
+ rfu.set_flags(flags_srf);
if (!used_up) {
return;
}
#include "system/floor-type-definition.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"
}
this->player_ptr->add_spells++;
- this->player_ptr->update |= PU_SPELLS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::SPELLS);
this->ident = true;
break;
case SV_SCROLL_GENOCIDE:
#include "system/item-entity.h"
#include "system/monster-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-checker.h"
#include "target/target-getter.h"
#include "term/screen-processor.h"
{
if (this->come_back) {
if ((this->item != INVEN_MAIN_HAND) && (this->item != INVEN_SUB_HAND)) {
- store_item_to_inventory(player_ptr, this->q_ptr);
+ store_item_to_inventory(this->player_ptr, this->q_ptr);
this->do_drop = false;
return;
}
this->o_ptr = &player_ptr->inventory_list[this->item];
this->o_ptr->copy_from(this->q_ptr);
- player_ptr->equip_cnt++;
- player_ptr->update |= PU_BONUS | PU_TORCH | PU_MP;
- player_ptr->window_flags |= PW_EQUIPMENT;
+ this->player_ptr->equip_cnt++;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::MP,
+ };
+ rfu.set_flags(flags);
+ this->player_ptr->window_flags |= PW_EQUIPMENT;
this->do_drop = false;
return;
}
if (this->equiped_item) {
- verify_equip_slot(player_ptr, this->item);
- calc_android_exp(player_ptr);
+ verify_equip_slot(this->player_ptr, this->item);
+ calc_android_exp(this->player_ptr);
}
}
#include "system/baseitem-info.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "timed-effect/player-confusion.h"
#include "timed-effect/timed-effects.h"
msg_print(_("この杖にはもう魔力が残っていない。", "The staff has no charges left."));
o_ptr->ident |= IDENT_EMPTY;
- this->player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
this->player_ptr->window_flags |= PW_INVENTORY;
return;
}
chg_virtue(this->player_ptr, Virtue::KNOWLEDGE, -1);
}
- /*
- * Temporarily remove the flags for updating the inventory so
- * gain_exp() does not reorder the inventory before the charge
- * is deducted from the staff.
- */
- BIT_FLAGS inventory_flags = PU_COMBINATION | PU_REORDER | (this->player_ptr->update & PU_AUTO_DESTRUCTION);
- reset_bits(this->player_ptr->update, PU_COMBINATION | PU_REORDER | PU_AUTO_DESTRUCTION);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ using Srf = StatusRedrawingFlag;
+ EnumClassFlagGroup<Srf> flags_srf = { Srf::COMBINATION, Srf::REORDER };
+ if (rfu.has(Srf::AUTO_DESTRUCTION)) {
+ flags_srf.set(Srf::AUTO_DESTRUCTION);
+ }
+
+ rfu.reset_flags(flags_srf);
object_tried(o_ptr);
if (ident && !o_ptr->is_aware()) {
object_aware(this->player_ptr, o_ptr);
}
set_bits(this->player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
- set_bits(this->player_ptr->update, inventory_flags);
+ rfu.set_flags(flags_srf);
if (!use_charge) {
return;
}
#include "system/baseitem-info.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-getter.h"
#include "term/screen-processor.h"
#include "timed-effect/player-confusion.h"
o_ptr->timeout += baseitem.pval;
}
- this->player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
if (!(o_ptr->is_aware())) {
chg_virtue(this->player_ptr, Virtue::PATIENCE, -1);
chg_virtue(this->player_ptr, Virtue::CHANCE, 1);
#include "system/baseitem-info.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-getter.h"
#include "term/screen-processor.h"
#include "timed-effect/player-confusion.h"
return;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (o_ptr->pval <= 0) {
if (flush_failure) {
flush();
msg_print(_("この魔法棒にはもう魔力が残っていない。", "The wand has no charges left."));
o_ptr->ident |= IDENT_EMPTY;
- this->player_ptr->update |= PU_COMBINATION | PU_REORDER;
+ const auto flags = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags);
this->player_ptr->window_flags |= PW_INVENTORY;
return;
}
sound(SOUND_ZAP);
auto ident = wand_effect(this->player_ptr, sval.value(), dir, false, false);
+ using Srf = StatusRedrawingFlag;
+ EnumClassFlagGroup<Srf> flags_srf = { Srf::COMBINATION, Srf::REORDER };
+ if (rfu.has(Srf::AUTO_DESTRUCTION)) {
+ flags_srf.set(Srf::AUTO_DESTRUCTION);
+ }
- /*
- * Temporarily remove the flags for updating the inventory so
- * gain_exp() does not reorder the inventory before the charge
- * is deducted from the wand.
- */
- BIT_FLAGS inventory_flags = (PU_COMBINATION | PU_REORDER | (this->player_ptr->update & PU_AUTO_DESTRUCTION));
- reset_bits(this->player_ptr->update, PU_COMBINATION | PU_REORDER | PU_AUTO_DESTRUCTION);
+ rfu.reset_flags(flags_srf);
if (!(o_ptr->is_aware())) {
chg_virtue(this->player_ptr, Virtue::PATIENCE, -1);
chg_virtue(this->player_ptr, Virtue::CHANCE, 1);
}
set_bits(this->player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
- set_bits(this->player_ptr->update, inventory_flags);
+ rfu.set_flags(flags_srf);
o_ptr->pval--;
if (item >= 0) {
inven_item_charges(this->player_ptr->inventory_list[item]);
#include "sv-definition/sv-lite-types.h"
#include "system/item-entity.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"
} else if (o_ptr->fuel == 0) {
disturb(player_ptr, false, true);
msg_print(_("明かりが消えてしまった!", "Your light has gone out!"));
- player_ptr->update |= (PU_TORCH);
- player_ptr->update |= (PU_BONUS);
+ const auto flags = {
+ StatusRedrawingFlag::TORCH,
+ StatusRedrawingFlag::BONUS,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
} else if (o_ptr->ego_idx == EgoType::LITE_LONG) {
if ((o_ptr->fuel < 50) && (!(o_ptr->fuel % 5)) && (w_ptr->game_turn % (TURNS_PER_TICK * 2))) {
if (disturb_minor) {
#include "player/player-status-flags.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "timed-effect/player-confusion.h"
#include "timed-effect/timed-effects.h"
#include "view/display-messages.h"
o_ptr->feeling = feel;
autopick_alter_item(player_ptr, slot, destroy_feeling);
- player_ptr->update |= (PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= (PW_INVENTORY | PW_EQUIPMENT);
}
#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/target-checker.h"
#include "view/display-messages.h"
player_ptr->pet_extra_flags &= ~(PF_TWO_HANDS);
player_ptr->riding_ryoute = player_ptr->old_riding_ryoute = false;
- player_ptr->update |= (PU_BONUS | PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTER_LITE | PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::FLOW,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
handle_stuff(player_ptr);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
#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 "world/world.h"
player_ptr->riding_ryoute = player_ptr->old_riding_ryoute = false;
}
- player_ptr->update |= PU_BONUS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
bool p_can_enter = player_can_enter(player_ptr, g_ptr->feat, CEM_P_CAN_ENTER_PATTERN);
player_ptr->riding_ryoute = old_riding_two_hands;
player_ptr->old_riding_ryoute = old_old_riding_two_hands;
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
w_ptr->character_xtra = old_character_xtra;
#include "status/action-setter.h"
#include "system/item-entity.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/bit-flags-calculator.h"
}
this->set_samurai_stance(SamuraiStanceType::NONE);
- this->player_ptr->update |= PU_BONUS;
- this->player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
this->player_ptr->redraw |= PR_ACTION;
this->player_ptr->redraw |= PR_TIMED_EFFECT;
this->player_ptr->action = ACTION_NONE;
#include "realm/realm-hex-numbers.h"
#include "spell-realm/spells-hex.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "util/bit-flags-calculator.h"
#include "util/enum-converter.h"
}
this->player_ptr->stat_index[status] = (int16_t)index;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
if (status == A_CON) {
- set_bits(this->player_ptr->update, PU_HP);
+ rfu.set_flag(StatusRedrawingFlag::HP);
} else if (status == A_INT) {
if (mp_ptr->spell_stat == A_INT) {
- set_bits(this->player_ptr->update, (PU_MP | PU_SPELLS));
+ rfu.set_flags(flags);
}
} else if (status == A_WIS) {
if (mp_ptr->spell_stat == A_WIS) {
- set_bits(this->player_ptr->update, (PU_MP | PU_SPELLS));
+ rfu.set_flags(flags);
}
} else if (status == A_CHR) {
if (mp_ptr->spell_stat == A_CHR) {
- set_bits(this->player_ptr->update, (PU_MP | PU_SPELLS));
+ rfu.set_flags(flags);
}
}
#include "player/special-defense-types.h"
#include "status/bad-status-setter.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "timed-effect/player-paralysis.h"
#include "timed-effect/timed-effects.h"
#include "view/display-messages.h"
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->redraw |= (PR_HUNGER);
handle_stuff(player_ptr);
#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 "view/display-messages.h"
break;
}
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
}
#include "system/monster-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 "timed-effect/player-hallucination.h"
msg_format(_("%sが酸で腐食した!", "Your %s is corroded!"), item_name.data());
o_ptr->to_a--;
- player_ptr->update |= PU_BONUS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->window_flags |= PW_EQUIPMENT | PW_PLAYER;
calc_android_exp(player_ptr);
return true;
#include "system/item-entity.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/target-checker.h"
#include "timed-effect/player-blindness.h"
auto *f_ptr = &terrains_info[g_ptr->feat];
TerrainType *of_ptr = &terrains_info[oc_ptr->feat];
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (!(mpe_mode & MPE_STAYING)) {
MONSTER_IDX om_idx = oc_ptr->m_idx;
MONSTER_IDX nm_idx = g_ptr->m_idx;
verify_panel(player_ptr);
if (mpe_mode & MPE_FORGET_FLOW) {
forget_flow(floor_ptr);
- player_ptr->update |= PU_UN_VIEW;
+ rfu.set_flag(StatusRedrawingFlag::UN_VIEW);
player_ptr->redraw |= PR_MAP;
}
- player_ptr->update |= PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTER_LITE | PU_DISTANCE;
+ const auto flags_srf = {
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::FLOW,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::DISTANCE,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
if ((!player_ptr->effects()->blindness()->is_blind() && !no_lite(player_ptr)) || !is_trap(player_ptr, g_ptr->feat)) {
g_ptr->info &= ~(CAVE_UNSAFE);
if (PlayerRace(player_ptr).equals(PlayerRaceType::MERFOLK)) {
if (f_ptr->flags.has(Tc::WATER) ^ of_ptr->flags.has(Tc::WATER)) {
- player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
update_creature(player_ptr);
}
}
#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"
/* Proficiency of weapons and misc. skills (except riding) */
}
exp += static_cast<short>(gain_amount);
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
void gain_spell_skill_exp_aux(PlayerType *player_ptr, short &exp, const GainAmountList &gain_amount_list, int spell_level)
}
exp += static_cast<short>(gain_amount);
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
}
}
this->player_ptr->skill_exp[PlayerSkillKindType::RIDING] = std::min<SUB_EXP>(max_exp, now_exp + inc);
- set_bits(this->player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
void PlayerSkill::gain_riding_skill_exp_on_range_attack()
const auto &monrace = monraces_info[monster.r_idx];
if (((this->player_ptr->skill_exp[PlayerSkillKindType::RIDING] - (RIDING_EXP_BEGINNER * 2)) / 200 < monrace.level) && one_in_(2)) {
this->player_ptr->skill_exp[PlayerSkillKindType::RIDING] += 1;
- set_bits(this->player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
}
}
this->player_ptr->skill_exp[PlayerSkillKindType::RIDING] = std::min<SUB_EXP>(max_exp, now_exp + inc);
- set_bits(this->player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
void PlayerSkill::gain_spell_skill_exp(int realm, int spell_idx)
exp = SPELL_EXP_BEGINNER + exp / 3;
}
- set_bits(this->player_ptr->update, PU_BONUS);
-
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
return PlayerSkill::spell_skill_rank(exp);
}
#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 "term/screen-processor.h"
#include "timed-effect/player-acceleration.h"
}
if (player_ptr->telepathy != old_telepathy) {
- set_bits(player_ptr->update, PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
}
auto is_esp_updated = player_ptr->esp_animal != old_esp_animal;
is_esp_updated |= player_ptr->esp_nonliving != old_esp_nonliving;
is_esp_updated |= player_ptr->esp_unique != old_esp_unique;
if (is_esp_updated) {
- set_bits(player_ptr->update, PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
}
if (player_ptr->see_inv != old_see_inv) {
- set_bits(player_ptr->update, PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
}
if (player_ptr->pspeed != old_speed) {
*/
void update_creature(PlayerType *player_ptr)
{
- if (!player_ptr->update) {
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ if (!rfu.any_stats()) {
return;
}
auto *floor_ptr = player_ptr->current_floor_ptr;
- if (any_bits(player_ptr->update, (PU_AUTO_DESTRUCTION))) {
- reset_bits(player_ptr->update, PU_AUTO_DESTRUCTION);
+ if (rfu.has(StatusRedrawingFlag::AUTO_DESTRUCTION)) {
+ rfu.reset_flag(StatusRedrawingFlag::AUTO_DESTRUCTION);
autopick_delayed_alter(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_COMBINATION))) {
- reset_bits(player_ptr->update, PU_COMBINATION);
+ if (rfu.has(StatusRedrawingFlag::COMBINATION)) {
+ rfu.reset_flag(StatusRedrawingFlag::COMBINATION);
combine_pack(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_REORDER))) {
- reset_bits(player_ptr->update, PU_REORDER);
+ if (rfu.has(StatusRedrawingFlag::REORDER)) {
+ rfu.reset_flag(StatusRedrawingFlag::REORDER);
reorder_pack(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_BONUS))) {
- reset_bits(player_ptr->update, PU_BONUS);
+ if (rfu.has(StatusRedrawingFlag::BONUS)) {
+ rfu.reset_flag(StatusRedrawingFlag::BONUS);
PlayerAlignment(player_ptr).update_alignment();
PlayerSkill ps(player_ptr);
ps.apply_special_weapon_skill_max_values();
update_bonuses(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_TORCH))) {
- reset_bits(player_ptr->update, PU_TORCH);
+ if (rfu.has(StatusRedrawingFlag::TORCH)) {
+ rfu.reset_flag(StatusRedrawingFlag::TORCH);
update_lite_radius(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_HP))) {
- reset_bits(player_ptr->update, PU_HP);
+ if (rfu.has(StatusRedrawingFlag::HP)) {
+ rfu.reset_flag(StatusRedrawingFlag::HP);
update_max_hitpoints(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_MP))) {
- reset_bits(player_ptr->update, PU_MP);
+ if (rfu.has(StatusRedrawingFlag::MP)) {
+ rfu.reset_flag(StatusRedrawingFlag::MP);
update_max_mana(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_SPELLS))) {
- reset_bits(player_ptr->update, PU_SPELLS);
+ if (rfu.has(StatusRedrawingFlag::SPELLS)) {
+ rfu.reset_flag(StatusRedrawingFlag::SPELLS);
update_num_of_spells(player_ptr);
}
- if (!w_ptr->character_generated) {
+ if (!w_ptr->character_generated || (w_ptr->character_icky_depth > 0)) {
return;
}
- if (w_ptr->character_icky_depth > 0) {
- return;
- }
- if (any_bits(player_ptr->update, (PU_UN_LITE))) {
- reset_bits(player_ptr->update, PU_UN_LITE);
+
+ if (rfu.has(StatusRedrawingFlag::UN_LITE)) {
+ rfu.reset_flag(StatusRedrawingFlag::UN_LITE);
forget_lite(floor_ptr);
}
- if (any_bits(player_ptr->update, (PU_UN_VIEW))) {
- reset_bits(player_ptr->update, PU_UN_VIEW);
+ if (rfu.has(StatusRedrawingFlag::UN_VIEW)) {
+ rfu.reset_flag(StatusRedrawingFlag::UN_VIEW);
forget_view(floor_ptr);
}
- if (any_bits(player_ptr->update, (PU_VIEW))) {
- reset_bits(player_ptr->update, PU_VIEW);
+ if (rfu.has(StatusRedrawingFlag::VIEW)) {
+ rfu.reset_flag(StatusRedrawingFlag::VIEW);
update_view(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_LITE))) {
- reset_bits(player_ptr->update, PU_LITE);
+ if (rfu.has(StatusRedrawingFlag::LITE)) {
+ rfu.reset_flag(StatusRedrawingFlag::LITE);
update_lite(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_FLOW))) {
- reset_bits(player_ptr->update, PU_FLOW);
+ if (rfu.has(StatusRedrawingFlag::FLOW)) {
+ rfu.reset_flag(StatusRedrawingFlag::FLOW);
update_flow(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_DISTANCE))) {
- reset_bits(player_ptr->update, PU_DISTANCE);
-
+ if (rfu.has(StatusRedrawingFlag::DISTANCE)) {
+ rfu.reset_flag(StatusRedrawingFlag::DISTANCE);
update_monsters(player_ptr, true);
}
- if (any_bits(player_ptr->update, (PU_MONSTER_LITE))) {
- reset_bits(player_ptr->update, PU_MONSTER_LITE);
+ if (rfu.has(StatusRedrawingFlag::MONSTER_LITE)) {
+ rfu.reset_flag(StatusRedrawingFlag::MONSTER_LITE);
update_mon_lite(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_DELAY_VISIBILITY))) {
- reset_bits(player_ptr->update, PU_DELAY_VISIBILITY);
+ if (rfu.has(StatusRedrawingFlag::DELAY_VISIBILITY)) {
+ rfu.reset_flag(StatusRedrawingFlag::DELAY_VISIBILITY);
delayed_visual_update(player_ptr);
}
- if (any_bits(player_ptr->update, (PU_MONSTER_STATUSES))) {
- reset_bits(player_ptr->update, PU_MONSTER_STATUSES);
+ if (rfu.has(StatusRedrawingFlag::MONSTER_STATUSES)) {
+ rfu.reset_flag(StatusRedrawingFlag::MONSTER_STATUSES);
update_monsters(player_ptr, false);
}
}
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,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
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--;
- set_bits(player_ptr->update, PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->redraw, PR_LEVEL | PR_TITLE);
set_bits(player_ptr->window_flags, PW_PLAYER);
handle_stuff(player_ptr);
sound(SOUND_LEVEL);
msg_format(_("レベル %d にようこそ。", "Welcome to level %d."), player_ptr->lev);
- set_bits(player_ptr->update, (PU_BONUS | PU_HP | PU_MP | PU_SPELLS));
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->redraw, (PR_LEVEL | PR_TITLE | PR_EXP));
set_bits(player_ptr->window_flags, (PW_PLAYER | PW_SPELL | PW_INVENTORY));
player_ptr->level_up_message = true;
level_reward = false;
}
- set_bits(player_ptr->update, PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->redraw, (PR_LEVEL | PR_TITLE));
set_bits(player_ptr->window_flags, (PW_PLAYER | PW_SPELL));
handle_stuff(player_ptr);
#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 "util/point-2d.h"
#include <vector>
cave_redraw_later(floor_ptr, py, px);
}
- player_ptr->update |= PU_DELAY_VISIBILITY;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::DELAY_VISIBILITY);
}
#include "system/floor-type-definition.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/gameterm.h"
#include "term/screen-processor.h"
#include "util/buffer-shaper.h"
inventory_aware(player_ptr);
home_aware(player_ptr);
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
flush();
msg_erase();
#include "core/stuff-handler.h"
#include "game-option/disturbance-options.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
}
player_ptr->tsubureru = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
-
if (!notice) {
return false;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#include "status/buff-setter.h"
#include "status/experience.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-getter.h"
#include "timed-effect/player-paralysis.h"
#include "timed-effect/timed-effects.h"
return false;
}
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
return true;
}
return false;
}
- set_bits(player_ptr->update, PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
return true;
case PlayerClassType::BLUE_MAGE:
set_action(player_ptr, player_ptr->action == ACTION_LEARN ? ACTION_NONE : ACTION_LEARN);
#include "system/grid-type-definition.h"
#include "system/item-entity.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"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
#include "world/world.h"
-
#ifdef JP
#else
#include "player-info/equipment-info.h"
o_ptr->curse_flags.set(get_curse(curse_rank, o_ptr));
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
should_continue = false;
}
break;
o_ptr->curse_flags.set(get_curse(curse_rank, o_ptr));
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
should_continue = false;
}
break;
flag = true;
}
+
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
for (i = A_STR; i < A_MAX; i++) {
if (player_ptr->stat_cur[i] < player_ptr->stat_max[i]) {
if (player_ptr->stat_cur[i] < 18) {
if (player_ptr->stat_cur[i] > player_ptr->stat_max[i]) {
player_ptr->stat_cur[i] = player_ptr->stat_max[i];
}
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
flag = true;
}
}
set_action(player_ptr, ACTION_NONE);
}
- player_ptr->update |= (PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
+ rfu.set_flags(flags);
player_ptr->redraw |= (PR_EXTRA);
return "";
}
if (!info) {
- player_ptr->update |= (PU_BONUS | PU_HP | PU_MP | PU_SPELLS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_EXTRA | PR_HP | PR_MP);
}
#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/projection-path-calculator.h"
#include "target/target-getter.h"
lite_spot(player_ptr, ty, tx);
if (monraces_info[m_ptr->r_idx].brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
}
}
/* Destroy the feature */
cave_alter_feat(player_ptr, y, x, TerrainCharacteristics::HURT_ROCK);
- player_ptr->update |= (PU_FLOW);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
}
break;
#include "status/bad-status-setter.h"
#include "status/experience.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-getter.h"
#include "timed-effect/player-acceleration.h"
#include "timed-effect/timed-effects.h"
/* Now the player is singing */
set_action(player_ptr, ACTION_SING);
- player_ptr->update |= (PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->redraw |= (PR_TIMED_EFFECT);
}
(void)hp_player(player_ptr, 10);
(void)BadStatusSetter(player_ptr).set_fear(0);
- player_ptr->update |= PU_HP;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::HP);
start_singing(player_ptr, spell, MUSIC_HERO);
}
if (stop) {
if (!player_ptr->hero) {
msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
- /* Recalculate hitpoints */
- player_ptr->update |= (PU_HP);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::HP);
}
}
msg_print(_("英雄の歌を口ずさんだ...", "You chant a powerful, heroic call to arms..."));
(void)hp_player(player_ptr, 10);
(void)BadStatusSetter(player_ptr).set_fear(0);
- player_ptr->update |= PU_HP;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::HP);
start_singing(player_ptr, spell, MUSIC_SHERO);
}
if (stop) {
if (!player_ptr->hero) {
msg_print(_("ヒーローの気分が消え失せた。", "The heroism wears off."));
- player_ptr->update |= PU_HP;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::HP);
}
if (!player_ptr->effects()->acceleration()->is_fast()) {
msg_print(_("フィンゴルフィンの冥王への挑戦を歌った...", "You recall the valor of Fingolfin's challenge to the Dark Lord..."));
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
start_singing(player_ptr, spell, MUSIC_INVULN);
msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
}
}
#include "system/floor-type-definition.h"
#include "system/grid-type-definition.h"
#include "system/item-entity.h"
+#include "system/redrawing-flags-updater.h"
#include "term/z-form.h"
#include "util/angband-files.h"
#include "util/sort.h"
forget_lite(player_ptr->current_floor_ptr);
forget_view(player_ptr->current_floor_ptr);
clear_mon_lite(player_ptr->current_floor_ptr);
- player_ptr->update |= PU_VIEW | PU_LITE | PU_MONSTER_LITE;
- player_ptr->update |= PU_MONSTER_STATUSES | PU_DISTANCE | PU_FLOW;
+ const auto flags = {
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ StatusRedrawingFlag::DISTANCE,
+ StatusRedrawingFlag::FLOW,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
wr_s16b(max_floor_id);
wr_byte((byte)player_ptr->dungeon_idx);
if (!player_ptr->floor_id) {
#include "system/artifact-type-definition.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"
calc_android_exp(player_ptr);
}
- player_ptr->update |= PU_BONUS | PU_HP;
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
return true;
}
#include "system/grid-type-definition.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 "util/point-2d.h"
#include <vector>
return;
}
- player_ptr->update |= PU_LITE | PU_MONSTER_LITE | PU_MONSTER_STATUSES;
+ const auto flags = {
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
player_ptr->old_lite = player_ptr->cur_lite;
-
if (player_ptr->cur_lite > 0) {
set_superstealth(player_ptr, false);
}
cave_redraw_later(floor_ptr, y, x);
}
- player_ptr->update |= PU_DELAY_VISIBILITY;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::DELAY_VISIBILITY);
}
#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 "util/bit-flags-calculator.h"
#include "view/display-messages.h"
}
}
- player_ptr->update |= (PU_UN_VIEW | PU_UN_LITE | PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTER_LITE | PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::FLOW,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_HEALTH | PR_UHEALTH | PR_MAP);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
if (floor_ptr->grid_array[player_ptr->y][player_ptr->x].info & CAVE_GLOW) {
#include "object-enchant/trc-types.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
static int exe_curse_removal(PlayerType *player_ptr, int all)
{
auto count = 0;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
for (int i = INVEN_MAIN_HAND; i < INVEN_TOTAL; i++) {
auto *o_ptr = &player_ptr->inventory_list[i];
if (!o_ptr->is_valid() || !o_ptr->is_cursed()) {
o_ptr->curse_flags.clear();
o_ptr->ident |= IDENT_SENSE;
o_ptr->feeling = FEEL_NONE;
-
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->window_flags |= (PW_EQUIPMENT);
count++;
}
#include "racial/racial-android.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
#endif
chg_virtue(player_ptr, Virtue::HARMONY, 1);
chg_virtue(player_ptr, Virtue::ENCHANT, -2);
- player_ptr->update |= (PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->window_flags |= (PW_EQUIPMENT | PW_PLAYER);
calc_android_exp(player_ptr);
#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"
lite_spot(player_ptr, target_row, target_col);
lite_spot(player_ptr, ty, tx);
if (monraces_info[m_ptr->r_idx].brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
if (m_ptr->ml) {
#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 "util/bit-flags-calculator.h"
#include "view/display-messages.h"
}
}
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= (PR_MAP);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON | PW_FOUND_ITEMS);
/* Forget travel route when we have forgotten map */
forget_travel_flow(player_ptr->current_floor_ptr);
- player_ptr->update |= (PU_UN_VIEW | PU_UN_LITE);
- player_ptr->update |= (PU_VIEW | PU_LITE | PU_MONSTER_LITE);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_MAP);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON | PW_FOUND_ITEMS);
}
}
forget_flow(floor_ptr);
-
- /* Mega-Hack -- Forget the view and lite */
- player_ptr->update |= (PU_UN_VIEW | PU_UN_LITE | PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTER_LITE | PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::FLOW,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_MAP);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
#include "grid/grid.h"
#include "spell-kind/earthquake.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "util/bit-flags-calculator.h"
/*!
{
BIT_FLAGS flg = PROJECT_GRID | PROJECT_ITEM | PROJECT_HIDE;
bool dummy = project(player_ptr, 0, 1, player_ptr->y, player_ptr->x, 0, AttributeType::STONE_WALL, flg).notice;
- player_ptr->update |= (PU_FLOW);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::FLOW);
player_ptr->redraw |= (PR_MAP);
return dummy;
}
#include "perception/object-perception.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 "util/string-processor.h"
#include "view/display-messages.h"
object_known(o_ptr);
o_ptr->marked.set(OmType::TOUCHED);
- set_bits(player_ptr->update, PU_BONUS | PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
angband_strcpy(record_o_name, known_item_name.data(), MAX_NLEN);
o_ptr->ident |= (IDENT_FULL_KNOWN);
- /* Refrect item informaiton onto subwindows without updating inventory */
- player_ptr->update &= ~(PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.reset_flags(flags_srf);
handle_stuff(player_ptr);
- player_ptr->update |= (PU_COMBINATION | PU_REORDER);
+ rfu.set_flags(flags_srf);
const auto item_name = describe_flavor(player_ptr, o_ptr, 0);
if (item >= INVEN_MAIN_HAND) {
#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 "term/screen-processor.h"
#include "view/display-messages.h"
} else if (sleep) {
msg_print(_("何かが突如興奮したような騒々しい音が遠くに聞こえた!", "You hear a sudden stirring in the distance!"));
}
+
if (player_ptr->riding) {
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
}
#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-checker.h"
#include "util/bit-flags-calculator.h"
lite_spot(player_ptr, ny, nx);
if (monraces_info[m_ptr->r_idx].brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
return true;
lite_spot(player_ptr, ny, nx);
if (monraces_info[m_ptr->r_idx].brightness_flags.has_any_of(ld_mask)) {
- player_ptr->update |= (PU_MONSTER_LITE);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::MONSTER_LITE);
}
}
#include "sv-definition/sv-lite-types.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
msg_print(_("照明用アイテムは満タンになった。", "Your light is full."));
}
- player_ptr->update |= PU_TORCH;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::TORCH);
}
#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/projection-path-calculator.h"
#include "util/bit-flags-calculator.h"
}
}
- player_ptr->update |= (PU_UN_VIEW | PU_UN_LITE | PU_VIEW | PU_LITE | PU_FLOW | PU_MONSTER_LITE | PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::FLOW,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= (PR_MAP);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
return true;
#include "sv-definition/sv-protector-types.h"
#include "system/item-entity.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 "view/display-messages.h"
if (disturb_state) {
disturb(player_ptr, false, false);
}
+
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
if (disturb_state) {
disturb(player_ptr, false, false);
}
+
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
#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 "target/projection-path-calculator.h"
#include "target/target-checker.h"
#include "target/target-getter.h"
}
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->tim_sh_holy = v;
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
}
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->tim_eyeeye = v;
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#include "core/stuff-handler.h"
#include "game-option/disturbance-options.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
}
player_ptr->tim_sh_fire = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#include "system/monster-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 "util/bit-flags-calculator.h"
#include "util/int-char-converter.h"
set_action(this->player_ptr, ACTION_NONE);
}
- this->player_ptr->update |= PU_BONUS | PU_HP | PU_MP | PU_SPELLS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
+ rfu.set_flags(flags_srf);
this->player_ptr->redraw |= PR_EXTRA | PR_HP | PR_MP;
}
this->reset_casting_flag(i2enum<spell_hex_type>(n));
}
- this->player_ptr->update |= PU_BONUS | PU_HP | PU_MP | PU_SPELLS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
+ rfu.set_flags(flags_srf);
this->player_ptr->redraw |= PR_EXTRA | PR_HP | PR_MP;
return is_selected;
}
msg_print(_("詠唱を再開した。", "You restart casting."));
this->player_ptr->action = ACTION_SPELL;
- this->player_ptr->update |= PU_BONUS | PU_HP;
+ 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;
- this->player_ptr->update |= PU_MONSTER_STATUSES;
this->player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
return true;
}
#include "status/action-setter.h"
#include "system/floor-type-definition.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
set_interrupting_song_effect(player_ptr, MUSIC_NONE);
msg_print(_("歌を再開した。", "You resume singing."));
player_ptr->action = ACTION_SING;
- player_ptr->update |= (PU_BONUS | PU_HP | PU_MONSTER_STATUSES);
+ 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);
}
}
player_ptr->tim_stealth = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
(void)exe_spell(player_ptr, REALM_MUSIC, get_singing_song_id(player_ptr), SpellProcessType::STOP);
set_singing_song_effect(player_ptr, MUSIC_NONE);
set_singing_song_id(player_ptr, 0);
- set_bits(player_ptr->update, PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
set_bits(player_ptr->redraw, PR_TIMED_EFFECT);
}
#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 "util/bit-flags-calculator.h"
#include "util/probability-table.h"
o_ptr->art_flags.clear();
o_ptr->curse_flags.set(CurseTraitType::CURSED);
o_ptr->ident |= IDENT_BROKEN;
- player_ptr->update |= PU_BONUS | PU_MP;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MP,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
return true;
}
o_ptr->art_flags.clear();
o_ptr->curse_flags.set(CurseTraitType::CURSED);
o_ptr->ident |= IDENT_BROKEN;
- player_ptr->update |= PU_BONUS | PU_MP;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MP,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->window_flags |= PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER;
return true;
}
return false;
}
- set_bits(player_ptr->update, PU_BONUS | PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
return true;
}
#include "system/item-entity.h"
#include "system/monster-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-getter.h"
#include "timed-effect/player-acceleration.h"
#include "timed-effect/player-cut.h"
msg_print(nullptr);
player_ptr->energy_need -= 1000 + (100 + player_ptr->csp - 50) * TURNS_PER_TICK / 10;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
handle_stuff(player_ptr);
return true;
player_ptr->knowledge &= ~(KNOW_HPRATE);
auto percent = (player_ptr->player_hp[PY_MAX_LEVEL - 1] * 200) / (2 * player_ptr->hitdie + ((PY_MAX_LEVEL - 1 + 3) * (player_ptr->hitdie + 1)));
-
- /* Update and redraw hitpoints */
- player_ptr->update |= (PU_HP);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::HP);
player_ptr->redraw |= (PR_HP);
player_ptr->window_flags |= (PW_PLAYER);
}
}
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
}
#include "spell-realm/spells-hex.h"
#include "spell-realm/spells-song.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
return;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
switch (prev_typ) {
case ACTION_SEARCH:
msg_print(_("探索をやめた。", "You no longer walk carefully."));
case ACTION_SAMURAI_STANCE:
msg_print(_("型を崩した。", "You stop assuming the special stance."));
PlayerClass(player_ptr).set_samurai_stance(SamuraiStanceType::NONE);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= (PR_TIMED_EFFECT);
break;
case ACTION_SING:
break;
}
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->redraw |= (PR_ACTION);
}
#include "status/base-status.h"
#include "status/buff-setter.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-cut.h"
disturb(this->player_ptr, false, false);
}
- this->player_ptr->update |= PU_UN_VIEW | PU_UN_LITE | PU_VIEW | PU_LITE | PU_MONSTER_STATUSES | PU_MONSTER_LITE;
+ const auto flags_srf = {
+ StatusRedrawingFlag::UN_VIEW,
+ StatusRedrawingFlag::UN_LITE,
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ StatusRedrawingFlag::MONSTER_LITE,
+ };
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flags(flags_srf);
this->player_ptr->redraw |= PR_MAP;
this->player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
handle_stuff(this->player_ptr);
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>();
if (this->player_ptr->action == ACTION_MONK_STANCE) {
msg_print(_("構えがとけた。", "You lose your stance."));
PlayerClass(player_ptr).set_monk_stance(MonkStanceType::NONE);
- this->player_ptr->update |= PU_BONUS;
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
this->player_ptr->redraw |= PR_ACTION;
this->player_ptr->action = ACTION_NONE;
} else if (this->player_ptr->action == ACTION_SAMURAI_STANCE) {
disturb(this->player_ptr, false, true);
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
this->player_ptr->redraw |= PR_MAP | PR_HEALTH | PR_UHEALTH;
- this->player_ptr->update |= PU_MONSTER_STATUSES;
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
this->player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
handle_stuff(this->player_ptr);
return true;
disturb(this->player_ptr, false, false);
}
- this->player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(this->player_ptr);
return true;
}
disturb(this->player_ptr, false, false);
}
- this->player_ptr->update |= PU_BONUS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
this->player_ptr->redraw |= PR_STUN;
handle_stuff(this->player_ptr);
return true;
disturb(this->player_ptr, false, false);
}
- this->player_ptr->update |= PU_BONUS;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
this->player_ptr->redraw |= PR_CUT;
handle_stuff(this->player_ptr);
return true;
#include "spell-kind/spells-floor.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"
player_ptr->stat_max[stat] = value;
}
- player_ptr->update |= PU_BONUS;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
return true;
}
if (res) {
player_ptr->stat_cur[stat] = cur;
player_ptr->stat_max[stat] = max;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_ABILITY_SCORE);
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
}
return res;
{
if (player_ptr->stat_cur[stat] != player_ptr->stat_max[stat]) {
player_ptr->stat_cur[stat] = player_ptr->stat_max[stat];
- player_ptr->update |= (PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
player_ptr->redraw |= (PR_ABILITY_SCORE);
return true;
}
o_ptr->ident &= ~(IDENT_SENSE);
}
- set_bits(player_ptr->update, PU_BONUS | PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
wiz_dark(player_ptr);
return true;
#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"
/*!
return false;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (v) {
if (player_ptr->invuln && !do_dec) {
if (player_ptr->invuln > v) {
} else if (!is_invuln(player_ptr)) {
msg_print(_("無敵だ!", "Invulnerability!"));
notice = true;
-
chg_virtue(player_ptr, Virtue::UNLIFE, -2);
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);
- player_ptr->update |= (PU_MONSTER_STATUSES);
-
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
}
} else {
if (player_ptr->invuln && !music_singing(player_ptr, MUSIC_INVULN)) {
msg_print(_("無敵ではなくなった。", "The invulnerability wears off."));
notice = true;
-
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
-
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
-
player_ptr->energy_need += ENERGY_NEED();
}
}
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#include "status/buff-setter.h"
#include "status/element-resistance.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "timed-effect/player-acceleration.h"
#include "timed-effect/player-blindness.h"
#include "timed-effect/player-confusion.h"
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
- player_ptr->update |= (PU_HP);
+
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
handle_stuff(player_ptr);
return true;
}
disturb(player_ptr, false, true);
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_BASIC | PR_TIMED_EFFECT);
- player_ptr->update |= (PU_BONUS | PU_HP);
-
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
+ rfu.set_flags(flags);
handle_stuff(player_ptr);
return true;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
- player_ptr->update |= (PU_HP);
+
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
+ RedrawingFlagsUpdater::get_instance().set_flags(flags);
handle_stuff(player_ptr);
return true;
}
return false;
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
if (v) {
if (player_ptr->wraith_form && !do_dec) {
if (player_ptr->wraith_form > v) {
chg_virtue(player_ptr, Virtue::VALOUR, -5);
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
-
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
}
} else {
notice = true;
player_ptr->redraw |= (PR_MAP);
- player_ptr->update |= (PU_MONSTER_STATUSES);
-
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->window_flags |= (PW_OVERHEAD | PW_DUNGEON);
}
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
}
}
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->tsuyoshi = v;
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
- player_ptr->update |= (PU_HP);
+
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ };
+ rfu.set_flags(flags);
handle_stuff(player_ptr);
return true;
}
#include "status/bad-status-setter.h"
#include "status/base-status.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "timed-effect/player-cut.h"
#include "timed-effect/timed-effects.h"
#include "util/enum-converter.h"
roll_hitdice(player_ptr, SPOP_NONE);
check_experience(player_ptr);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_BASIC);
- player_ptr->update |= (PU_BONUS);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
if (old_race != player_ptr->prace) {
static bool update_sight(PlayerType *player_ptr, const bool notice)
{
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
return false;
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
- player_ptr->update |= (PU_MONSTER_STATUSES);
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags);
handle_stuff(player_ptr);
return true;
}
#include "core/stuff-handler.h"
#include "game-option/disturbance-options.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "view/display-messages.h"
/*!
}
player_ptr->tim_levitation = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
-
if (!notice) {
return false;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
msg_print(_("あらゆることに対して耐性がついた気がする!", "You feel resistant!"));
notice = true;
}
- }
-
- else {
+ } else {
if (player_ptr->ult_res) {
msg_print(_("あらゆることに対する耐性が薄れた気がする。", "You feel less resistant"));
notice = true;
}
player_ptr->ult_res = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
-
if (!notice) {
return false;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
- handle_stuff(player_ptr);
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
+ handle_stuff(player_ptr);
return true;
}
}
player_ptr->tim_res_nether = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
-
if (!notice) {
return false;
}
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
}
player_ptr->tim_res_time = v;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
player_ptr->redraw |= (PR_TIMED_EFFECT);
if (!notice) {
return false;
if (disturb_state) {
disturb(player_ptr, false, false);
}
- player_ptr->update |= (PU_BONUS);
+
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
handle_stuff(player_ptr);
return true;
}
#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 "term/gameterm.h"
#include "term/screen-processor.h"
play_music(TERM_XTRA_MUSIC_BASIC, MUSIC_BASIC_BUILD);
display_store(player_ptr, store_num);
leave_store = false;
-
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
while (!leave_store) {
prt("", 1, 0);
clear_from(20 + xtra_stock);
prt(_("コマンド:", "You may: "), 20 + xtra_stock, 0);
InputKeyRequestor(player_ptr, true).request_command();
store_process_command(player_ptr, store_num);
-
- bool need_redraw_store_inv = any_bits(player_ptr->update, PU_BONUS);
w_ptr->character_icky_depth = 1;
handle_stuff(player_ptr);
if (player_ptr->inventory_list[INVEN_PACK].bi_id) {
}
}
- if (need_redraw_store_inv) {
+ if (rfu.has(StatusRedrawingFlag::BONUS)) {
display_store_inventory(player_ptr, store_num);
}
msg_erase();
term_clear();
- player_ptr->update |= PU_VIEW | PU_LITE | PU_MONSTER_LITE;
- player_ptr->update |= PU_MONSTER_STATUSES;
+ const auto flags_srf = {
+ StatusRedrawingFlag::VIEW,
+ StatusRedrawingFlag::LITE,
+ StatusRedrawingFlag::MONSTER_LITE,
+ StatusRedrawingFlag::MONSTER_STATUSES,
+ };
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_BASIC | PR_EXTRA | PR_EQUIPPY;
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
#include "store/store.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
#include "util/bit-flags-calculator.h"
#include "view/display-messages.h"
}
}
- set_bits(player_ptr->update, PU_BONUS);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::BONUS);
set_bits(player_ptr->window_flags, PW_PLAYER);
handle_stuff(player_ptr);
POSITION cur_lite{}; /* Radius of lite (if any) */
- BIT_FLAGS update{}; /* Pending Updates */
BIT_FLAGS redraw{}; /* Normal Redraws */
BIT_FLAGS window_flags{}; /* Window Redraws */
int16_t stat_use[A_MAX]{}; /* Current modified stats */
#include "io/screen-util.h"
#include "system/floor-type-definition.h"
#include "system/grid-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-checker.h"
#include "term/screen-processor.h"
#include "timed-effect/player-hallucination.h"
this->y = player_ptr->y;
this->x = player_ptr->x;
verify_panel(player_ptr);
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD;
handle_stuff(player_ptr);
prt("", 0, 0);
verify_panel(player_ptr);
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD;
handle_stuff(player_ptr);
#include "system/floor-type-definition.h"
#include "system/monster-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "target/target-preparation.h"
#include "target/target-types.h"
#include "window/main-window-util.h"
}
panel_bounds_center();
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD | PW_DUNGEON;
}
#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 "target/projection-path-calculator.h"
#include "target/target-checker.h"
#include "target/target-describer.h"
return;
case 'p': {
verify_panel(player_ptr);
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD;
handle_stuff(player_ptr);
static void sweep_targets(PlayerType *player_ptr, ts_type *ts_ptr)
{
auto *floor_ptr = player_ptr->current_floor_ptr;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
while (ts_ptr->flag && (ts_ptr->target_num < 0)) {
// カーソル移動に伴い、必要なだけ描画範囲を更新。
// "interesting" 座標リストおよび現在のターゲットも更新。
panel_row_min = ts_ptr->y2;
panel_col_min = ts_ptr->x2;
panel_bounds_center();
- player_ptr->update |= PU_MONSTER_STATUSES;
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD;
handle_stuff(player_ptr);
target_col = ts_ptr->x;
ts_ptr->done = true;
break;
- case 'p':
+ case 'p': {
verify_panel(player_ptr);
- player_ptr->update |= PU_MONSTER_STATUSES;
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
player_ptr->redraw |= PR_MAP;
player_ptr->window_flags |= PW_OVERHEAD;
handle_stuff(player_ptr);
ts_ptr->y = player_ptr->y;
ts_ptr->x = player_ptr->x;
break;
+ }
case 'o':
// ターゲット時の「m近」「o現」の切り替え
// すでに「o現」の時にoを押してもなにも起きない
sweep_target_grids(player_ptr, ts_ptr);
prt("", 0, 0);
verify_panel(player_ptr);
- set_bits(player_ptr->update, PU_MONSTER_STATUSES);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ rfu.set_flag(StatusRedrawingFlag::MONSTER_STATUSES);
set_bits(player_ptr->redraw, PR_MAP);
set_bits(player_ptr->window_flags, PW_OVERHEAD | PW_FLOOR_ITEMS);
handle_stuff(player_ptr);
#include "system/floor-type-definition.h"
#include "system/item-entity.h"
#include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
#include "system/system-variables.h"
#include "term/screen-processor.h"
#include "term/term-color-types.h"
o_ptr->marked.set(OmType::TOUCHED);
}
- /* Refrect item informaiton onto subwindows without updating inventory */
- reset_bits(player_ptr->update, PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.reset_flags(flags_srf);
handle_stuff(player_ptr);
- set_bits(player_ptr->update, PU_COMBINATION | PU_REORDER);
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT);
}
}
o_ptr->copy_from(q_ptr);
- set_bits(player_ptr->update, PU_BONUS | PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_SPELL | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
}
msg_print("Changes accepted.");
o_ptr->copy_from(q_ptr);
- set_bits(player_ptr->update, PU_BONUS | PU_COMBINATION | PU_REORDER);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::COMBINATION,
+ StatusRedrawingFlag::REORDER,
+ };
+ rfu.set_flags(flags_srf);
set_bits(player_ptr->window_flags, PW_INVENTORY | PW_EQUIPMENT | PW_SPELL | PW_PLAYER | PW_FLOOR_ITEMS | PW_FOUND_ITEMS);
} else {
msg_print("Changes ignored.");
#include "system/item-entity.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 "term/screen-processor.h"
note_spot(player_ptr, y, x);
lite_spot(player_ptr, y, x);
- player_ptr->update |= PU_FLOW;
+ RedrawingFlagsUpdater::get_instance().set_flag(StatusRedrawingFlag::FLOW);
}
/*!
player_ptr->prace = i2enum<PlayerRaceType>(val);
rp_ptr = &race_info[enum2i(player_ptr->prace)];
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
player_ptr->window_flags |= PW_PLAYER;
- player_ptr->update |= PU_BONUS | PU_HP | PU_MP | PU_SPELLS;
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_BASIC | PR_HP | PR_MP | PR_ABILITY_SCORE;
handle_stuff(player_ptr);
}
cp_ptr = &class_info[val];
mp_ptr = &class_magics_info[val];
PlayerClass(player_ptr).init_specific_data();
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags_srf = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
player_ptr->window_flags |= PW_PLAYER;
- player_ptr->update |= PU_BONUS | PU_HP | PU_MP | PU_SPELLS;
+ rfu.set_flags(flags_srf);
player_ptr->redraw |= PR_BASIC | PR_HP | PR_MP | PR_ABILITY_SCORE;
handle_stuff(player_ptr);
}
player_ptr->realm1 = static_cast<int16_t>(val1);
player_ptr->realm2 = static_cast<int16_t>(val2);
+ auto &rfu = RedrawingFlagsUpdater::get_instance();
+ const auto flags = {
+ StatusRedrawingFlag::BONUS,
+ StatusRedrawingFlag::HP,
+ StatusRedrawingFlag::MP,
+ StatusRedrawingFlag::SPELLS,
+ };
player_ptr->window_flags |= PW_PLAYER;
- player_ptr->update |= PU_BONUS | PU_HP | PU_MP | PU_SPELLS;
+ rfu.set_flags(flags);
player_ptr->redraw |= PR_BASIC;
handle_stuff(player_ptr);
}