Crossfire Server, Branch 1.12  R12190
Defines | Functions
room_gen_spiral.c File Reference

The spiral room generator: More...

#include <global.h>
#include <random_map.h>
#include <math.h>
Include dependency graph for room_gen_spiral.c:

Go to the source code of this file.

Defines

#define FINE_SPIRAL   2
 uses the min.
#define FIT_SPIRAL   4
 scale to a rectangular region, not square
#define MAX(x, y)   (((x) < (y)) ? (y) : (x))
#define MAX_FINE   .454545
#define MAX_SPIRAL_OPT   8
 this should be 2x the last real option
#define MIN(x, y)   (((x) < (y)) ? (x) : (y))
#define RANDOM_OPTIONS   0
 Pick random options below.
#define REGULAR_SPIRAL   1
 Regular spiral--distance increases constantly.

Functions

void connect_spirals (int xsize, int ysize, int sym, char **layout)
 Connects disjoint spirals which may result from the symmetrization process.
char ** map_gen_spiral (int xsize, int ysize, int option)
 Generates a spiral layout.
int surround_check (char **maze, int i, int j, int xsize, int ysize)
 Checks free spots around a spot.

Detailed Description

The spiral room generator:

Todo:
Check if MAX_FINE can't be removed.

Definition in file room_gen_spiral.c.


Define Documentation

#define MAX (   x,
 
)    (((x) < (y)) ? (y) : (x))

Definition at line 51 of file room_gen_spiral.c.

#define MAX_FINE   .454545

Definition at line 54 of file room_gen_spiral.c.

Referenced by map_gen_spiral().

#define MIN (   x,
 
)    (((x) < (y)) ? (x) : (y))

Definition at line 48 of file room_gen_spiral.c.

Referenced by map_gen_spiral().


Function Documentation

void connect_spirals ( int  xsize,
int  ysize,
int  sym,
char **  layout 
)

Connects disjoint spirals which may result from the symmetrization process.

Parameters:
xsize
ysizelayout size.
symone of the SYM_xxx values.
layoutlayout to alter.

Definition at line 159 of file room_gen_spiral.c.

References surround_check(), X_SYM, XY_SYM, and Y_SYM.

Referenced by symmetrize_layout().

Here is the call graph for this function:

Here is the caller graph for this function:

char** map_gen_spiral ( int  xsize,
int  ysize,
int  option 
)

Generates a spiral layout.

Parameters:
xsize
ysizelayout size.
optioncombination of SPIRAL_xxx values.
Returns:
generated layout.

Definition at line 68 of file room_gen_spiral.c.

References FINE_SPIRAL, FIT_SPIRAL, MAX_FINE, MAX_SPIRAL_OPT, MIN, and REGULAR_SPIRAL.

Referenced by layoutgen().

Here is the caller graph for this function:

int surround_check ( char **  layout,
int  i,
int  j,
int  Xsize,
int  Ysize 
)

Checks free spots around a spot.

Parameters:
layoutmap layout.
i
jcoordinates to check.
Xsize
Ysizesize of the layout.
Returns:
combination of the following values:
  • 1 = free space to left,
  • 2 = free space to right,
  • 4 = free space above
  • 8 = free space below
Todo:
there is an equivalent function in another layout, merge them together.

Definition at line 44 of file rogue_layout.c.