Crossfire Server, Trunk  R20513
Macros | Functions
special.c File Reference

Those functions handle placement of fountains, submaps, and so on. More...

#include "global.h"
#include <stdlib.h>
#include <string.h>
#include "random_map.h"
#include "rproto.h"
Include dependency graph for special.c:

Go to the source code of this file.

Macros

#define GLORY_HOLE   1
 
#define MINING_ZONE   3
 
#define NO_SPECIAL   0
 
#define NR_OF_HOLE_TYPES   3
 
#define NUM_OF_SPECIAL_TYPES   4
 
#define ORC_ZONE   2
 
#define SPECIAL_EXIT   3
 
#define SPECIAL_FOUNTAIN   2
 
#define SPECIAL_SUBMAP   1
 

Functions

int find_spot_for_submap (mapstruct *map, char **layout, int *ix, int *iy, int xsize, int ysize)
 Finds a place to put a submap into. More...
 
void include_map_in_map (mapstruct *dest_map, const mapstruct *in_map, int x, int y)
 Copy in_map into dest_map at point x,y. More...
 
void nuke_map_region (mapstruct *map, int xstart, int ystart, int xsize, int ysize)
 Erases all objects (except floor) in the given rectangle. More...
 
void place_fountain_with_specials (mapstruct *map)
 Places a special fountain on the map. More...
 
void place_special_exit (mapstruct *map, int hole_type, const RMParms *RP)
 Place an exit with a resource map. More...
 
void place_specials_in_map (mapstruct *map, char **layout, RMParms *RP)
 Main function for specials. More...
 

Detailed Description

Those functions handle placement of fountains, submaps, and so on.

Definition in file special.c.

Function Documentation

int find_spot_for_submap ( mapstruct map,
char **  layout,
int *  ix,
int *  iy,
int  xsize,
int  ysize 
)

Finds a place to put a submap into.

Parameters
mapmap to insert.
layoutwhere to insert into.
ix
iycoordinates of suitable location if return is 1.
xsize
ysizesize of layout.
Returns
0 if no space found, 1 else.

Definition at line 154 of file special.c.

References MAP_HEIGHT, MAP_WIDTH, RANDOM, settings, and Settings::special_break_map.

Referenced by place_specials_in_map().

Here is the caller graph for this function:

void include_map_in_map ( mapstruct dest_map,
const mapstruct in_map,
int  x,
int  y 
)

Copy in_map into dest_map at point x,y.

This also copies shop information if set in in_map.

Parameters
dest_mapmap where to copy to.
in_mapmap to copy from.
x
ycoordinates to put in_map to.

Definition at line 86 of file special.c.

References add_button_link(), CALLOC, FLAG_IS_LINKED, FOR_MAP_FINISH, FOR_MAP_PREPARE, FREE_AND_CLEAR, shopitem::index, INS_NO_MERGE, INS_NO_WALK_ON, MAP_HEIGHT, MAP_WIDTH, nuke_map_region(), object_copy_with_inv(), object_create_arch(), object_insert_in_map_at(), QUERY_FLAG, mapdef::shopgreed, mapdef::shopitems, mapdef::shopmax, mapdef::shopmin, mapdef::shoprace, and strdup_local.

Referenced by place_specials_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void nuke_map_region ( mapstruct map,
int  xstart,
int  ystart,
int  xsize,
int  ysize 
)

Erases all objects (except floor) in the given rectangle.

Parameters
mapmap to process.
xstart
ystarttop-left coordinates of zone.
xsize
ysizesize of zone.

Definition at line 59 of file special.c.

References FLAG_IS_FLOOR, FOR_MAP_FINISH, FOR_MAP_PREPARE, HEAD, object_free_drop_inventory(), object_remove(), and QUERY_FLAG.

Referenced by include_map_in_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void place_fountain_with_specials ( mapstruct map)
void place_special_exit ( mapstruct map,
int  hole_type,
const RMParms RP 
)
void place_specials_in_map ( mapstruct map,
char **  layout,
RMParms RP 
)

Main function for specials.

Parameters
mapmap to alter.
layoutlayout the map was generated from.
RPparameters the map was generated from.

Definition at line 393 of file special.c.

References RMParms::difficulty, find_spot_for_submap(), find_style(), include_map_in_map(), MAP_HEIGHT, MAP_WIDTH, NUM_OF_SPECIAL_TYPES, place_fountain_with_specials(), place_special_exit(), RANDOM, SPECIAL_EXIT, SPECIAL_FOUNTAIN, and SPECIAL_SUBMAP.

Referenced by generate_random_map().

Here is the call graph for this function:

Here is the caller graph for this function: