OSDN Git Service

[Refactor] 無駄な空白、改行の削除、includeのソート
[hengband/hengband.git] / src / grid / feature.h
index c5559f9..4cddaa1 100644 (file)
 #pragma once
 
-/*
- * Number of feats we change to (Excluding default). Used in f_info.txt.
- */
-#define MAX_FEAT_STATES         8
-
- /*
-  * Feature flags - should be used instead of feature indexes unless generating.
-  * Originally from UnAngband, and modified into TR-like style in Hengband
-  */
-
-#define FF_LOS           0              /*!< 視界が通る地形である */
-#define FF_PROJECT       1              /*!< 飛び道具が通過できる地形である */
-#define FF_MOVE          2              /*!< 移動可能な地形である */
-#define FF_PLACE         3              /*!< モンスター配置をしても良い地形である(cave_empty_bold/cave_empty_gridで利用) */
-#define FF_DROP          4              /*!< アイテムを落としてよい地形である */
-#define FF_SECRET        5              /*!< 隠し扉やトラップが潜んでいる地形である */
-#define FF_NOTICE        6              /*!< 何か興味を引くものがある地形である(シフトキー+方向で走行中の時に止まる基準) */
-#define FF_REMEMBER      7              /*!< 常に記憶対象となる地形である(記憶喪失時に忘れたりしなくなる) */
-#define FF_OPEN          8              /*!< 開けるコマンドの対象となる地形である */
-#define FF_CLOSE         9              /*!< 閉じるコマンドの対象となる地形である */
-#define FF_BASH          10             /*!< 体当たりコマンドの対象となる地形である */
-#define FF_SPIKE         11             /*!< くさびを打つコマンドの対象となる地形である */
-#define FF_DISARM        12             /*!< 解除コマンドの対象となる地形である */
-#define FF_STORE         13             /*!< 店舗の入口となる地形である */
-#define FF_TUNNEL        14             /*!< 魔王変化などで掘り進められる地形である */
-#define FF_MAY_HAVE_GOLD 15             /*!< 何か財宝を隠した可能性のある地形である?(f_infoに使用している地形なし) */
-#define FF_HAS_GOLD      16             /*!< 財宝を含んだ地形である */
-#define FF_HAS_ITEM      17             /*!< アイテムを含んだ地形である */
-#define FF_DOOR          18             /*!< ドアのある地形である */
-#define FF_TRAP          19             /*!< トラップのある地形である */
-#define FF_STAIRS        20             /*!< 階段のある地形である */
-#define FF_GLYPH         21             /*!< 守りのルーンが張られた地形である */
-#define FF_LESS          22             /*!< 階上に通じる地形である */
-#define FF_MORE          23             /*!< 階下に通じる地形である */
-#define FF_AVOID_RUN     24             /*!< 自動移動機能時に障害として迂回すべき地形である */
-#define FF_FLOOR         25             /*!< 床のある地形である */
-#define FF_WALL          26             /*!< 壁のある地形である */
-#define FF_PERMANENT     27             /*!< 絶対に破壊できない永久地形である */
-  /* #define FF_XXX00         28  未定義 */
-  /* #define FF_XXX01         29  未定義 */
-  /* #define FF_XXX02         30  未定義 */
-#define FF_HIT_TRAP      31             /*!< トラップのある地形である(TRAPと常に重複している?) */
-/* #define FF_BRIDGE        32  未使用 */
-/* #define FF_RIVER         33  未使用 */
-/* #define FF_LAKE          34  未使用 */
-/* #define FF_BRIDGED       35  未使用 */
-/* #define FF_COVERED       36  未使用 */
-#define FF_GLOW          37             /*!< 常に光っている地形である */
-#define FF_ENSECRET      38             /*!< 不明(f_info.txt上で利用している地形がない) */
-#define FF_WATER         39             /*!< 水のある地形である */
-#define FF_LAVA          40             /*!< 溶岩のある地形である */
-#define FF_SHALLOW       41             /*!< 浅い地形である */
-#define FF_DEEP          42             /*!< 深い地形である */
-#define FF_POISON_PUDDLE 43             /*!< 毒溜まりがある */
-#define FF_HURT_ROCK     44             /*!< 岩石溶解の対象となる地形である */
-/* #define FF_HURT_FIRE     45 */       /*!< 未使用 */
-/* #define FF_HURT_COLD     46 */       /*!< 未使用 */
-/* #define FF_HURT_ACID     47 */       /*!< 未使用 */
-#define FF_COLD_PUDDLE   48             /*!< 冷気溜まりがある */
-#define FF_ACID_PUDDLE   49             /*!< 酸溜まりがある */
-/* #define FF_OIL           50 */       /*!< 未使用 */
-#define FF_ELEC_PUDDLE   51             /*!< 接地部が帯電している */
-/* #define FF_CAN_CLIMB     52 */       /*!< 未使用 */
-#define FF_CAN_FLY       53             /*!< 飛行可能な地形である */
-#define FF_CAN_SWIM      54             /*!< 泳ぐことが可能な地形である */
-#define FF_CAN_PASS      55             /*!< 通過可能な地形である */
-/* #define FF_CAN_OOZE      56 */       /*!< 未使用 */
-#define FF_CAN_DIG       57             /*!< 掘削コマンドの対象となる地形である */
-/* #define FF_HIDE_ITEM     58  未使用 */
-/* #define FF_HIDE_SNEAK    59  未使用 */
-/* #define FF_HIDE_SWIM     60  未使用 */
-/* #define FF_HIDE_DIG      61  未使用 */
-/* #define FF_KILL_HUGE     62  未使用 */
-/* #define FF_KILL_MOVE     63  未使用 */
-/* #define FF_PICK_TRAP     64  未使用 */
-/* #define FF_PICK_DOOR     65  未使用 */
-/* #define FF_ALLOC         66  未使用 */
-/* #define FF_CHEST         67  未使用 */
-/* #define FF_DROP_1D2      68  未使用 */
-/* #define FF_DROP_2D2      69  未使用 */
-/* #define FF_DROP_GOOD     70  未使用 */
-/* #define FF_DROP_GREAT    71  未使用 */
-/* #define FF_HURT_POIS     72  未使用 */
-/* #define FF_HURT_ELEC     73  未使用 */
-/* #define FF_HURT_WATER    74  未使用 */
-/* #define FF_HURT_BWATER   75  未使用 */
-/* #define FF_USE_FEAT      76  未使用 */
-/* #define FF_GET_FEAT      77  未使用 */
-/* #define FF_GROUND        78  未使用 */
-/* #define FF_OUTSIDE       79  未使用 */
-/* #define FF_EASY_HIDE     80  未使用 */
-/* #define FF_EASY_CLIMB    81  未使用 */
-/* #define FF_MUST_CLIMB    82  未使用 */
-#define FF_TREE          83             /*!< 木の生えた地形である */
-/* #define FF_NEED_TREE     84  未使用 */
-/* #define FF_BLOOD         85  未使用 */
-/* #define FF_DUST          86  未使用 */
-/* #define FF_SLIME         87  未使用 */
-#define FF_PLANT         88             /*!< 植物の生えた地形である */
-/* #define FF_XXX2          89  未定義 */
-/* #define FF_INSTANT       90  未使用 */
-/* #define FF_EXPLODE       91  未使用 */
-/* #define FF_TIMED         92  未使用 */
-/* #define FF_ERUPT         93  未使用 */
-/* #define FF_STRIKE        94  未使用 */
-/* #define FF_SPREAD        95  未使用 */
-#define FF_SPECIAL       96             /*!< クエストやダンジョンに関わる特別な地形である */
-#define FF_HURT_DISI     97             /*!< 分解属性の対象となる地形である */
-#define FF_QUEST_ENTER   98             /*!< クエストの入り口である */
-#define FF_QUEST_EXIT    99             /*!< クエストの出口である */
-#define FF_QUEST         100            /*!< クエストに関する地形である */
-#define FF_SHAFT         101            /*!< 坑道である。(2階層移動する階段である) */
-#define FF_MOUNTAIN      102            /*!< ダンジョンの山地形である */
-#define FF_BLDG          103            /*!< 施設の入り口である */
-#define FF_MINOR_GLYPH   104            /*!< 爆発のルーンのある地形である */
-#define FF_PATTERN       105            /*!< パターンのある地形である */
-#define FF_TOWN          106            /*!< 広域マップ用の街がある地形である */
-#define FF_ENTRANCE      107            /*!< 広域マップ用のダンジョンがある地形である */
-#define FF_MIRROR        108            /*!< 鏡使いの鏡が張られた地形である */
-#define FF_UNPERM        109            /*!< 破壊不能な地形である(K:フラグ向け?) */
-#define FF_TELEPORTABLE  110            /*!< テレポート先の対象となる地形である */
-#define FF_CONVERT       111            /*!< 地形生成処理中の疑似フラグ */
-#define FF_GLASS         112            /*!< ガラス製の地形である */
-
-#define FF_FLAG_MAX      113
-#define FF_FLAG_SIZE     (1 + ((FF_FLAG_MAX - 1) / 32))
+#include "grid/feature-flag-types.h"
+#include "system/angband.h"
 
+/* Number of feats we change to (Excluding default). Used in f_info.txt. */
+#define MAX_FEAT_STATES         8
 
 /* Lighting levels of features' attr and char */
-
 #define F_LIT_STANDARD 0 /* Standard */
 #define F_LIT_LITE     1 /* Brightly lit */
 #define F_LIT_DARK     2 /* Darkened */
 #define F_LIT_NS_BEGIN 1 /* Nonstandard */
 #define F_LIT_MAX      3
 
-
 /*!
  * @struct feature_state
  * @brief 地形状態変化指定構造体 / Feature state structure
  */
-typedef struct feature_state feature_state;
-
-struct feature_state
-{
+typedef struct feature_state {
        FF_FLAGS_IDX action; /*!< 変化条件をFF_*のIDで指定 / Action (FF_*) */
        STR_OFFSET result_tag; /*!< 変化先ID / Result (f_info ID) */
        FEAT_IDX result; /*!< 変化先ID / Result (f_info ID) */
-};
+} feature_state;
 
-typedef struct
-{
+typedef struct feat_prob {
        FEAT_IDX feat;    /* Feature tile */
        PERCENTAGE percent; /* Chance of type */
-}
-feat_prob;
+} feat_prob;
 
 /*!
  * @struct feature_type
  * @brief 地形情報の構造体 / Information about terrain "features"
  */
-
-typedef struct feature_type feature_type;
-
-struct feature_type
-{
+typedef struct feature_type {
        STR_OFFSET name;                /*!< 地形名参照のためのネームバッファオフセット値 / Name (offset) */
        STR_OFFSET text;                /*!< 地形説明参照のためのネームバッファオフセット値 /  Text (offset) */
        STR_OFFSET tag;                 /*!< 地形特性タグ参照のためのネームバッファオフセット値 /  Tag (offset) */
-
        STR_OFFSET mimic_tag;
        STR_OFFSET destroyed_tag;
-
        FEAT_IDX mimic;               /*!< 未確定時の外形地形ID / Feature to mimic */
        FEAT_IDX destroyed;           /*!< *破壊*に巻き込まれた時の地形移行先(未実装?) / Default destroyed state */
-
        BIT_FLAGS flags[FF_FLAG_SIZE]; /*!< 地形の基本特性ビット配列 / Flags */
-
        FEAT_PRIORITY priority;            /*!< 縮小表示で省略する際の表示優先度 / Map priority */
-
        feature_state state[MAX_FEAT_STATES]; /*!< feature_state テーブル */
-
        FEAT_SUBTYPE subtype;  /*!< 副特性値 */
        FEAT_POWER power;    /*!< 地形強度 */
-
        TERM_COLOR d_attr[F_LIT_MAX];   /*!< デフォルトの地形シンボルカラー / Default feature attribute */
        SYMBOL_CODE d_char[F_LIT_MAX];   /*!< デフォルトの地形シンボルアルファベット / Default feature character */
-
        TERM_COLOR x_attr[F_LIT_MAX];   /*!< 設定変更後の地形シンボルカラー / Desired feature attribute */
        SYMBOL_CODE x_char[F_LIT_MAX];   /*!< 設定変更後の地形シンボルアルファベット / Desired feature character */
-};
+} feature_type;
 
 extern FEAT_IDX max_f_idx;
 extern feature_type *f_info;
 extern char *f_name;
 extern char *f_tag;
 
-extern bool is_closed_door(player_type *player_ptr, FEAT_IDX feat);
-extern bool is_trap(player_type *player_ptr, FEAT_IDX feat);
-
 /*** Terrain feature variables ***/
 extern FEAT_IDX feat_none;
 extern FEAT_IDX feat_floor;
@@ -256,4 +112,15 @@ extern FEAT_IDX feat_undetected;
 extern FEAT_IDX feat_wall_outer;
 extern FEAT_IDX feat_wall_inner;
 extern FEAT_IDX feat_wall_solid;
-extern FEAT_IDX feat_ground_type[100], feat_wall_type[100];
+extern FEAT_IDX feat_ground_type[100];
+extern FEAT_IDX feat_wall_type[100];
+
+bool is_closed_door(player_type *player_ptr, FEAT_IDX feat);
+bool is_trap(player_type *player_ptr, FEAT_IDX feat);
+void apply_default_feat_lighting(TERM_COLOR *f_attr, SYMBOL_CODE *f_char);
+bool is_ascii_graphics(char x);
+bool permanent_wall(feature_type *f_ptr);
+FEAT_IDX feat_locked_door_random(int door_type);
+FEAT_IDX feat_jammed_door_random(int door_type);
+void cave_set_feat(player_type *player_ptr, POSITION y, POSITION x, FEAT_IDX feat);
+FEAT_IDX conv_dungeon_feat(floor_type *floor_ptr, FEAT_IDX newfeat);