Expose scaled mazes to special level lua
Adds a new level init type which directly creates a maze,
optionally setting corridor width and wall thickness,
and removing dead ends.
des.level_init({ style = "maze", corrwid = 3, wallthick = 1, deadends = false });
This commit is contained in:
10
src/sp_lev.c
10
src/sp_lev.c
@@ -2901,6 +2901,9 @@ lev_init *linit;
|
||||
case LVLINIT_MAZEGRID:
|
||||
lvlfill_maze_grid(2, 0, g.x_maze_max, g.y_maze_max, linit->bg);
|
||||
break;
|
||||
case LVLINIT_MAZE:
|
||||
create_maze(linit->corrwid, linit->wallthick, linit->rm_deadends);
|
||||
break;
|
||||
case LVLINIT_ROGUE:
|
||||
makeroguerooms();
|
||||
break;
|
||||
@@ -3574,10 +3577,10 @@ lspo_level_init(L)
|
||||
lua_State *L;
|
||||
{
|
||||
static const char *const initstyles[] = {
|
||||
"solidfill", "mazegrid", "rogue", "mines", "swamp", NULL
|
||||
"solidfill", "mazegrid", "maze", "rogue", "mines", "swamp", NULL
|
||||
};
|
||||
static const int initstyles2i[] = {
|
||||
LVLINIT_SOLIDFILL, LVLINIT_MAZEGRID, LVLINIT_ROGUE,
|
||||
LVLINIT_SOLIDFILL, LVLINIT_MAZEGRID, LVLINIT_MAZE, LVLINIT_ROGUE,
|
||||
LVLINIT_MINES, LVLINIT_SWAMP, 0
|
||||
};
|
||||
lev_init init_lev;
|
||||
@@ -3597,6 +3600,9 @@ lua_State *L;
|
||||
init_lev.lit = get_table_int_or_random(L, "lit", -1); /* TODO: allow lit=BOOL */
|
||||
init_lev.walled = get_table_boolean_opt(L, "walled", 0);
|
||||
init_lev.filling = get_table_mapchr_opt(L, "filling", init_lev.fg);
|
||||
init_lev.corrwid = get_table_int_opt(L, "corrwid", -1);
|
||||
init_lev.wallthick = get_table_int_opt(L, "wallthick", -1);
|
||||
init_lev.rm_deadends = !get_table_boolean_opt(L, "deadends", 1);
|
||||
|
||||
g.coder->lvl_is_joined = init_lev.joined;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user