OSDN Git Service

[Refactor] #38997 generate_rooms() に floor_type * 引数を追加. / Add floor_type * argument...
authordeskull <deskull@users.sourceforge.jp>
Mon, 4 Nov 2019 06:17:32 +0000 (15:17 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Mon, 4 Nov 2019 06:17:32 +0000 (15:17 +0900)
src/floor-generate.c
src/rooms.c
src/rooms.h

index 98899fb..b071050 100644 (file)
@@ -687,7 +687,7 @@ static bool cave_gen(floor_type *floor_ptr)
                /*
                 * Build each type of room in current_world_ptr->game_turn until we cannot build any more.
                 */
-               if (!generate_rooms()) return FALSE;
+               if (!generate_rooms(floor_ptr)) return FALSE;
 
 
                /* Make a hole in the dungeon roof sometimes at level 1 */
index 2afccbe..bb62594 100644 (file)
@@ -2118,7 +2118,7 @@ static bool room_build(floor_type *floor_ptr, EFFECT_ID typ)
  * @brief 部屋生成処理のメインルーチン(Sangbandを経由してOangbandからの実装を引用) / Generate rooms in dungeon.  Build bigger rooms at first. [from SAngband (originally from OAngband)]
  * @return 部屋生成に成功した場合 TRUE を返す。
  */
-bool generate_rooms(void)
+bool generate_rooms(floor_type *floor_ptr)
 {
        int i;
        bool remain;
@@ -2126,8 +2126,8 @@ bool generate_rooms(void)
        int total_prob;
        int prob_list[ROOM_T_MAX];
        int rooms_built = 0;
-       int area_size = 100 * (p_ptr->current_floor_ptr->height*p_ptr->current_floor_ptr->width) / (MAX_HGT*MAX_WID);
-       int level_index = MIN(10, div_round(p_ptr->current_floor_ptr->dun_level, 10));
+       int area_size = 100 * (floor_ptr->height*floor_ptr->width) / (MAX_HGT*MAX_WID);
+       int level_index = MIN(10, div_round(floor_ptr->dun_level, 10));
 
        /* Number of each type of room on this level */
        s16b room_num[ROOM_T_MAX];
@@ -2135,7 +2135,7 @@ bool generate_rooms(void)
        /* Limit number of rooms */
        int dun_rooms = DUN_ROOMS_MAX * area_size / 100;
 
-       /* Assume normal p_ptr->current_floor_ptr->grid_array */
+       /* Assume normal floor_ptr->grid_array */
        room_info_type *room_info_ptr = room_info_normal;
 
        /*
@@ -2144,7 +2144,7 @@ bool generate_rooms(void)
        for (i = 0; i < ROOM_T_MAX; i++)
        {
                /* No rooms allowed above their minimum depth. */
-               if (p_ptr->current_floor_ptr->dun_level < room_info_ptr[i].min_level)
+               if (floor_ptr->dun_level < room_info_ptr[i].min_level)
                {
                        prob_list[i] = 0;
                }
@@ -2192,7 +2192,7 @@ bool generate_rooms(void)
                MOVE_PLIST(ROOM_T_INNER_FEAT, ROOM_T_OVAL);
        }
 
-       /*! @details ダンジョンにCAVEフラグがある場合、NORMALの生成枠がFRACAVEに与えられる。/ CAVE dungeon (Orc p_ptr->current_floor_ptr->grid_array etc.) */
+       /*! @details ダンジョンにCAVEフラグがある場合、NORMALの生成枠がFRACAVEに与えられる。/ CAVE dungeon (Orc floor_ptr->grid_array etc.) */
        else if (d_info[p_ptr->dungeon_idx].flags1 & DF1_CAVE)
        {
                MOVE_PLIST(ROOM_T_FRACAVE, ROOM_T_NORMAL);
@@ -2289,7 +2289,7 @@ bool generate_rooms(void)
                        room_num[room_type]--;
 
                        /* Build the room. */
-                       if (room_build(p_ptr->current_floor_ptr, room_type))
+                       if (room_build(floor_ptr, room_type))
                        {
                                /* Increase the room built count. */
                                rooms_built++;
index 1fa8a3f..dc6d8be 100644 (file)
@@ -88,7 +88,7 @@ typedef struct
 
 door_type feat_door[MAX_DOOR_TYPES];
 
-extern bool generate_rooms(void);
+extern bool generate_rooms(floor_type *floor_ptr);
 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(POSITION x0, POSITION y0);