1 #include "system/grid-type-definition.h"
2 #include "system/angband-system.h"
3 #include "system/monster-race-info.h"
4 #include "system/terrain-type-definition.h"
5 #include "util/bit-flags-calculator.h"
8 * @brief 指定座標がFLOOR属性を持ったマスかどうかを返す
11 * @return FLOOR属性を持っているならばTRUE
13 bool Grid::is_floor() const
15 return any_bits(this->info, CAVE_FLOOR);
18 bool Grid::is_room() const
20 return any_bits(this->info, CAVE_ROOM);
23 bool Grid::is_extra() const
25 return any_bits(this->info, CAVE_EXTRA);
28 bool Grid::is_inner() const
30 return any_bits(this->info, CAVE_INNER);
33 bool Grid::is_outer() const
35 return any_bits(this->info, CAVE_OUTER);
38 bool Grid::is_solid() const
40 return any_bits(this->info, CAVE_SOLID);
43 bool Grid::is_icky() const
45 return any_bits(this->info, CAVE_ICKY);
48 bool Grid::is_lite() const
50 return any_bits(this->info, CAVE_LITE);
53 bool Grid::is_redraw() const
55 return any_bits(this->info, CAVE_REDRAW);
58 bool Grid::is_view() const
60 return any_bits(this->info, CAVE_VIEW);
63 bool Grid::is_object() const
65 return any_bits(this->info, CAVE_OBJECT);
68 bool Grid::is_mark() const
70 return any_bits(this->info, CAVE_MARK);
73 bool Grid::is_mirror() const
75 return this->is_object() && TerrainList::get_instance()[this->mimic].flags.has(TerrainCharacteristics::MIRROR);
79 * @brief 守りのルーンで守られているかを返す
81 bool Grid::is_rune_protection() const
83 return this->is_object() && TerrainList::get_instance()[this->mimic].flags.has(TerrainCharacteristics::RUNE_PROTECTION);
87 * @brief 爆発のルーンが仕掛けられているかを返す
89 bool Grid::is_rune_explosion() const
91 return this->is_object() && TerrainList::get_instance()[this->mimic].flags.has(TerrainCharacteristics::RUNE_EXPLOSION);
94 byte Grid::get_cost(const MonsterRaceInfo *r_ptr) const
96 return this->costs[get_grid_flow_type(r_ptr)];
99 byte Grid::get_distance(const MonsterRaceInfo *r_ptr) const
101 return this->dists[get_grid_flow_type(r_ptr)];
104 flow_type Grid::get_grid_flow_type(const MonsterRaceInfo *r_ptr) const
106 return r_ptr->feature_flags.has(MonsterFeatureType::CAN_FLY) ? FLOW_CAN_FLY : FLOW_NORMAL;
110 * @brief グリッドのミミック特性地形を返す
111 * @param g_ptr グリッドへの参照ポインタ
114 FEAT_IDX Grid::get_feat_mimic() const
116 return TerrainList::get_instance()[this->mimic ? this->mimic : this->feat].mimic;
119 bool Grid::cave_has_flag(TerrainCharacteristics feature_flags) const
121 return this->get_terrain().flags.has(feature_flags);
125 * @brief グリッドのシンボルが指定した記号かどうかを調べる
126 * @param ch 指定するシンボル文字
127 * @return シンボルが指定した記号か否か
129 bool Grid::is_symbol(const int ch) const
131 return this->get_terrain().x_char[0] == ch;
134 void Grid::reset_costs()
136 for (auto &cost : this->costs) {
141 void Grid::reset_dists()
143 for (auto &dist : this->dists) {
148 bool Grid::has_los() const
150 return any_bits(this->info, CAVE_VIEW) || AngbandSystem::get_instance().is_phase_out();
153 TerrainType &Grid::get_terrain()
155 return TerrainList::get_instance()[this->feat];
158 const TerrainType &Grid::get_terrain() const
160 return TerrainList::get_instance()[this->feat];
163 TerrainType &Grid::get_terrain_mimic()
165 return TerrainList::get_instance()[this->get_feat_mimic()];
168 const TerrainType &Grid::get_terrain_mimic() const
170 return TerrainList::get_instance()[this->get_feat_mimic()];
173 TerrainType &Grid::get_terrain_mimic_raw()
175 return TerrainList::get_instance()[this->mimic];
178 const TerrainType &Grid::get_terrain_mimic_raw() const
180 return TerrainList::get_instance()[this->mimic];