OSDN Git Service

[Refactor] #2680 Separated decide_cavern() from gen_caverns_and_lakes()
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 29 Oct 2022 12:25:41 +0000 (21:25 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Wed, 2 Nov 2022 15:26:13 +0000 (00:26 +0900)
src/grid/feature-generator.cpp

index db0b066..c516852 100644 (file)
 #include "system/player-type-definition.h"
 #include "wizard/wizard-messages.h"
 
+static bool decide_cavern(const FloorType &floor_ref, const dungeon_type &dungeon_ref, const dun_data_type &dd_ref)
+{
+    constexpr auto can_become_cavern = 20;
+    auto should_build_cavern = floor_ref.dun_level > can_become_cavern;
+    should_build_cavern &= !dd_ref.empty_level;
+    should_build_cavern &= dungeon_ref.flags.has(DungeonFeatureType::CAVERN);
+    should_build_cavern &= dd_ref.laketype == 0;
+    should_build_cavern &= !dd_ref.destroyed;
+    should_build_cavern &= randint1(1000) < floor_ref.dun_level;
+    return should_build_cavern;
+}
+
 /*!
  * @brief フロアに破壊地形、洞窟、湖、溶岩、森林等を配置する.
  */
@@ -98,13 +110,7 @@ void gen_caverns_and_lakes(PlayerType *player_ptr, dungeon_type *dungeon_ptr, du
         }
     }
 
-    constexpr auto can_become_cavern = 20;
-    auto should_build_cavern = floor_ptr->dun_level > can_become_cavern;
-    should_build_cavern &= !dd_ptr->empty_level;
-    should_build_cavern &= dungeon_ptr->flags.has(DungeonFeatureType::CAVERN);
-    should_build_cavern &= dd_ptr->laketype == 0;
-    should_build_cavern &= !dd_ptr->destroyed;
-    should_build_cavern &= randint1(1000) < floor_ptr->dun_level;
+    const auto should_build_cavern = decide_cavern(*floor_ptr, *dungeon_ptr, *dd_ptr);
     if (should_build_cavern) {
         dd_ptr->cavern = true;
         msg_print_wizard(player_ptr, CHEAT_DUNGEON, _("洞窟を生成。", "Cavern on level."));