OSDN Git Service

ace583e3a61287e15ac440c79fb1efa578d14ab8
[hengband/hengband.git] / src / feature.c
1 #include "angband.h"
2 #include "feature.h"
3
4 /*** Terrain feature variables ***/
5
6 /*
7  * The terrain feature arrays
8  */
9 feature_type *f_info;
10 char *f_name;
11 char *f_tag;
12
13 /* Nothing */
14 FEAT_IDX feat_none;
15
16 /* Floor */
17 FEAT_IDX feat_floor;
18
19 /* Objects */
20 FEAT_IDX feat_glyph;
21 FEAT_IDX feat_explosive_rune;
22 FEAT_IDX feat_mirror;
23
24 /* Stairs */
25 FEAT_IDX feat_up_stair;
26 FEAT_IDX feat_down_stair;
27 FEAT_IDX feat_entrance;
28
29 /* Special traps */
30 FEAT_IDX feat_trap_open;
31 FEAT_IDX feat_trap_armageddon;
32 FEAT_IDX feat_trap_piranha;
33
34 /* Rubble */
35 FEAT_IDX feat_rubble;
36
37 /* Seams */
38 FEAT_IDX feat_magma_vein;
39 FEAT_IDX feat_quartz_vein;
40
41 /* Walls */
42 FEAT_IDX feat_granite;
43 FEAT_IDX feat_permanent;
44
45 /* Glass floor */
46 FEAT_IDX feat_glass_floor;
47
48 /* Glass walls */
49 FEAT_IDX feat_glass_wall;
50 FEAT_IDX feat_permanent_glass_wall;
51
52 /* Pattern */
53 FEAT_IDX feat_pattern_start;
54 FEAT_IDX feat_pattern_1;
55 FEAT_IDX feat_pattern_2;
56 FEAT_IDX feat_pattern_3;
57 FEAT_IDX feat_pattern_4;
58 FEAT_IDX feat_pattern_end;
59 FEAT_IDX feat_pattern_old;
60 FEAT_IDX feat_pattern_exit;
61 FEAT_IDX feat_pattern_corrupted;
62
63 /* Various */
64 FEAT_IDX feat_black_market;
65 FEAT_IDX feat_town;
66
67 /* Terrains */
68 FEAT_IDX feat_deep_water;
69 FEAT_IDX feat_shallow_water;
70 FEAT_IDX feat_deep_lava;
71 FEAT_IDX feat_shallow_lava;
72 FEAT_IDX feat_heavy_cold_zone;
73 FEAT_IDX feat_cold_zone;
74 FEAT_IDX feat_heavy_electrical_zone;
75 FEAT_IDX feat_electrical_zone;
76 FEAT_IDX feat_deep_acid_puddle;
77 FEAT_IDX feat_shallow_acid_puddle;
78 FEAT_IDX feat_deep_poisonous_puddle;
79 FEAT_IDX feat_shallow_poisonous_puddle;
80 FEAT_IDX feat_dirt;
81 FEAT_IDX feat_grass;
82 FEAT_IDX feat_flower;
83 FEAT_IDX feat_brake;
84 FEAT_IDX feat_tree;
85 FEAT_IDX feat_mountain;
86 FEAT_IDX feat_swamp;
87
88 /* Unknown grid (not detected) */
89 FEAT_IDX feat_undetected;
90
91 FEAT_IDX feat_wall_outer;
92 FEAT_IDX feat_wall_inner;
93 FEAT_IDX feat_wall_solid;
94 FEAT_IDX feat_ground_type[100], feat_wall_type[100];
95
96 /*
97  * Maximum number of terrain features in f_info.txt
98  */
99 FEAT_IDX max_f_idx;
100
101 /*!
102  * @brief 地形が罠持ちであるかの判定を行う。 / Return TRUE if the given feature is a trap
103  * @param feat 地形情報のID
104  * @return 罠持ちの地形ならばTRUEを返す。
105  */
106 bool is_trap(FEAT_IDX feat)
107 {
108         return have_flag(f_info[feat].flags, FF_TRAP);
109 }
110
111 /*!
112  * @brief 地形が閉じたドアであるかの判定を行う。 / Return TRUE if the given grid is a closed door
113  * @param feat 地形情報のID
114  * @return 閉じたドアのある地形ならばTRUEを返す。
115  */
116 bool is_closed_door(FEAT_IDX feat)
117 {
118         feature_type *f_ptr = &f_info[feat];
119
120         return (have_flag(f_ptr->flags, FF_OPEN) || have_flag(f_ptr->flags, FF_BASH)) &&
121                 !have_flag(f_ptr->flags, FF_MOVE);
122 }
123