OSDN Git Service

Merge remote-tracking branch 'remotes/origin/feature/Fix-saved-floor-exceed' into...
[hengband/hengband.git] / src / grid / feature.h
1 #pragma once
2
3 #include "grid/feature-flag-types.h"
4 #include "system/angband.h"
5
6 /* Number of feats we change to (Excluding default). Used in f_info.txt. */
7 #define MAX_FEAT_STATES  8
8
9 /* Lighting levels of features' attr and char */
10 #define F_LIT_STANDARD 0 /* Standard */
11 #define F_LIT_LITE     1 /* Brightly lit */
12 #define F_LIT_DARK     2 /* Darkened */
13
14 #define F_LIT_NS_BEGIN 1 /* Nonstandard */
15 #define F_LIT_MAX      3
16
17 /*!
18  * @struct feature_state
19  * @brief 地形状態変化指定構造体 / Feature state structure
20  */
21 typedef struct feature_state {
22         FF_FLAGS_IDX action; /*!< 変化条件をFF_*のIDで指定 / Action (FF_*) */
23         STR_OFFSET result_tag; /*!< 変化先ID / Result (f_info ID) */
24         FEAT_IDX result; /*!< 変化先ID / Result (f_info ID) */
25 } feature_state;
26
27 typedef struct feat_prob {
28         FEAT_IDX feat;    /* Feature tile */
29         PERCENTAGE percent; /* Chance of type */
30 } feat_prob;
31
32 /*!
33  * @struct feature_type
34  * @brief 地形情報の構造体 / Information about terrain "features"
35  */
36 typedef struct feature_type {
37         STR_OFFSET name;                /*!< 地形名参照のためのネームバッファオフセット値 / Name (offset) */
38         STR_OFFSET text;                /*!< 地形説明参照のためのネームバッファオフセット値 /  Text (offset) */
39         STR_OFFSET tag;                 /*!< 地形特性タグ参照のためのネームバッファオフセット値 /  Tag (offset) */
40         STR_OFFSET mimic_tag;
41         STR_OFFSET destroyed_tag;
42         FEAT_IDX mimic;               /*!< 未確定時の外形地形ID / Feature to mimic */
43         FEAT_IDX destroyed;           /*!< *破壊*に巻き込まれた時の地形移行先(未実装?) / Default destroyed state */
44         BIT_FLAGS flags[FF_FLAG_SIZE]; /*!< 地形の基本特性ビット配列 / Flags */
45         FEAT_PRIORITY priority;            /*!< 縮小表示で省略する際の表示優先度 / Map priority */
46         feature_state state[MAX_FEAT_STATES]; /*!< feature_state テーブル */
47         FEAT_SUBTYPE subtype;  /*!< 副特性値 */
48         FEAT_POWER power;    /*!< 地形強度 */
49         TERM_COLOR d_attr[F_LIT_MAX];   /*!< デフォルトの地形シンボルカラー / Default feature attribute */
50         SYMBOL_CODE d_char[F_LIT_MAX];   /*!< デフォルトの地形シンボルアルファベット / Default feature character */
51         TERM_COLOR x_attr[F_LIT_MAX];   /*!< 設定変更後の地形シンボルカラー / Desired feature attribute */
52         SYMBOL_CODE x_char[F_LIT_MAX];   /*!< 設定変更後の地形シンボルアルファベット / Desired feature character */
53 } feature_type;
54
55 extern FEAT_IDX max_f_idx;
56 extern feature_type *f_info;
57 extern char *f_name;
58 extern char *f_tag;
59
60 /*** Terrain feature variables ***/
61 extern FEAT_IDX feat_none;
62 extern FEAT_IDX feat_floor;
63 extern FEAT_IDX feat_glyph;
64 extern FEAT_IDX feat_explosive_rune;
65 extern FEAT_IDX feat_mirror;
66 extern FEAT_IDX feat_up_stair;
67 extern FEAT_IDX feat_down_stair;
68 extern FEAT_IDX feat_entrance;
69 extern FEAT_IDX feat_trap_open;
70 extern FEAT_IDX feat_trap_armageddon;
71 extern FEAT_IDX feat_trap_piranha;
72 extern FEAT_IDX feat_rubble;
73 extern FEAT_IDX feat_magma_vein;
74 extern FEAT_IDX feat_quartz_vein;
75 extern FEAT_IDX feat_granite;
76 extern FEAT_IDX feat_permanent;
77 extern FEAT_IDX feat_glass_floor;
78 extern FEAT_IDX feat_glass_wall;
79 extern FEAT_IDX feat_permanent_glass_wall;
80 extern FEAT_IDX feat_pattern_start;
81 extern FEAT_IDX feat_pattern_1;
82 extern FEAT_IDX feat_pattern_2;
83 extern FEAT_IDX feat_pattern_3;
84 extern FEAT_IDX feat_pattern_4;
85 extern FEAT_IDX feat_pattern_end;
86 extern FEAT_IDX feat_pattern_old;
87 extern FEAT_IDX feat_pattern_exit;
88 extern FEAT_IDX feat_pattern_corrupted;
89 extern FEAT_IDX feat_black_market;
90 extern FEAT_IDX feat_town;
91 extern FEAT_IDX feat_deep_water;
92 extern FEAT_IDX feat_shallow_water;
93 extern FEAT_IDX feat_deep_lava;
94 extern FEAT_IDX feat_shallow_lava;
95 extern FEAT_IDX feat_heavy_cold_zone;
96 extern FEAT_IDX feat_cold_zone;
97 extern FEAT_IDX feat_heavy_electrical_zone;
98 extern FEAT_IDX feat_electrical_zone;
99 extern FEAT_IDX feat_deep_acid_puddle;
100 extern FEAT_IDX feat_shallow_acid_puddle;
101 extern FEAT_IDX feat_deep_poisonous_puddle;
102 extern FEAT_IDX feat_shallow_poisonous_puddle;
103 extern FEAT_IDX feat_dirt;
104 extern FEAT_IDX feat_grass;
105 extern FEAT_IDX feat_flower;
106 extern FEAT_IDX feat_brake;
107 extern FEAT_IDX feat_tree;
108 extern FEAT_IDX feat_mountain;
109 extern FEAT_IDX feat_swamp;
110 extern FEAT_IDX feat_undetected;
111
112 extern FEAT_IDX feat_wall_outer;
113 extern FEAT_IDX feat_wall_inner;
114 extern FEAT_IDX feat_wall_solid;
115 extern FEAT_IDX feat_ground_type[100];
116 extern FEAT_IDX feat_wall_type[100];
117
118 bool is_closed_door(player_type *player_ptr, FEAT_IDX feat);
119 bool is_trap(player_type *player_ptr, FEAT_IDX feat);
120 void apply_default_feat_lighting(TERM_COLOR *f_attr, SYMBOL_CODE *f_char);
121 bool is_ascii_graphics(char x);
122 bool permanent_wall(feature_type *f_ptr);
123 FEAT_IDX feat_locked_door_random(int door_type);
124 FEAT_IDX feat_jammed_door_random(int door_type);
125 void cave_set_feat(player_type *player_ptr, POSITION y, POSITION x, FEAT_IDX feat);
126 FEAT_IDX conv_dungeon_feat(floor_type *floor_ptr, FEAT_IDX newfeat);