Crossfire Server, Branch 1.12  R12190
Functions
exit.c File Reference

Handle exit placement in map. More...

#include <global.h>
#include <random_map.h>
#include <sproto.h>
#include <rproto.h>
Include dependency graph for exit.c:

Go to the source code of this file.

Functions

void find_in_layout (int mode, char target, int *fx, int *fy, char **layout, RMParms *RP)
 Find a character in the layout.
void place_exits (mapstruct *map, char **maze, char *exitstyle, int orientation, RMParms *RP)
 Place exits in the map.
void unblock_exits (mapstruct *map, char **maze, RMParms *RP)
 This function unblocks the exits.

Detailed Description

Handle exit placement in map.

Definition in file exit.c.


Function Documentation

void find_in_layout ( int  mode,
char  target,
int *  fx,
int *  fy,
char **  layout,
RMParms RP 
)

Find a character in the layout.

Parameters:
modehow to look:
  • 1: from top/left to bottom/right.
  • 2: from top/right to bottom/left.
  • 3: from bottom/left to top/right.
  • 4: from bottom/right to top/left.
  • other value: one random order is chosen.
targetcharacter to search.
fx
fyposition of character, or -1 if not found.
layoutmaze.
RPmaze parameters.

Definition at line 58 of file exit.c.

References RMParms::Xsize, and RMParms::Ysize.

Referenced by place_exits().

Here is the caller graph for this function:

void place_exits ( mapstruct map,
char **  maze,
char *  exitstyle,
int  orientation,
RMParms RP 
)

Place exits in the map.

Parameters:
mapmap to put exits into.
mazemap layout.
exitstylewhat style to use. If NULL uses a random one.
orientationhow exits should be oriented:
  • 0 means random.
  • 1 means descending dungeon.
  • 2 means ascending dungeon.
  • 3 means rightward.
  • 4 means leftward.
  • 5 means northward.
  • 6 means southward.
RPmap parameters.
Note:
unblock_exits() should be called at some point, as exits will be blocking everything to avoid putting other objects on them.
Todo:
add orientations 3-6 or fix previous comment.

Definition at line 153 of file exit.c.

References add_string(), arch_to_object(), create_archetype(), RMParms::dungeon_depth, RMParms::dungeon_level, EXIT, RMParms::exit_on_final_map, EXIT_PATH, EXIT_X, EXIT_Y, RMParms::final_exit_archetype, RMParms::final_map, find_archetype(), find_first_free_spot(), find_in_layout(), find_style(), free_object(), freearr_x, freearr_y, GET_MAP_OB, insert_ob_in_map(), MAP_ENTER_X, MAP_ENTER_Y, MOVE_ALL, RMParms::origin_map, RMParms::origin_x, RMParms::origin_y, mapdef::path, pick_random_object(), ready_map_name(), remove_ob(), set_map_timeout(), snprintf(), wall_blocked(), write_map_parameters_to_string(), RMParms::Xsize, and RMParms::Ysize.

Referenced by generate_random_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void unblock_exits ( mapstruct map,
char **  maze,
RMParms RP 
)

This function unblocks the exits.

We blocked them to keep things from being dumped on them during the other phases of random map generation.

Parameters:
mapmap to alter.
mazemap layout.
RPmap generation parameters.

Definition at line 392 of file exit.c.

References GET_MAP_OB, LOCKED_DOOR, MOVE_ALL, MOVE_BLOCK_DEFAULT, update_object(), RMParms::Xsize, and RMParms::Ysize.

Referenced by generate_random_map().

Here is the call graph for this function:

Here is the caller graph for this function: