From 659ac07157c1459d60bbff06acc367e0ac90c91a Mon Sep 17 00:00:00 2001 From: Hourier Date: Sat, 7 Aug 2021 13:49:48 +0900 Subject: [PATCH] [Refactor] #919 Removed cave_los_grid() and moved cave_has_los_grid() from cave.cpp/h to grid.cpp/h --- src/action/tunnel-execution.cpp | 2 +- src/combat/shoot.cpp | 2 +- src/floor/cave.cpp | 4 ---- src/floor/cave.h | 2 -- src/floor/floor-streams.cpp | 4 ++-- src/floor/floor-util.cpp | 2 +- src/floor/wild.cpp | 2 +- src/grid/feature-generator.cpp | 2 +- src/grid/grid.cpp | 6 +++--- src/grid/stair.cpp | 2 +- src/grid/trap.cpp | 2 +- src/io/cursor.cpp | 2 +- src/mind/mind-archer.cpp | 2 +- src/monster-floor/monster-lite.cpp | 12 ++++++------ src/mspell/mspell-lite.cpp | 2 +- src/pet/pet-fall-off.cpp | 4 ++-- src/player/player-view.cpp | 22 +++++++++++----------- src/room/vault-builder.cpp | 2 +- src/spell-kind/spells-detection.cpp | 2 +- src/spell-kind/spells-floor.cpp | 2 +- src/spell-realm/spells-chaos.cpp | 2 +- src/store/cmd-store.cpp | 2 +- src/system/grid-type-definition.cpp | 5 +++++ src/system/grid-type-definition.h | 1 + src/target/grid-selector.cpp | 32 ++++++++++++++++---------------- 25 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/action/tunnel-execution.cpp b/src/action/tunnel-execution.cpp index c3d3aa12a..92462735b 100644 --- a/src/action/tunnel-execution.cpp +++ b/src/action/tunnel-execution.cpp @@ -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; } diff --git a/src/combat/shoot.cpp b/src/combat/shoot.cpp index 62323d0b0..e36f7ae0a 100644 --- a/src/combat/shoot.cpp +++ b/src/combat/shoot.cpp @@ -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 */ diff --git a/src/floor/cave.cpp b/src/floor/cave.cpp index 9e5301ef4..39964dc34 100644 --- a/src/floor/cave.cpp +++ b/src/floor/cave.cpp @@ -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. diff --git a/src/floor/cave.h b/src/floor/cave.h index 5f86f854f..cbb5a14d5 100644 --- a/src/floor/cave.h +++ b/src/floor/cave.h @@ -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); diff --git a/src/floor/floor-streams.cpp b/src/floor/floor-streams.cpp index 40de066fc..bc1026639 100644 --- a/src/floor/floor-streams.cpp +++ b/src/floor/floor-streams.cpp @@ -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 diff --git a/src/floor/floor-util.cpp b/src/floor/floor-util.cpp index fd13998b7..ba4b11b7c 100644 --- a/src/floor/floor-util.cpp +++ b/src/floor/floor-util.cpp @@ -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; diff --git a/src/floor/wild.cpp b/src/floor/wild.cpp index e06eed390..1b27b0ae1 100644 --- a/src/floor/wild.cpp +++ b/src/floor/wild.cpp @@ -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) diff --git a/src/grid/feature-generator.cpp b/src/grid/feature-generator.cpp index 927b0821c..e6ceac308 100644 --- a/src/grid/feature-generator.cpp +++ b/src/grid/feature-generator.cpp @@ -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++; diff --git a/src/grid/grid.cpp b/src/grid/grid.cpp index 5d7f061dd..cc7e562fa 100644 --- a/src/grid/grid.cpp +++ b/src/grid/grid.cpp @@ -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; } diff --git a/src/grid/stair.cpp b/src/grid/stair.cpp index 9df1ad51d..b074e7298 100644 --- a/src/grid/stair.cpp +++ b/src/grid/stair.cpp @@ -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) { diff --git a/src/grid/trap.cpp b/src/grid/trap.cpp index 5d66c17b4..3c075b387 100644 --- a/src/grid/trap.cpp +++ b/src/grid/trap.cpp @@ -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) { diff --git a/src/io/cursor.cpp b/src/io/cursor.cpp index 9fe8334f3..ea2fb3dff 100644 --- a/src/io/cursor.cpp +++ b/src/io/cursor.cpp @@ -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) diff --git a/src/mind/mind-archer.cpp b/src/mind/mind-archer.cpp index a35fa75e3..349bbd65f 100644 --- a/src/mind/mind-archer.cpp +++ b/src/mind/mind-archer.cpp @@ -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; } diff --git a/src/monster-floor/monster-lite.cpp b/src/monster-floor/monster-lite.cpp index 0503eb798..db6e33a94 100644 --- a/src/monster-floor/monster-lite.cpp +++ b/src/monster-floor/monster-lite.cpp @@ -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); diff --git a/src/mspell/mspell-lite.cpp b/src/mspell/mspell-lite.cpp index 311e5fa0a..7ea0764a3 100644 --- a/src/mspell/mspell-lite.cpp +++ b/src/mspell/mspell-lite.cpp @@ -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)) { diff --git a/src/pet/pet-fall-off.cpp b/src/pet/pet-fall-off.cpp index 6f4af2a67..b660d0b9c 100644 --- a/src/pet/pet-fall-off.cpp +++ b/src/pet/pet-fall-off.cpp @@ -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 */ diff --git a/src/player/player-view.cpp b/src/player/player-view.cpp index 16261e0be..4c17918ff 100644 --- a/src/player/player-view.cpp +++ b/src/player/player-view.cpp @@ -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; } diff --git a/src/room/vault-builder.cpp b/src/room/vault-builder.cpp index bf98100cf..8c8a4d827 100644 --- a/src/room/vault-builder.cpp +++ b/src/room/vault-builder.cpp @@ -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; diff --git a/src/spell-kind/spells-detection.cpp b/src/spell-kind/spells-detection.cpp index 9837d290d..94232992b 100644 --- a/src/spell-kind/spells-detection.cpp +++ b/src/spell-kind/spells-detection.cpp @@ -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); diff --git a/src/spell-kind/spells-floor.cpp b/src/spell-kind/spells-floor.cpp index 7edb08bee..9cc5de841 100644 --- a/src/spell-kind/spells-floor.cpp +++ b/src/spell-kind/spells-floor.cpp @@ -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 */ diff --git a/src/spell-realm/spells-chaos.cpp b/src/spell-realm/spells-chaos.cpp index fae7432da..19b5b7055 100644 --- a/src/spell-realm/spells-chaos.cpp +++ b/src/spell-realm/spells-chaos.cpp @@ -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; diff --git a/src/store/cmd-store.cpp b/src/store/cmd-store.cpp index d00dd871b..ea77702a0 100644 --- a/src/store/cmd-store.cpp +++ b/src/store/cmd-store.cpp @@ -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; } diff --git a/src/system/grid-type-definition.cpp b/src/system/grid-type-definition.cpp index 8e9edfbfc..fb672aeb6 100644 --- a/src/system/grid-type-definition.cpp +++ b/src/system/grid-type-definition.cpp @@ -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); +} diff --git a/src/system/grid-type-definition.h b/src/system/grid-type-definition.h index 7baf00184..366b805e6 100644 --- a/src/system/grid-type-definition.h +++ b/src/system/grid-type-definition.h @@ -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); diff --git a/src/target/grid-selector.cpp b/src/target/grid-selector.cpp index d41baad99..70310638e 100644 --- a/src/target/grid-selector.cpp +++ b/src/target/grid-selector.cpp @@ -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> 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'); } }, }; /*! -- 2.11.0