mirror of
https://github.com/minetest/minetest.git
synced 2024-11-30 03:23:45 +01:00
MgOre: Fix invalid field polymorphism (#10846)
This commit is contained in:
parent
8ff209c412
commit
4fcd000e20
@ -52,7 +52,7 @@ extern FlagDesc flagdesc_ore[];
|
|||||||
|
|
||||||
class Ore : public ObjDef, public NodeResolver {
|
class Ore : public ObjDef, public NodeResolver {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = false;
|
const bool needs_noise;
|
||||||
|
|
||||||
content_t c_ore; // the node to place
|
content_t c_ore; // the node to place
|
||||||
std::vector<content_t> c_wherein; // the nodes to be placed in
|
std::vector<content_t> c_wherein; // the nodes to be placed in
|
||||||
@ -68,7 +68,7 @@ public:
|
|||||||
Noise *noise = nullptr;
|
Noise *noise = nullptr;
|
||||||
std::unordered_set<biome_t> biomes;
|
std::unordered_set<biome_t> biomes;
|
||||||
|
|
||||||
Ore() = default;;
|
explicit Ore(bool needs_noise): needs_noise(needs_noise) {}
|
||||||
virtual ~Ore();
|
virtual ~Ore();
|
||||||
|
|
||||||
virtual void resolveNodeNames();
|
virtual void resolveNodeNames();
|
||||||
@ -83,17 +83,17 @@ protected:
|
|||||||
|
|
||||||
class OreScatter : public Ore {
|
class OreScatter : public Ore {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = false;
|
OreScatter() : Ore(false) {}
|
||||||
|
|
||||||
ObjDef *clone() const;
|
ObjDef *clone() const;
|
||||||
|
|
||||||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||||
v3s16 nmin, v3s16 nmax, biome_t *biomemap);
|
v3s16 nmin, v3s16 nmax, biome_t *biomemap) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OreSheet : public Ore {
|
class OreSheet : public Ore {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = true;
|
OreSheet() : Ore(true) {}
|
||||||
|
|
||||||
ObjDef *clone() const;
|
ObjDef *clone() const;
|
||||||
|
|
||||||
@ -101,14 +101,12 @@ public:
|
|||||||
u16 column_height_max;
|
u16 column_height_max;
|
||||||
float column_midpoint_factor;
|
float column_midpoint_factor;
|
||||||
|
|
||||||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||||
v3s16 nmin, v3s16 nmax, biome_t *biomemap);
|
v3s16 nmin, v3s16 nmax, biome_t *biomemap) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OrePuff : public Ore {
|
class OrePuff : public Ore {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = true;
|
|
||||||
|
|
||||||
ObjDef *clone() const;
|
ObjDef *clone() const;
|
||||||
|
|
||||||
NoiseParams np_puff_top;
|
NoiseParams np_puff_top;
|
||||||
@ -116,55 +114,50 @@ public:
|
|||||||
Noise *noise_puff_top = nullptr;
|
Noise *noise_puff_top = nullptr;
|
||||||
Noise *noise_puff_bottom = nullptr;
|
Noise *noise_puff_bottom = nullptr;
|
||||||
|
|
||||||
OrePuff() = default;
|
OrePuff() : Ore(true) {}
|
||||||
virtual ~OrePuff();
|
virtual ~OrePuff();
|
||||||
|
|
||||||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||||
v3s16 nmin, v3s16 nmax, biome_t *biomemap);
|
v3s16 nmin, v3s16 nmax, biome_t *biomemap) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OreBlob : public Ore {
|
class OreBlob : public Ore {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = true;
|
|
||||||
|
|
||||||
ObjDef *clone() const;
|
ObjDef *clone() const;
|
||||||
|
|
||||||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
OreBlob() : Ore(true) {}
|
||||||
v3s16 nmin, v3s16 nmax, biome_t *biomemap);
|
void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||||
|
v3s16 nmin, v3s16 nmax, biome_t *biomemap) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OreVein : public Ore {
|
class OreVein : public Ore {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = true;
|
|
||||||
|
|
||||||
ObjDef *clone() const;
|
ObjDef *clone() const;
|
||||||
|
|
||||||
float random_factor;
|
float random_factor;
|
||||||
Noise *noise2 = nullptr;
|
Noise *noise2 = nullptr;
|
||||||
int sizey_prev = 0;
|
int sizey_prev = 0;
|
||||||
|
|
||||||
OreVein() = default;
|
OreVein() : Ore(true) {}
|
||||||
virtual ~OreVein();
|
virtual ~OreVein();
|
||||||
|
|
||||||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||||
v3s16 nmin, v3s16 nmax, biome_t *biomemap);
|
v3s16 nmin, v3s16 nmax, biome_t *biomemap) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OreStratum : public Ore {
|
class OreStratum : public Ore {
|
||||||
public:
|
public:
|
||||||
static const bool NEEDS_NOISE = false;
|
|
||||||
|
|
||||||
ObjDef *clone() const;
|
ObjDef *clone() const;
|
||||||
|
|
||||||
NoiseParams np_stratum_thickness;
|
NoiseParams np_stratum_thickness;
|
||||||
Noise *noise_stratum_thickness = nullptr;
|
Noise *noise_stratum_thickness = nullptr;
|
||||||
u16 stratum_thickness;
|
u16 stratum_thickness;
|
||||||
|
|
||||||
OreStratum() = default;
|
OreStratum() : Ore(false) {}
|
||||||
virtual ~OreStratum();
|
virtual ~OreStratum();
|
||||||
|
|
||||||
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
void generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||||
v3s16 nmin, v3s16 nmax, biome_t *biomemap);
|
v3s16 nmin, v3s16 nmax, biome_t *biomemap) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class OreManager : public ObjDefManager {
|
class OreManager : public ObjDefManager {
|
||||||
|
@ -1335,7 +1335,7 @@ int ModApiMapgen::l_register_ore(lua_State *L)
|
|||||||
lua_getfield(L, index, "noise_params");
|
lua_getfield(L, index, "noise_params");
|
||||||
if (read_noiseparams(L, -1, &ore->np)) {
|
if (read_noiseparams(L, -1, &ore->np)) {
|
||||||
ore->flags |= OREFLAG_USE_NOISE;
|
ore->flags |= OREFLAG_USE_NOISE;
|
||||||
} else if (ore->NEEDS_NOISE) {
|
} else if (ore->needs_noise) {
|
||||||
errorstream << "register_ore: specified ore type requires valid "
|
errorstream << "register_ore: specified ore type requires valid "
|
||||||
"'noise_params' parameter" << std::endl;
|
"'noise_params' parameter" << std::endl;
|
||||||
delete ore;
|
delete ore;
|
||||||
|
Loading…
Reference in New Issue
Block a user