Crossfire Server, Trunk
room_gen_spiral.cpp File Reference
#include "global.h"
#include <stdlib.h>
#include "random_map.h"
#include <math.h>
+ Include dependency graph for room_gen_spiral.cpp:

Go to the source code of this file.


#define FINE_SPIRAL   2
#define FIT_SPIRAL   4
#define MAX(x, y)   (((x) < (y)) ? (y) : (x))
#define MAX_FINE   .454545
#define MAX_SPIRAL_OPT   8
#define MIN(x, y)   (((x) < (y)) ? (x) : (y))
#define RANDOM_OPTIONS   0
#define REGULAR_SPIRAL   1


void connect_spirals (int xsize, int ysize, int sym, char **layout)
char ** map_gen_spiral (int xsize, int ysize, int option, int _unused_layers)
int surround_check (char **maze, int i, int j, int xsize, int ysize)

Detailed Description

The spiral room generator:

Check if MAX_FINE can't be removed.

Definition in file room_gen_spiral.cpp.

Macro Definition Documentation


#define FINE_SPIRAL   2

uses the min. separation: most coiling

Definition at line 33 of file room_gen_spiral.cpp.


#define FIT_SPIRAL   4

scale to a rectangular region, not square

Definition at line 34 of file room_gen_spiral.cpp.


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

Definition at line 44 of file room_gen_spiral.cpp.


#define MAX_FINE   .454545

Definition at line 47 of file room_gen_spiral.cpp.


#define MAX_SPIRAL_OPT   8

this should be 2x the last real option

Definition at line 35 of file room_gen_spiral.cpp.


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

Definition at line 41 of file room_gen_spiral.cpp.


#define RANDOM_OPTIONS   0

Pick random options below

Definition at line 31 of file room_gen_spiral.cpp.


#define REGULAR_SPIRAL   1

Regular spiral–distance increases constantly

Definition at line 32 of file room_gen_spiral.cpp.

Function Documentation

◆ connect_spirals()

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

Connects disjoint spirals which may result from the symmetrization process.

ysizelayout size.
symone of the SYM_xxx values.
layoutlayout to alter.

Definition at line 159 of file room_gen_spiral.cpp.

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:

◆ map_gen_spiral()

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

Generates a spiral layout.

ysizelayout size.
optioncombination of SPIRAL_xxx values.
generated layout.

Definition at line 62 of file room_gen_spiral.cpp.

References FINE_SPIRAL, FIT_SPIRAL, make_face_from_files::int, MAX_FINE, MAX_SPIRAL_OPT, MIN, CFweardisguise::option, RANDOM, REGULAR_SPIRAL, nlohmann::detail::void(), diamondslots::x, and diamondslots::y.

Referenced by layoutgen().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ surround_check()

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

Checks free spots around a spot.

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

Definition at line 280 of file rogue_layout.cpp.

Referenced by connect_spirals(), and roguelike_layout_gen().

+ Here is the caller graph for this function: