From 20b10b5691064bb7cce82c4f13e0cd65813e4db1 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Wed, 25 Jan 2023 18:32:32 +0100 Subject: [PATCH] Refactor EmergeParams owner --- src/mapgen/mapgen.cpp | 9 ++++++--- src/mapgen/mapgen.h | 6 ++++-- src/mapgen/mapgen_singlenode.cpp | 2 -- src/mapgen/mapgen_v6.cpp | 3 --- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index e26b0c9fa52f..791c56609f7e 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -131,9 +131,15 @@ Mapgen::Mapgen(int mapgenid, MapgenParams *params, EmergeParams *emerge) : */ seed = (s32)params->seed; + m_emerge = emerge; ndef = emerge->ndef; } +Mapgen::~Mapgen() +{ + delete m_emerge; // this is our responsibility +} + MapgenType Mapgen::getMapgenType(const std::string &mgname) { @@ -566,7 +572,6 @@ void Mapgen::spreadLight(const v3s16 &nmin, const v3s16 &nmax) MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerge) : Mapgen(mapgenid, params, emerge) { - this->m_emerge = emerge; this->m_bmgr = emerge->biomemgr; //// Here, 'stride' refers to the number of elements needed to skip to index @@ -620,8 +625,6 @@ MapgenBasic::MapgenBasic(int mapgenid, MapgenParams *params, EmergeParams *emerg MapgenBasic::~MapgenBasic() { delete []heightmap; - - delete m_emerge; // destroying EmergeParams is our responsibility } diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index b61608039758..b1d1a1bf043d 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -163,6 +163,9 @@ class Mapgen { int id = -1; MMVManip *vm = nullptr; + // Note that this contains various things the mapgens *can* use, so biomegen + // might be NULL while m_emerge->biomegen is not. + EmergeParams *m_emerge = nullptr; const NodeDefManager *ndef = nullptr; u32 blockseed; @@ -175,7 +178,7 @@ class Mapgen { Mapgen() = default; Mapgen(int mapgenid, MapgenParams *params, EmergeParams *emerge); - virtual ~Mapgen() = default; + virtual ~Mapgen(); DISABLE_CLASS_COPY(Mapgen); virtual MapgenType getType() const { return MAPGEN_INVALID; } @@ -289,7 +292,6 @@ class MapgenBasic : public Mapgen { virtual void generateDungeons(s16 max_stone_y); protected: - EmergeParams *m_emerge; BiomeManager *m_bmgr; Noise *noise_filler_depth; diff --git a/src/mapgen/mapgen_singlenode.cpp b/src/mapgen/mapgen_singlenode.cpp index 3a41990358d2..1a6cba6b02cd 100644 --- a/src/mapgen/mapgen_singlenode.cpp +++ b/src/mapgen/mapgen_singlenode.cpp @@ -32,8 +32,6 @@ with this program; if not, write to the Free Software Foundation, Inc., MapgenSinglenode::MapgenSinglenode(MapgenParams *params, EmergeParams *emerge) : Mapgen(MAPGEN_SINGLENODE, params, emerge) { - const NodeDefManager *ndef = emerge->ndef; - c_node = ndef->getId("mapgen_singlenode"); if (c_node == CONTENT_IGNORE) c_node = CONTENT_AIR; diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp index a418acaceae0..4db8b25ef354 100644 --- a/src/mapgen/mapgen_v6.cpp +++ b/src/mapgen/mapgen_v6.cpp @@ -57,7 +57,6 @@ FlagDesc flagdesc_mapgen_v6[] = { MapgenV6::MapgenV6(MapgenV6Params *params, EmergeParams *emerge) : Mapgen(MAPGEN_V6, params, emerge) { - m_emerge = emerge; ystride = csize.X; heightmap = new s16[csize.X * csize.Z]; @@ -160,8 +159,6 @@ MapgenV6::~MapgenV6() delete noise_humidity; delete[] heightmap; - - delete m_emerge; // our responsibility }