OSDN Git Service

[Refactor] #37353 room~room-vault間整理。 / Refactor between room and room-vault.
[hengband/hengband.git] / src / rooms.h
1 /*!
2  * @file rooms.h
3  * @brief 部屋生成処理の定義ヘッダー / Header file for rooms.c, used only in generate.c
4  * @date 2014/09/07
5  * @author
6  * Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke<br>
7  * This software may be copied and distributed for educational, research,
8  * and not for profit purposes provided that this copyright and statement
9  * are included in all such copies.  Other copyrights may also apply.<br
10  */
11
12 #define DUN_ROOMS_MAX   40 /*!< 部屋生成処理の最大試行数 / Number of rooms to attempt (was 50) */
13
14
15 /* 池型地形の生成ID / Room types for generate_lake() */
16 #define LAKE_T_LAVA        1 /*!< 池型地形ID: 溶岩 */
17 #define LAKE_T_WATER       2 /*!< 池型地形ID: 池 */
18 #define LAKE_T_CAVE        3 /*!< 池型地形ID: 空洞 */
19 #define LAKE_T_EARTH_VAULT 4 /*!< 池型地形ID: 地属性VAULT */
20 #define LAKE_T_AIR_VAULT   5 /*!< 池型地形ID: 風属性VAULT */
21 #define LAKE_T_WATER_VAULT 6 /*!< 池型地形ID: 水属性VAULT */
22 #define LAKE_T_FIRE_VAULT  7 /*!< 池型地形ID: 火属性VAULT */
23
24
25 /* 部屋型ID / Room types for room_build() */
26 #define ROOM_T_NORMAL         0  /*!<部屋型ID:基本長方形 / Simple (33x11) */
27 #define ROOM_T_OVERLAP        1  /*!<部屋型ID:長方形二つ重ね / Overlapping (33x11) */
28 #define ROOM_T_CROSS          2  /*!<部屋型ID:十字 / Crossed (33x11) */
29 #define ROOM_T_INNER_FEAT     3  /*!<部屋型ID:二重壁 / Large (33x11) */
30 #define ROOM_T_NEST           4  /*!<部屋型ID:モンスターNEST / Monster nest (33x11) */
31 #define ROOM_T_PIT            5  /*!<部屋型ID:モンスターPIT / Monster pit (33x11) */
32 #define ROOM_T_LESSER_VAULT   6  /*!<部屋型ID:小型VAULT / Lesser vault (33x22) */
33 #define ROOM_T_GREATER_VAULT  7  /*!<部屋型ID:大型VAULT / Greater vault (66x44) */
34 #define ROOM_T_FRACAVE        8  /*!<部屋型ID:フラクタル地形 / Fractal cave (42x24) */
35 #define ROOM_T_RANDOM_VAULT   9  /*!<部屋型ID:ランダムVAULT / Random vault (44x22) */
36 #define ROOM_T_OVAL          10  /*!<部屋型ID:円形部屋 / Circular rooms (22x22) */
37 #define ROOM_T_CRYPT         11  /*!<部屋型ID:聖堂 / Crypts (22x22) */
38 #define ROOM_T_TRAP_PIT      12  /*!<部屋型ID:トラップつきモンスターPIT / Trapped monster pit */
39 #define ROOM_T_TRAP          13  /*!<部屋型ID:トラップ部屋 / Piranha/Armageddon trap room */
40 #define ROOM_T_GLASS         14  /*!<部屋型ID:ガラス部屋 / Glass room */
41 #define ROOM_T_ARCADE        15  /*!<部屋型ID:商店 / Arcade */
42
43 #define ROOM_T_MAX 16 /*!<部屋型ID最大数 */
44
45
46 /*
47  * Room type information
48  */
49 typedef struct room_info_type room_info_type;
50
51 struct room_info_type
52 {
53         /* Allocation information. */
54         s16b prob[ROOM_T_MAX];
55
56         /* Minimum level on which room can appear. */
57         byte min_level;
58 };
59
60
61 /*!
62 * vaultに配置可能なモンスターの条件を指定するマクロ / Monster validation macro
63 *
64 * Line 1 -- forbid town monsters
65 * Line 2 -- forbid uniques
66 * Line 3 -- forbid aquatic monsters
67 */
68 #define vault_monster_okay(I) \
69         (mon_hook_dungeon(I) && \
70          !(r_info[I].flags1 & RF1_UNIQUE) && \
71          !(r_info[I].flags7 & RF7_UNIQUE2) && \
72          !(r_info[I].flagsr & RFR_RES_ALL) && \
73          !(r_info[I].flags7 & RF7_AQUATIC))
74
75
76 /* Externs */
77 #ifdef ALLOW_CAVERNS_AND_LAKES
78 extern void build_lake(int type);
79 extern void build_cavern(void);
80 #endif /* ALLOW_CAVERNS_AND_LAKES */
81
82 extern bool generate_rooms(void);
83 extern void build_maze_vault(int x0, int y0, int xsize, int ysize, bool is_vault);
84 extern void place_secret_door(int y, int x, int type);
85 extern void place_locked_door(int y, int x);
86 extern bool find_space(POSITION *y, POSITION *x, POSITION height, POSITION width);
87 extern void build_small_room(int x0, int y0);
88 extern void add_outer_wall(int x, int y, int light, int x1, int y1, int x2, int y2);
89 extern int dist2(int x1, int y1, int x2, int y2, int h1, int h2, int h3, int h4);
90 extern void generate_room_floor(int y1, int x1, int y2, int x2, int light);
91 extern void generate_fill_perm_bold(int y1, int x1, int y2, int x2);
92 extern void generate_hmap(int y0, int x0, int xsiz, int ysiz, int grd, int roug, int cutoff);
93 extern bool generate_fracave(int y0, int x0, int xsize, int ysize, int cutoff, bool light, bool room);
94 extern void fill_treasure(int x1, int x2, int y1, int y2, int difficulty);
95 extern bool generate_lake(int y0, int x0, int xsize, int ysize, int c1, int c2, int c3, int type);
96 extern void build_recursive_room(int x1, int y1, int x2, int y2, int power);
97 extern void build_room(int x1, int x2, int y1, int y2);
98 extern void add_door(int x, int y);
99 extern void r_visit(int y1, int x1, int y2, int x2, int node, int dir, int *visited);