OSDN Git Service

[Refactor] #919 Removed cave_los_grid() and moved cave_has_los_grid() from cave.cpp...
authorHourier <grapefox.whitelucifer.0408@gmail.com>
Sat, 7 Aug 2021 04:49:48 +0000 (13:49 +0900)
committerHourier <grapefox.whitelucifer.0408@gmail.com>
Sun, 8 Aug 2021 05:59:42 +0000 (14:59 +0900)
25 files changed:
src/action/tunnel-execution.cpp
src/combat/shoot.cpp
src/floor/cave.cpp
src/floor/cave.h
src/floor/floor-streams.cpp
src/floor/floor-util.cpp
src/floor/wild.cpp
src/grid/feature-generator.cpp
src/grid/grid.cpp
src/grid/stair.cpp
src/grid/trap.cpp
src/io/cursor.cpp
src/mind/mind-archer.cpp
src/monster-floor/monster-lite.cpp
src/mspell/mspell-lite.cpp
src/pet/pet-fall-off.cpp
src/player/player-view.cpp
src/room/vault-builder.cpp
src/spell-kind/spells-detection.cpp
src/spell-kind/spells-floor.cpp
src/spell-realm/spells-chaos.cpp
src/store/cmd-store.cpp
src/system/grid-type-definition.cpp
src/system/grid-type-definition.h
src/target/grid-selector.cpp

index c3d3aa1..9246273 100644 (file)
@@ -34,7 +34,7 @@ static bool do_cmd_tunnel_test(floor_type *floor_ptr, POSITION y, POSITION x)
         return false;
     }
 
-    if (!cave_has_flag_grid(g_ptr, FF_TUNNEL)) {
+    if (!g_ptr->cave_has_flag(FF_TUNNEL)) {
         msg_print(_("そこには掘るものが見当たらない。", "You see nothing there to tunnel."));
         return false;
     }
index 62323d0..e36f7ae 100644 (file)
@@ -544,7 +544,7 @@ void exe_fire(player_type *shooter_ptr, INVENTORY_IDX item, object_type *j_ptr,
             if (snipe_type == SP_KILL_WALL) {
                 g_ptr = &shooter_ptr->current_floor_ptr->grid_array[ny][nx];
 
-                if (cave_has_flag_grid(g_ptr, FF_HURT_ROCK) && !g_ptr->m_idx) {
+                if (g_ptr->cave_has_flag(FF_HURT_ROCK) && !g_ptr->m_idx) {
                     if (any_bits(g_ptr->info, (CAVE_MARK)))
                         msg_print(_("岩が砕け散った。", "Wall rocks were shattered."));
                     /* Forget the wall */
index 9e5301e..39964dc 100644 (file)
@@ -103,10 +103,6 @@ bool cave_los_bold(floor_type *floor_ptr, POSITION y, POSITION x) { return feat_
  */
 bool feat_supports_los(FEAT_IDX f_idx) { return has_flag(f_info[f_idx].flags, FF_LOS); }
 
-bool cave_los_grid(grid_type *grid_ptr) { return feat_supports_los(grid_ptr->feat); }
-
-bool cave_has_flag_grid(grid_type *grid_ptr, int feature_flags) { return has_flag(f_info[grid_ptr->feat].flags, feature_flags); }
-
 /*
  * Determine if a "legal" grid is a "clean" floor grid
  * Determine if terrain-change spells are allowed in a grid.
index 5f86f85..cbb5a14 100644 (file)
@@ -17,8 +17,6 @@ bool player_bold(player_type *player_ptr, POSITION y, POSITION x);
 bool cave_stop_disintegration(floor_type *floor_ptr, POSITION y, POSITION x);
 bool cave_los_bold(floor_type *floor_ptr, POSITION y, POSITION x);
 bool feat_supports_los(FEAT_IDX f_idx);
-bool cave_los_grid(grid_type *grid_ptr);
-bool cave_has_flag_grid(grid_type *grid_ptr, int feature_flags);
 bool cave_clean_bold(floor_type *floor_ptr, POSITION y, POSITION x);
 bool cave_drop_bold(floor_type *floor_ptr, POSITION y, POSITION x);
 bool pattern_tile(floor_type *floor_ptr, POSITION y, POSITION x);
index 40de066..bc10266 100644 (file)
@@ -124,7 +124,7 @@ static void recursive_river(floor_type *floor_ptr, POSITION x1, POSITION y1, POS
                             continue;
 
                         /* Do not convert permanent features */
-                        if (cave_has_flag_grid(g_ptr, FF_PERMANENT))
+                        if (g_ptr->cave_has_flag(FF_PERMANENT))
                             continue;
 
                         /*
@@ -433,7 +433,7 @@ void place_trees(player_type *player_ptr, POSITION x, POSITION y)
                 continue;
 
             /* Want square to be in the circle and accessable. */
-            if ((distance(j, i, y, x) < 4) && !cave_has_flag_grid(g_ptr, FF_PERMANENT)) {
+            if ((distance(j, i, y, x) < 4) && !g_ptr->cave_has_flag(FF_PERMANENT)) {
                 /*
                  * Clear previous contents, add feature
                  * The border mainly gets trees, while the center gets rubble
index fd13998..ba4b11b 100644 (file)
@@ -81,7 +81,7 @@ void update_smell(floor_type *floor_ptr, player_type *subject_ptr)
                 continue;
 
             g_ptr = &floor_ptr->grid_array[y][x];
-            if (!cave_has_flag_grid(g_ptr, FF_MOVE) && !is_closed_door(subject_ptr, g_ptr->feat))
+            if (!g_ptr->cave_has_flag(FF_MOVE) && !is_closed_door(subject_ptr, g_ptr->feat))
                 continue;
             if (!player_has_los_bold(subject_ptr, y, x))
                 continue;
index e06eed3..1b27b0a 100644 (file)
@@ -512,7 +512,7 @@ void wilderness_gen(player_type *creature_ptr)
             for (x = 0; x < floor_ptr->width; x++) {
                 grid_type *g_ptr;
                 g_ptr = &floor_ptr->grid_array[y][x];
-                if (!cave_has_flag_grid(g_ptr, FF_ENTRANCE))
+                if (!g_ptr->cave_has_flag(FF_ENTRANCE))
                     continue;
 
                 if (g_ptr->m_idx != 0)
index 927b082..e6ceac3 100644 (file)
@@ -121,7 +121,7 @@ static int next_to_corr(floor_type *floor_ptr, POSITION y1, POSITION x1)
         POSITION x = x1 + ddx_ddd[i];
         grid_type *g_ptr;
         g_ptr = &floor_ptr->grid_array[y][x];
-        if (cave_has_flag_grid(g_ptr, FF_WALL) || !g_ptr->is_floor() || g_ptr->is_room())
+        if (g_ptr->cave_has_flag(FF_WALL) || !g_ptr->is_floor() || g_ptr->is_room())
             continue;
 
         k++;
index 5d7f061..cc7e562 100644 (file)
@@ -265,7 +265,7 @@ bool new_player_spot(player_type *creature_ptr)
  */
 bool is_hidden_door(player_type *player_ptr, grid_type *g_ptr)
 {
-    if ((g_ptr->mimic || cave_has_flag_grid(g_ptr, FF_SECRET)) && is_closed_door(player_ptr, g_ptr->feat))
+    if ((g_ptr->mimic || g_ptr->cave_has_flag(FF_SECRET)) && is_closed_door(player_ptr, g_ptr->feat))
         return true;
     else
         return false;
@@ -832,10 +832,10 @@ void update_flow(player_type *subject_ptr)
                 bool can_move = false;
                 switch (i) {
                 case FLOW_CAN_FLY:
-                    can_move = cave_has_flag_grid(g_ptr, FF_MOVE) || cave_has_flag_grid(g_ptr, FF_CAN_FLY);
+                    can_move = g_ptr->cave_has_flag(FF_MOVE) || g_ptr->cave_has_flag(FF_CAN_FLY);
                     break;
                 default:
-                    can_move = cave_has_flag_grid(g_ptr, FF_MOVE);
+                    can_move = g_ptr->cave_has_flag(FF_MOVE);
                     break;
                 }
 
index 9df1ad5..b074e72 100644 (file)
@@ -64,7 +64,7 @@ void place_random_stairs(player_type *player_ptr, POSITION y, POSITION x)
 bool cave_valid_bold(floor_type *floor_ptr, POSITION y, POSITION x)
 {
     grid_type *g_ptr = &floor_ptr->grid_array[y][x];
-    if (cave_has_flag_grid(g_ptr, FF_PERMANENT))
+    if (g_ptr->cave_has_flag(FF_PERMANENT))
         return false;
 
     for (const auto this_o_idx : g_ptr->o_idx_list) {
index 5d66c17..3c075b3 100644 (file)
@@ -201,7 +201,7 @@ void disclose_grid(player_type *trapped_ptr, POSITION y, POSITION x)
 {
     grid_type *g_ptr = &trapped_ptr->current_floor_ptr->grid_array[y][x];
 
-    if (cave_has_flag_grid(g_ptr, FF_SECRET)) {
+    if (g_ptr->cave_has_flag(FF_SECRET)) {
         /* No longer hidden */
         cave_alter_feat(trapped_ptr, y, x, FF_SECRET);
     } else if (g_ptr->mimic) {
index 9fe8334..ea2fb3d 100644 (file)
@@ -83,7 +83,7 @@ void print_path(player_type *player_ptr, POSITION y, POSITION x)
             term_queue_bigchar(panel_col_of(nx), ny - panel_row_prt, a, c, ta, tc);
         }
 
-        if (g_ptr->is_mark() && !cave_has_flag_grid(g_ptr, FF_PROJECT))
+        if (g_ptr->is_mark() && !g_ptr->cave_has_flag(FF_PROJECT))
             break;
 
         if (nx == x && ny == y)
index a35fa75..349bbd6 100644 (file)
@@ -114,7 +114,7 @@ bool create_ammo(player_type *creature_ptr)
             return false;
         }
 
-        if (!cave_has_flag_grid(g_ptr, FF_CAN_DIG) || !cave_has_flag_grid(g_ptr, FF_HURT_ROCK)) {
+        if (!g_ptr->cave_has_flag(FF_CAN_DIG) || !g_ptr->cave_has_flag(FF_HURT_ROCK)) {
             msg_print(_("硬すぎて崩せなかった。", "You failed to make ammo."));
             return true;
         }
index 0503eb7..db6e33a 100644 (file)
@@ -37,7 +37,7 @@ static void update_monster_lite(
     if ((g_ptr->info & (CAVE_MNLT | CAVE_VIEW)) != CAVE_VIEW)
         return;
 
-    if (!cave_los_grid(g_ptr)) {
+    if (!feat_supports_los(g_ptr->feat)) {
         if (((y < subject_ptr->y) && (y > ml_ptr->mon_fy)) || ((y > subject_ptr->y) && (y < ml_ptr->mon_fy))) {
             dpf = subject_ptr->y - ml_ptr->mon_fy;
             d = y - ml_ptr->mon_fy;
@@ -88,7 +88,7 @@ static void update_monster_dark(
     if ((g_ptr->info & (CAVE_LITE | CAVE_MNLT | CAVE_MNDK | CAVE_VIEW)) != CAVE_VIEW)
         return;
 
-    if (!cave_los_grid(g_ptr) && !cave_has_flag_grid(g_ptr, FF_PROJECT)) {
+    if (!feat_supports_los(g_ptr->feat) && !g_ptr->cave_has_flag(FF_PROJECT)) {
         if (((y < subject_ptr->y) && (y > ml_ptr->mon_fy)) || ((y > subject_ptr->y) && (y < ml_ptr->mon_fy))) {
             dpf = subject_ptr->y - ml_ptr->mon_fy;
             d = y - ml_ptr->mon_fy;
@@ -209,7 +209,7 @@ void update_mon_lite(player_type *subject_ptr)
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 2, ml_ptr->mon_fx, ml_ptr);
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 2, ml_ptr->mon_fx - 1, ml_ptr);
                 g_ptr = &floor_ptr->grid_array[ml_ptr->mon_fy + 2][ml_ptr->mon_fx];
-                if ((rad == 3) && cave_has_flag_grid(g_ptr, f_flag)) {
+                if ((rad == 3) && g_ptr->cave_has_flag(f_flag)) {
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 3, ml_ptr->mon_fx + 1, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 3, ml_ptr->mon_fx, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 3, ml_ptr->mon_fx - 1, ml_ptr);
@@ -221,7 +221,7 @@ void update_mon_lite(player_type *subject_ptr)
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 2, ml_ptr->mon_fx, ml_ptr);
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 2, ml_ptr->mon_fx - 1, ml_ptr);
                 g_ptr = &floor_ptr->grid_array[ml_ptr->mon_fy - 2][ml_ptr->mon_fx];
-                if ((rad == 3) && cave_has_flag_grid(g_ptr, f_flag)) {
+                if ((rad == 3) && g_ptr->cave_has_flag(f_flag)) {
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 3, ml_ptr->mon_fx + 1, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 3, ml_ptr->mon_fx, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 3, ml_ptr->mon_fx - 1, ml_ptr);
@@ -233,7 +233,7 @@ void update_mon_lite(player_type *subject_ptr)
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy, ml_ptr->mon_fx + 2, ml_ptr);
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 1, ml_ptr->mon_fx + 2, ml_ptr);
                 g_ptr = &floor_ptr->grid_array[ml_ptr->mon_fy][ml_ptr->mon_fx + 2];
-                if ((rad == 3) && cave_has_flag_grid(g_ptr, f_flag)) {
+                if ((rad == 3) && g_ptr->cave_has_flag(f_flag)) {
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 1, ml_ptr->mon_fx + 3, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy, ml_ptr->mon_fx + 3, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 1, ml_ptr->mon_fx + 3, ml_ptr);
@@ -245,7 +245,7 @@ void update_mon_lite(player_type *subject_ptr)
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy, ml_ptr->mon_fx - 2, ml_ptr);
                 add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 1, ml_ptr->mon_fx - 2, ml_ptr);
                 g_ptr = &floor_ptr->grid_array[ml_ptr->mon_fy][ml_ptr->mon_fx - 2];
-                if ((rad == 3) && cave_has_flag_grid(g_ptr, f_flag)) {
+                if ((rad == 3) && g_ptr->cave_has_flag(f_flag)) {
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy + 1, ml_ptr->mon_fx - 3, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy, ml_ptr->mon_fx - 3, ml_ptr);
                     add_mon_lite(subject_ptr, points, ml_ptr->mon_fy - 1, ml_ptr->mon_fx - 3, ml_ptr);
index 311e5fa..7ea0764 100644 (file)
@@ -57,7 +57,7 @@ bool adjacent_grid_check(player_type *target_ptr, monster_type *m_ptr, POSITION
         int next_y = *yp + tonari_y[next][i];
         grid_type *g_ptr;
         g_ptr = &target_ptr->current_floor_ptr->grid_array[next_y][next_x];
-        if (!cave_has_flag_grid(g_ptr, f_flag))
+        if (!g_ptr->cave_has_flag(f_flag))
             continue;
 
         if (path_check(target_ptr, m_ptr->fy, m_ptr->fx, next_y, next_x)) {
index 6f4af2a..b660d0b 100644 (file)
@@ -121,12 +121,12 @@ bool process_fall_off_horse(player_type *creature_ptr, HIT_POINT dam, bool force
                 continue;
 
             /* Skip non-empty grids */
-            if (!cave_has_flag_grid(g_ptr, FF_MOVE) && !cave_has_flag_grid(g_ptr, FF_CAN_FLY)) {
+            if (!g_ptr->cave_has_flag(FF_MOVE) && !g_ptr->cave_has_flag(FF_CAN_FLY)) {
                 if (!can_player_ride_pet(creature_ptr, g_ptr, false))
                     continue;
             }
 
-            if (cave_has_flag_grid(g_ptr, FF_PATTERN))
+            if (g_ptr->cave_has_flag(FF_PATTERN))
                 continue;
 
             /* Count "safe" grids */
index 16261e0..4c17918 100644 (file)
@@ -34,8 +34,8 @@ static bool update_view_aux(player_type *subject_ptr, POSITION y, POSITION x, PO
     grid_type *g2_c_ptr;
     g1_c_ptr = &floor_ptr->grid_array[y1][x1];
     g2_c_ptr = &floor_ptr->grid_array[y2][x2];
-    bool f1 = (cave_los_grid(g1_c_ptr));
-    bool f2 = (cave_los_grid(g2_c_ptr));
+    bool f1 = (feat_supports_los(g1_c_ptr->feat));
+    bool f2 = (feat_supports_los(g2_c_ptr->feat));
     if (!f1 && !f2)
         return true;
 
@@ -46,7 +46,7 @@ static bool update_view_aux(player_type *subject_ptr, POSITION y, POSITION x, PO
 
     grid_type *g_ptr;
     g_ptr = &floor_ptr->grid_array[y][x];
-    bool wall = (!cave_los_grid(g_ptr));
+    bool wall = (!feat_supports_los(g_ptr->feat));
     bool z1 = (v1 && (g1_c_ptr->info & CAVE_XTRA));
     bool z2 = (v2 && (g2_c_ptr->info & CAVE_XTRA));
     if (z1 && z2) {
@@ -143,7 +143,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y + d][x + d];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y + d, x + d);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -151,7 +151,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y + d][x - d];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y + d, x - d);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -159,7 +159,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y - d][x + d];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y - d, x + d);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -167,7 +167,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y - d][x - d];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y - d, x - d);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -175,7 +175,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y + d][x];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y + d, x);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -184,7 +184,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y - d][x];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y - d, x);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -193,7 +193,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y][x + d];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y, x + d);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
@@ -202,7 +202,7 @@ void update_view(player_type *subject_ptr)
         g_ptr = &floor_ptr->grid_array[y][x - d];
         g_ptr->info |= CAVE_XTRA;
         cave_view_hack(floor_ptr, y, x - d);
-        if (!cave_los_grid(g_ptr))
+        if (!feat_supports_los(g_ptr->feat))
             break;
     }
 
index bf98100..8c8a4d8 100644 (file)
@@ -23,7 +23,7 @@ static bool player_grid(player_type *player_ptr, grid_type *g_ptr) { return g_pt
  */
 static bool is_cave_empty_grid(player_type *player_ptr, grid_type *g_ptr)
 {
-    bool is_empty_grid = cave_has_flag_grid(g_ptr, FF_PLACE);
+    bool is_empty_grid = g_ptr->cave_has_flag(FF_PLACE);
     is_empty_grid &= g_ptr->m_idx == 0;
     is_empty_grid &= !player_grid(player_ptr, g_ptr);
     return is_empty_grid;
index 9837d29..9423299 100644 (file)
@@ -64,7 +64,7 @@ static bool detect_feat_flag(player_type *caster_ptr, POSITION range, int flag,
                 }
             }
 
-            if (cave_has_flag_grid(g_ptr, flag)) {
+            if (g_ptr->cave_has_flag(flag)) {
                 disclose_grid(caster_ptr, y, x);
                 g_ptr->info |= (CAVE_MARK);
                 lite_spot(caster_ptr, y, x);
index 7edb08b..9cc5de8 100644 (file)
@@ -355,7 +355,7 @@ bool destroy_area(player_type *caster_ptr, POSITION y1, POSITION x1, POSITION r,
             delete_all_items_from_floor(caster_ptr, y, x);
 
             /* Destroy "non-permanent" grids */
-            if (cave_has_flag_grid(g_ptr, FF_PERMANENT))
+            if (g_ptr->cave_has_flag(FF_PERMANENT))
                 continue;
 
             /* Wall (or floor) type */
index fae7432..19b5b70 100644 (file)
@@ -38,7 +38,7 @@ void call_the_void(player_type *caster_ptr)
     for (int i = 0; i < 9; i++) {
         g_ptr = &caster_ptr->current_floor_ptr->grid_array[caster_ptr->y + ddy_ddd[i]][caster_ptr->x + ddx_ddd[i]];
 
-        if (!cave_has_flag_grid(g_ptr, FF_PROJECT)) {
+        if (!g_ptr->cave_has_flag(FF_PROJECT)) {
             if (!g_ptr->mimic || !has_flag(f_info[g_ptr->mimic].flags, FF_PROJECT) || !permanent_wall(&f_info[g_ptr->feat])) {
                 do_call = false;
                 break;
index d00dd87..ea77702 100644 (file)
@@ -63,7 +63,7 @@ void do_cmd_store(player_type *player_ptr)
     grid_type *g_ptr;
     g_ptr = &player_ptr->current_floor_ptr->grid_array[player_ptr->y][player_ptr->x];
 
-    if (!cave_has_flag_grid(g_ptr, FF_STORE)) {
+    if (!g_ptr->cave_has_flag(FF_STORE)) {
         msg_print(_("ここには店がありません。", "You see no store here."));
         return;
     }
index 8e9edfb..fb672ae 100644 (file)
@@ -115,3 +115,8 @@ FEAT_IDX grid_type::get_feat_mimic()
 {
     return f_info[this->mimic ? this->mimic : this->feat].mimic;
 }
+
+bool grid_type::cave_has_flag(int feature_flags)
+{
+    return has_flag(f_info[this->feat].flags, feature_flags);
+}
index 7baf001..366b805 100644 (file)
@@ -84,6 +84,7 @@ public:
     byte get_cost(monster_race *r_ptr);
     byte get_distance(monster_race *r_ptr);
     FEAT_IDX get_feat_mimic();
+    bool cave_has_flag(int feature_flags);
 
 private:
     flow_type get_grid_flow_type(monster_race *r_ptr);
index d41baad..7031063 100644 (file)
@@ -45,11 +45,11 @@ static bool tgt_pt_accept(player_type *creature_ptr, POSITION y, POSITION x)
     if (!g_ptr->is_mark())
         return false;
 
-    if (cave_has_flag_grid(g_ptr, FF_LESS) || cave_has_flag_grid(g_ptr, FF_MORE) || cave_has_flag_grid(g_ptr, FF_QUEST_ENTER)
-        || cave_has_flag_grid(g_ptr, FF_QUEST_EXIT))
+    if (g_ptr->cave_has_flag(FF_LESS) || g_ptr->cave_has_flag(FF_MORE) || g_ptr->cave_has_flag(FF_QUEST_ENTER)
+        || g_ptr->cave_has_flag(FF_QUEST_EXIT))
         return true;
 
-    if (cave_has_flag_grid(g_ptr, FF_STORE) || cave_has_flag_grid(g_ptr, FF_BLDG))
+    if (g_ptr->cave_has_flag(FF_STORE) || g_ptr->cave_has_flag(FF_BLDG))
         return true;
 
     return false;
@@ -93,19 +93,19 @@ static bool cave_is_symbol_grid(grid_type *g_ptr, char ch)
  * @brief 指定したシンボルのマスかどうかを判定するための条件式コールバック
  */
 std::unordered_map<int, std::function<bool(grid_type *)>> tgt_pt_symbol_call_back = {
-    { '<', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STAIRS) && cave_has_flag_grid(g_ptr, FF_LESS); } },
-    { '>', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STAIRS) && cave_has_flag_grid(g_ptr, FF_MORE); } },
-    { '+', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_BLDG); } },
-    { '0', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '0'); } },
-    { '!', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '1'); } },
-    { '"', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '2'); } },
-    { '#', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '3'); } },
-    { '$', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '4'); } },
-    { '%', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '5'); } },
-    { '&', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '6'); } },
-    { '\'', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '7'); } },
-    { '(', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '8'); } },
-    { ')', [](grid_type *g_ptr) { return cave_has_flag_grid(g_ptr, FF_STORE) && cave_is_symbol_grid(g_ptr, '9'); } },
+    { '<', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STAIRS) && g_ptr->cave_has_flag(FF_LESS); } },
+    { '>', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STAIRS) && g_ptr->cave_has_flag(FF_MORE); } },
+    { '+', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_BLDG); } },
+    { '0', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '0'); } },
+    { '!', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '1'); } },
+    { '"', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '2'); } },
+    { '#', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '3'); } },
+    { '$', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '4'); } },
+    { '%', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '5'); } },
+    { '&', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '6'); } },
+    { '\'', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '7'); } },
+    { '(', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '8'); } },
+    { ')', [](grid_type *g_ptr) { return g_ptr->cave_has_flag(FF_STORE) && cave_is_symbol_grid(g_ptr, '9'); } },
 };
 
 /*!