mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-21 18:11:11 +00:00
Move more dungeon parameter selection to mapgens (#8653)
Move 'num_dungeons' to 'DungeonParams'. Add new parameter 'num_rooms' to replace 'rooms_min' and 'rooms_max', so that the mapgen has complete control over the number of rooms. Add new bool 'first_room_large' so that the mapgen chooses this instead of a hardcoded 1 in 4 chance. Add new parameter 'room_size_large' to replace 'room_size_large_min' and 'room_size_large_max', so that the mapgen has complete control over this.
This commit is contained in:
parent
140aeabd87
commit
0c31946943
4 changed files with 66 additions and 68 deletions
|
@ -46,32 +46,33 @@ struct DungeonParams {
|
|||
content_t c_alt_wall;
|
||||
content_t c_stair;
|
||||
|
||||
// Diagonal corridors are possible
|
||||
bool diagonal_dirs;
|
||||
// Dungeon only generates in ground
|
||||
// 3D noise that determines which c_wall nodes are converted to c_alt_wall
|
||||
NoiseParams np_alt_wall;
|
||||
|
||||
// Number of dungeons generated in mapchunk
|
||||
u16 num_dungeons;
|
||||
// Dungeons only generate in ground
|
||||
bool only_in_ground;
|
||||
// Number of rooms
|
||||
u16 num_rooms;
|
||||
// Room size random range. Includes walls / floor / ceilng
|
||||
v3s16 room_size_min;
|
||||
v3s16 room_size_max;
|
||||
// Large room size
|
||||
v3s16 room_size_large;
|
||||
// First generated room is large
|
||||
bool first_room_large;
|
||||
// Dimensions of 3D 'brush' that creates corridors.
|
||||
// Dimensions are of the empty space, not including walls / floor / ceilng.
|
||||
v3s16 holesize;
|
||||
// Corridor length
|
||||
// Corridor length random range
|
||||
u16 corridor_len_min;
|
||||
u16 corridor_len_max;
|
||||
// Room size includes walls / floor / ceilng
|
||||
v3s16 room_size_min;
|
||||
v3s16 room_size_max;
|
||||
// The 1st room generated has a 1 in 4 chance of being 'large', all other
|
||||
// rooms are not 'large'.
|
||||
v3s16 room_size_large_min;
|
||||
v3s16 room_size_large_max;
|
||||
// Number of rooms
|
||||
u16 rooms_min;
|
||||
u16 rooms_max;
|
||||
// Diagonal corridors are possible
|
||||
bool diagonal_dirs;
|
||||
// Usually 'GENNOTIFY_DUNGEON', but mapgen v6 uses 'GENNOTIFY_TEMPLE' for
|
||||
// desert dungeons.
|
||||
GenNotifyType notifytype;
|
||||
|
||||
// 3D noise that determines which c_wall nodes are converted to c_alt_wall
|
||||
NoiseParams np_alt_wall;
|
||||
};
|
||||
|
||||
class DungeonGen {
|
||||
|
@ -94,8 +95,7 @@ public:
|
|||
DungeonGen(const NodeDefManager *ndef,
|
||||
GenerateNotifier *gennotify, DungeonParams *dparams);
|
||||
|
||||
void generate(MMVManip *vm, u32 bseed,
|
||||
v3s16 full_node_min, v3s16 full_node_max, u16 num_dungeons);
|
||||
void generate(MMVManip *vm, u32 bseed, v3s16 full_node_min, v3s16 full_node_max);
|
||||
|
||||
void makeDungeon(v3s16 start_padding);
|
||||
void makeRoom(v3s16 roomsize, v3s16 roomplace);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue