X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;ds=sidebyside;f=src%2Frooms.h;h=444a1607917ca0c11ab76e9529521beb9cd7c49e;hb=b3317ce27a28a6d78ffccf52460ab56d95c83e09;hp=76bef097a0f97ba0a405e7632a683a2dc3e17991;hpb=6b88c7ca04debe7463a155804fe10630ef0c04d5;p=hengband%2Fhengband.git diff --git a/src/rooms.h b/src/rooms.h index 76bef097a..444a16079 100644 --- a/src/rooms.h +++ b/src/rooms.h @@ -39,8 +39,9 @@ #define ROOM_T_TRAP 13 /*!<部屋型ID:トラップ部屋 / Piranha/Armageddon trap room */ #define ROOM_T_GLASS 14 /*!<部屋型ID:ガラス部屋 / Glass room */ #define ROOM_T_ARCADE 15 /*!<部屋型ID:商店 / Arcade */ +#define ROOM_T_FIXED 16 /*!<部屋型ID:固定部屋 / Fixed room */ -#define ROOM_T_MAX 16 /*!<部屋型ID最大数 */ +#define ROOM_T_MAX 17 /*!<部屋型ID最大数 */ /* @@ -57,43 +58,43 @@ struct room_info_type byte min_level; }; - -/*! -* vaultに配置可能なモンスターの条件を指定するマクロ / Monster validation macro -* -* Line 1 -- forbid town monsters -* Line 2 -- forbid uniques -* Line 3 -- forbid aquatic monsters -*/ -#define vault_monster_okay(I) \ - (mon_hook_dungeon(I) && \ - !(r_info[I].flags1 & RF1_UNIQUE) && \ - !(r_info[I].flags7 & RF7_UNIQUE2) && \ - !(r_info[I].flagsr & RFR_RES_ALL) && \ - !(r_info[I].flags7 & RF7_AQUATIC)) - - /* Externs */ #ifdef ALLOW_CAVERNS_AND_LAKES extern void build_lake(int type); extern void build_cavern(void); #endif /* ALLOW_CAVERNS_AND_LAKES */ +/* Maximum locked/jammed doors */ +#define MAX_LJ_DOORS 8 + +/* + * A structure type for doors + */ +typedef struct +{ + FEAT_IDX open; + FEAT_IDX broken; + FEAT_IDX closed; + FEAT_IDX locked[MAX_LJ_DOORS]; + FEAT_IDX num_locked; + FEAT_IDX jammed[MAX_LJ_DOORS]; + FEAT_IDX num_jammed; +} door_type; + +door_type feat_door[MAX_DOOR_TYPES]; + extern bool generate_rooms(void); -extern void build_maze_vault(int x0, int y0, int xsize, int ysize, bool is_vault); -extern void place_secret_door(int y, int x, int type); -extern void place_locked_door(int y, int x); +extern void build_maze_vault(POSITION x0, POSITION y0, POSITION xsize, POSITION ysize, bool is_vault); extern bool find_space(POSITION *y, POSITION *x, POSITION height, POSITION width); -extern void build_small_room(int x0, int y0); -extern void add_outer_wall(int x, int y, int light, int x1, int y1, int x2, int y2); -extern int dist2(int x1, int y1, int x2, int y2, int h1, int h2, int h3, int h4); -extern void generate_room_floor(int y1, int x1, int y2, int x2, int light); -extern void generate_fill_perm_bold(int y1, int x1, int y2, int x2); -extern void generate_hmap(int y0, int x0, int xsiz, int ysiz, int grd, int roug, int cutoff); -extern bool generate_fracave(int y0, int x0, int xsize, int ysize, int cutoff, bool light, bool room); -extern void fill_treasure(int x1, int x2, int y1, int y2, int difficulty); -extern bool generate_lake(int y0, int x0, int xsize, int ysize, int c1, int c2, int c3, int type); -extern void build_recursive_room(int x1, int y1, int x2, int y2, int power); -extern void build_room(int x1, int x2, int y1, int y2); -extern void add_door(int x, int y); -extern void r_visit(int y1, int x1, int y2, int x2, int node, int dir, int *visited); +extern void build_small_room(POSITION x0, POSITION y0); +extern void add_outer_wall(POSITION x, POSITION y, int light, POSITION x1, POSITION y1, POSITION x2, POSITION y2); +extern POSITION dist2(POSITION x1, POSITION y1, POSITION x2, POSITION y2, POSITION h1, POSITION h2, POSITION h3, POSITION h4); +extern void generate_room_floor(POSITION y1, POSITION x1, POSITION y2, POSITION x2, int light); +extern void generate_fill_perm_bold(POSITION y1, POSITION x1, POSITION y2, POSITION x2); +extern void generate_hmap(POSITION y0, POSITION x0, POSITION xsiz, POSITION ysiz, int grd, int roug, int cutoff); +extern bool generate_fracave(POSITION y0, POSITION x0, POSITION xsize, POSITION ysize, int cutoff, bool light, bool room); +extern void fill_treasure(POSITION x1, POSITION x2, POSITION y1, POSITION y2, int difficulty); +extern bool generate_lake(POSITION y0, POSITION x0, POSITION xsize, POSITION ysize, int c1, int c2, int c3, int type); +extern void build_recursive_room(POSITION x1, POSITION y1, POSITION x2, POSITION y2, int power); +extern void build_room(POSITION x1, POSITION x2, POSITION y1, POSITION y2); +extern void r_visit(POSITION y1, POSITION x1, POSITION y2, POSITION x2, int node, DIRECTION dir, int *visited);