X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Ffloor%2Ffloor-events.cpp;h=e570d40289ba6e6e82c797a4b5da68b057a2ae08;hb=d4ae58f94c4b120afa39b1e79b9c7f0cd91e2e20;hp=3e770b085bd3064dc60f71ced1bfe803ebfeadc5;hpb=213c4e2429251f8279f90d0cf1e3a50b2196f3d5;p=hengbandforosx%2Fhengbandosx.git diff --git a/src/floor/floor-events.cpp b/src/floor/floor-events.cpp index 3e770b085..e570d4028 100644 --- a/src/floor/floor-events.cpp +++ b/src/floor/floor-events.cpp @@ -1,4 +1,4 @@ -#include "floor/floor-events.h" +#include "floor/floor-events.h" #include "cmd-io/cmd-dump.h" #include "core/disturbance.h" #include "core/window-redrawer.h" @@ -29,6 +29,7 @@ #include "sv-definition/sv-amulet-types.h" #include "sv-definition/sv-protector-types.h" #include "sv-definition/sv-ring-types.h" +#include "system/angband-system.h" #include "system/baseitem-info.h" #include "system/dungeon-info.h" #include "system/floor-type-definition.h" @@ -46,13 +47,13 @@ static void update_sun_light(PlayerType *player_ptr) { auto &rfu = RedrawingFlagsUpdater::get_instance(); - const auto flags_srf = { - StatusRedrawingFlag::MONSTER_STATUSES, - StatusRedrawingFlag::MONSTER_LITE, + static constexpr auto flags_srf = { + StatusRecalculatingFlag::MONSTER_STATUSES, + StatusRecalculatingFlag::MONSTER_LITE, }; rfu.set_flags(flags_srf); rfu.set_flag(MainWindowRedrawingFlag::MAP); - const auto flags = { + static constexpr auto flags = { SubWindowRedrawingFlag::OVERHEAD, SubWindowRedrawingFlag::DUNGEON, }; @@ -89,24 +90,25 @@ void day_break(PlayerType *player_ptr) void night_falls(PlayerType *player_ptr) { msg_print(_("日が沈んだ。", "The sun has fallen.")); - auto *floor_ptr = player_ptr->current_floor_ptr; if (player_ptr->wild_mode) { update_sun_light(player_ptr); return; } - for (auto y = 0; y < floor_ptr->height; y++) { - for (auto x = 0; x < floor_ptr->width; x++) { - auto *g_ptr = &floor_ptr->grid_array[y][x]; - auto *f_ptr = &terrains_info[g_ptr->get_feat_mimic()]; + auto &floor = *player_ptr->current_floor_ptr; + for (auto y = 0; y < floor.height; y++) { + for (auto x = 0; x < floor.width; x++) { + const Pos2D pos(y, x); + auto &grid = floor.get_grid(pos); + const auto &terrain = grid.get_terrain_mimic(); using Tc = TerrainCharacteristics; - if (g_ptr->is_mirror() || f_ptr->flags.has(Tc::QUEST_ENTER) || f_ptr->flags.has(Tc::ENTRANCE)) { + if (grid.is_mirror() || terrain.flags.has(Tc::QUEST_ENTER) || terrain.flags.has(Tc::ENTRANCE)) { continue; } - g_ptr->info &= ~(CAVE_GLOW); - if (f_ptr->flags.has_not(Tc::REMEMBER)) { - g_ptr->info &= ~(CAVE_MARK); + grid.info &= ~(CAVE_GLOW); + if (terrain.flags.has_not(Tc::REMEMBER)) { + grid.info &= ~(CAVE_MARK); note_spot(player_ptr, y, x); } } @@ -147,7 +149,7 @@ static byte get_dungeon_feeling(PlayerType *player_ptr) continue; } - r_ptr = &monraces_info[m_ptr->r_idx]; + r_ptr = &m_ptr->get_monrace(); if (r_ptr->kind_flags.has(MonsterKindType::UNIQUE)) { if (r_ptr->level + 10 > floor_ptr->dun_level) { delta += (r_ptr->level + 10 - floor_ptr->dun_level) * 2 * base; @@ -156,7 +158,7 @@ static byte get_dungeon_feeling(PlayerType *player_ptr) delta += (r_ptr->level - floor_ptr->dun_level) * base; } - if (r_ptr->flags1 & RF1_FRIENDS) { + if (r_ptr->misc_flags.has(MonsterMiscType::HAS_FRIENDS)) { if (5 <= get_monster_crowd_number(floor_ptr, i)) { delta += 1; } @@ -285,7 +287,7 @@ void update_dungeon_feeling(PlayerType *player_ptr) return; } - if (player_ptr->phase_out) { + if (AngbandSystem::get_instance().is_phase_out()) { return; } @@ -294,7 +296,7 @@ void update_dungeon_feeling(PlayerType *player_ptr) return; } - auto quest_num = quest_number(floor, floor.dun_level); + auto quest_num = floor.get_quest_id(); const auto &quest_list = QuestList::get_instance(); auto dungeon_quest = (quest_num == QuestId::OBERON); @@ -327,36 +329,34 @@ void update_dungeon_feeling(PlayerType *player_ptr) */ void glow_deep_lava_and_bldg(PlayerType *player_ptr) { - auto *floor_ptr = player_ptr->current_floor_ptr; - if (floor_ptr->get_dungeon_definition().flags.has(DungeonFeatureType::DARKNESS)) { + auto &floor = *player_ptr->current_floor_ptr; + if (floor.get_dungeon_definition().flags.has(DungeonFeatureType::DARKNESS)) { return; } - for (POSITION y = 0; y < floor_ptr->height; y++) { - for (POSITION x = 0; x < floor_ptr->width; x++) { - grid_type *g_ptr; - g_ptr = &floor_ptr->grid_array[y][x]; - if (terrains_info[g_ptr->get_feat_mimic()].flags.has_not(TerrainCharacteristics::GLOW)) { + for (auto y = 0; y < floor.height; y++) { + for (auto x = 0; x < floor.width; x++) { + const auto &grid = floor.get_grid({ y, x }); + if (grid.get_terrain_mimic().flags.has_not(TerrainCharacteristics::GLOW)) { continue; } - for (DIRECTION i = 0; i < 9; i++) { - POSITION yy = y + ddy_ddd[i]; - POSITION xx = x + ddx_ddd[i]; - if (!in_bounds2(floor_ptr, yy, xx)) { + for (auto i = 0; i < 9; i++) { + const Pos2D pos(y + ddy_ddd[i], x + ddx_ddd[i]); + if (!in_bounds2(&floor, pos.y, pos.x)) { continue; } - floor_ptr->grid_array[yy][xx].info |= CAVE_GLOW; + floor.get_grid(pos).info |= CAVE_GLOW; } } } auto &rfu = RedrawingFlagsUpdater::get_instance(); - const auto flags_srf = { - StatusRedrawingFlag::VIEW, - StatusRedrawingFlag::LITE, - StatusRedrawingFlag::MONSTER_LITE, + static constexpr auto flags_srf = { + StatusRecalculatingFlag::VIEW, + StatusRecalculatingFlag::LITE, + StatusRecalculatingFlag::MONSTER_LITE, }; rfu.set_flags(flags_srf); rfu.set_flag(MainWindowRedrawingFlag::MAP); @@ -392,7 +392,7 @@ void forget_view(FloorType *floor_ptr) for (int i = 0; i < floor_ptr->view_n; i++) { POSITION y = floor_ptr->view_y[i]; POSITION x = floor_ptr->view_x[i]; - grid_type *g_ptr; + Grid *g_ptr; g_ptr = &floor_ptr->grid_array[y][x]; g_ptr->info &= ~(CAVE_VIEW); }