}
bool map[32][32]{};
- for (POSITION y = 0; y < 32; y++) {
- for (POSITION x = 0; x < 32; x++) {
+ for (auto y = 0; y < 32; y++) {
+ for (auto x = 0; x < 32; x++) {
map[y][x] = false;
}
}
- int damage = 0;
- bool hurt = false;
- for (POSITION dy = -r; dy <= r; dy++) {
- for (POSITION dx = -r; dx <= r; dx++) {
+ auto damage = 0;
+ auto hurt = false;
+ for (auto dy = -r; dy <= r; dy++) {
+ for (auto dx = -r; dx <= r; dx++) {
const Pos2D pos(cy + dy, cx + dx);
if (!in_bounds(floor_ptr, pos.y, pos.x)) {
continue;
auto sn = 0;
Pos2D p_pos_new(0, 0); // 落石を避けた後のプレイヤー座標
if (hurt && !has_pass_wall(player_ptr) && !has_kill_wall(player_ptr)) {
- for (DIRECTION i = 0; i < 8; i++) {
- POSITION y = player_ptr->y + ddy_ddd[i];
- POSITION x = player_ptr->x + ddx_ddd[i];
+ for (auto i = 0; i < 8; i++) {
+ auto y = player_ptr->y + ddy_ddd[i];
+ auto x = player_ptr->x + ddx_ddd[i];
if (!is_cave_empty_bold(player_ptr, y, x)) {
continue;
}
}
}
- for (POSITION dy = -r; dy <= r; dy++) {
- for (POSITION dx = -r; dx <= r; dx++) {
+ for (auto dy = -r; dy <= r; dy++) {
+ for (auto dx = -r; dx <= r; dx++) {
const Pos2D pos(cy + dy, cx + dx);
if (!map[16 + pos.y - cy][16 + pos.x - cx]) {
continue;
}
clear_mon_lite(floor_ptr);
- for (POSITION dy = -r; dy <= r; dy++) {
- for (POSITION dx = -r; dx <= r; dx++) {
- POSITION yy = cy + dy;
- POSITION xx = cx + dx;
+ for (auto dy = -r; dy <= r; dy++) {
+ for (auto dx = -r; dx <= r; dx++) {
+ auto yy = cy + dy;
+ auto xx = cx + dx;
if (!map[16 + yy - cy][16 + xx - cx]) {
continue;
}
}
}
- for (POSITION dy = -r; dy <= r; dy++) {
- for (POSITION dx = -r; dx <= r; dx++) {
- POSITION yy = cy + dy;
- POSITION xx = cx + dx;
- if (!in_bounds(floor_ptr, yy, xx)) {
+ for (auto dy = -r; dy <= r; dy++) {
+ for (auto dx = -r; dx <= r; dx++) {
+ const Pos2D pos(cy + dy, cx + dx);
+ if (!in_bounds(floor_ptr, pos.y, pos.x)) {
continue;
}
- if (distance(cy, cx, yy, xx) > r) {
+ if (distance(cy, cx, pos.y, pos.x) > r) {
continue;
}
- auto *g_ptr = &floor_ptr->grid_array[yy][xx];
- if (g_ptr->is_mirror()) {
- g_ptr->info |= CAVE_GLOW;
+ auto &grid = floor_ptr->get_grid(pos);
+ if (grid.is_mirror()) {
+ grid.info |= CAVE_GLOW;
continue;
}
continue;
}
- Grid *cc_ptr;
- for (DIRECTION ii = 0; ii < 9; ii++) {
- POSITION yyy = yy + ddy_ddd[ii];
- POSITION xxx = xx + ddx_ddd[ii];
- if (!in_bounds2(floor_ptr, yyy, xxx)) {
+ for (auto j = 0; j < 9; j++) {
+ const Pos2D pos_neighbor(pos.y + ddy_ddd[j], pos.x + ddx_ddd[j]);
+ if (!in_bounds2(floor_ptr, pos_neighbor.y, pos_neighbor.x)) {
continue;
}
- cc_ptr = &floor_ptr->grid_array[yyy][xxx];
- if (terrains_info[cc_ptr->get_feat_mimic()].flags.has(TerrainCharacteristics::GLOW)) {
- g_ptr->info |= CAVE_GLOW;
+
+ const auto &grid_neighbor = floor_ptr->get_grid(pos_neighbor);
+ if (terrains_info[grid_neighbor.get_feat_mimic()].flags.has(TerrainCharacteristics::GLOW)) {
+ grid.info |= CAVE_GLOW;
break;
}
}
xtra_stock = std::min(14 + 26, ((hgt > MAIN_TERM_MIN_ROWS) ? (hgt - MAIN_TERM_MIN_ROWS) : 0));
store_bottom = MIN_STOCK + xtra_stock;
- auto *floor_ptr = player_ptr->current_floor_ptr;
- const auto *g_ptr = &floor_ptr->grid_array[player_ptr->y][player_ptr->x];
- if (!g_ptr->cave_has_flag(TerrainCharacteristics::STORE)) {
+ auto &floor = *player_ptr->current_floor_ptr;
+ const auto &grid = floor.get_grid(player_ptr->get_position());
+ if (!grid.cave_has_flag(TerrainCharacteristics::STORE)) {
msg_print(_("ここには店がありません。", "You see no store here."));
return;
}
// inner_town_num は、施設内で C コマンドなどを使ったときにそのままでは現在地の偽装がバレる
// ため、それを糊塗するためのグローバル変数。
// この辺はリファクタしたい。
- StoreSaleType store_num = i2enum<StoreSaleType>(terrains_info[g_ptr->feat].subtype);
+ const auto store_num = i2enum<StoreSaleType>(terrains_info[grid.feat].subtype);
old_town_num = player_ptr->town_num;
if ((store_num == StoreSaleType::HOME) || (store_num == StoreSaleType::MUSEUM)) {
player_ptr->town_num = 1;
}
- if (floor_ptr->is_in_dungeon()) {
+ if (floor.is_in_dungeon()) {
player_ptr->town_num = VALID_TOWNS;
}
store.last_visit = w_ptr->game_turn;
}
- forget_lite(floor_ptr);
- forget_view(floor_ptr);
+ forget_lite(&floor);
+ forget_view(&floor);
w_ptr->character_icky_depth = 1;
command_arg = 0;
command_rep = 0;
command_new = 0;
get_com_no_macros = true;
- cur_store_feat = g_ptr->feat;
+ cur_store_feat = grid.feat;
st_ptr = &towns_info[player_ptr->town_num].stores[store_num];
ot_ptr = &owners.at(store_num)[st_ptr->owner];
store_top = 0;