mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Huge overhaul of the entire MapgenParams system
MapgenParams is no longer a polymorphic class, eliminating the need for messy and bug-prone reallocations. Separation between the common and mapgen-specific parameters is now strongly defined. Mapgen parameters objects are now properly encapsulated within the proper subsystems.
This commit is contained in:
parent
a439343844
commit
5a34f40d80
24 changed files with 402 additions and 619 deletions
28
src/mapgen.h
28
src/mapgen.h
|
@ -28,17 +28,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "noise.h"
|
||||
#include "settings.h"
|
||||
|
||||
#define DEFAULT_MAPGEN "v6"
|
||||
|
||||
/////////////////// Mapgen flags
|
||||
#define MG_TREES 0x01
|
||||
#define MG_CAVES 0x02
|
||||
#define MG_DUNGEONS 0x04
|
||||
#define MGV6_JUNGLES 0x08
|
||||
#define MGV6_BIOME_BLEND 0x10
|
||||
#define MG_FLAT 0x20
|
||||
#define MG_NOLIGHT 0x40
|
||||
#define MGV7_MOUNTAINS 0x80
|
||||
#define MGV7_RIDGES 0x100
|
||||
#define MGV6_NOMUDFLOW 0x200
|
||||
#define MG_FLAT 0x08
|
||||
#define MG_NOLIGHT 0x10
|
||||
|
||||
/////////////////// Ore generation flags
|
||||
// Use absolute value of height to determine ore placement
|
||||
|
@ -101,6 +98,12 @@ enum OreType {
|
|||
};
|
||||
|
||||
|
||||
struct MapgenSpecificParams {
|
||||
virtual void readParams(Settings *settings) = 0;
|
||||
virtual void writeParams(Settings *settings) = 0;
|
||||
virtual ~MapgenSpecificParams() {}
|
||||
};
|
||||
|
||||
struct MapgenParams {
|
||||
std::string mg_name;
|
||||
int chunksize;
|
||||
|
@ -108,17 +111,16 @@ struct MapgenParams {
|
|||
int water_level;
|
||||
u32 flags;
|
||||
|
||||
MapgenSpecificParams *sparams;
|
||||
|
||||
MapgenParams() {
|
||||
mg_name = "v6";
|
||||
seed = 0;
|
||||
water_level = 1;
|
||||
chunksize = 5;
|
||||
flags = MG_TREES | MG_CAVES | MGV6_BIOME_BLEND;
|
||||
flags = MG_TREES | MG_CAVES;
|
||||
sparams = NULL;
|
||||
}
|
||||
|
||||
virtual bool readParams(Settings *settings) { return true; }
|
||||
virtual void writeParams(Settings *settings) {}
|
||||
virtual ~MapgenParams() {}
|
||||
};
|
||||
|
||||
class Mapgen {
|
||||
|
@ -156,7 +158,7 @@ public:
|
|||
struct MapgenFactory {
|
||||
virtual Mapgen *createMapgen(int mgid, MapgenParams *params,
|
||||
EmergeManager *emerge) = 0;
|
||||
virtual MapgenParams *createMapgenParams() = 0;
|
||||
virtual MapgenSpecificParams *createMapgenParams() = 0;
|
||||
virtual ~MapgenFactory() {}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue