3 #include "grid/feature-flag-types.h"
4 #include "system/angband.h"
5 #include "util/flag-group.h"
7 /* Number of feats we change to (Excluding default). Used in TerrainDefinitions.txt. */
8 constexpr auto MAX_FEAT_STATES = 8;
10 constexpr auto F_LIT_MAX = 3;
17 TerrainState() = default;
18 TerrainCharacteristics action{}; /*!< 変化条件をFF_*のIDで指定 */
19 std::string result_tag{}; /*!< 変化先ID */
20 FEAT_IDX result{}; /*!< 変化先ID */
28 TerrainType() = default;
30 std::string name; /*!< 地形名 */
31 std::string text; /*!< 地形説明 */
32 std::string tag; /*!< 地形特性タグ */
33 std::string mimic_tag;
34 std::string destroyed_tag;
35 FEAT_IDX mimic{}; /*!< 未確定時の外形地形ID / Feature to mimic */
36 FEAT_IDX destroyed{}; /*!< *破壊*に巻き込まれた時の地形移行先(未実装?) / Default destroyed state */
37 EnumClassFlagGroup<TerrainCharacteristics> flags{}; /*!< 地形の基本特性ビット配列 / Flags */
38 int16_t priority{}; /*!< 縮小表示で省略する際の表示優先度 / Map priority */
39 TerrainState state[MAX_FEAT_STATES]{}; /*!< TerrainState テーブル */
40 FEAT_SUBTYPE subtype{}; /*!< 副特性値 */
41 FEAT_POWER power{}; /*!< 地形強度 */
42 TERM_COLOR d_attr[F_LIT_MAX]{}; /*!< デフォルトの地形シンボルカラー / Default feature attribute */
43 char d_char[F_LIT_MAX]{}; /*!< デフォルトの地形シンボルアルファベット / Default feature character */
44 TERM_COLOR x_attr[F_LIT_MAX]{}; /*!< 設定変更後の地形シンボルカラー / Desired feature attribute */
45 char x_char[F_LIT_MAX]{}; /*!< 設定変更後の地形シンボルアルファベット / Desired feature character */
47 bool is_permanent_wall() const;
52 TerrainList(const TerrainList &) = delete;
53 TerrainList(TerrainList &&) = delete;
54 TerrainList operator=(const TerrainList &) = delete;
55 TerrainList operator=(TerrainList &&) = delete;
56 TerrainType &operator[](short terrain_id);
57 const TerrainType &operator[](short terrain_id) const;
59 static TerrainList &get_instance();
60 std::vector<TerrainType> &get_raw_vector();
61 std::vector<TerrainType>::iterator begin();
62 const std::vector<TerrainType>::const_iterator begin() const;
63 std::vector<TerrainType>::iterator end();
64 const std::vector<TerrainType>::const_iterator end() const;
67 void resize(size_t new_size);
70 TerrainList() = default;
72 static TerrainList instance;
73 std::vector<TerrainType> terrains{};