Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes

terrain_builder Class Reference

The class terrain_builder is constructed from a config object, and a gamemap object. More...

#include <builder.hpp>

Collaboration diagram for terrain_builder:
Collaboration graph
[legend]

List of all members.

Classes

struct  building_rule
 The in-memory representation of a [terrain_graphics] WML rule. More...
struct  rule_image
 Each terrain_graphics rule is associated a set of images, which are applied on the terrain if the rule matches. More...
struct  rule_image_variant
 An image variant. More...
struct  terrain_constraint
 The in-memory representation of a [tile] WML rule inside of a [terrain_graphics] WML rule. More...
struct  tile
 Represents a tile of the game map, with all associated builder-specific parameters: flags, images attached to this tile, etc. More...
class  tilemap
 The map of "tile" structures corresponding to the level map. More...

Public Types

enum  TERRAIN_TYPE { BACKGROUND, FOREGROUND }
 

Used as a parameter for the get_terrain_at function.

More...
typedef std::vector< animated
< image::locator > > 
imagelist
 A shorthand typedef for a list of animated image locators, the base data type returned by the get_terrain_at method.
typedef std::vector< rule_imagerule_imagelist
 A shorthand notation for a vector of rule_images.

Public Member Functions

 terrain_builder (const config &level, const gamemap *map, const std::string &offmap_image)
 Constructor for the terrain_builder class.
const gamemapmap () const
void reload_map ()
 Updates internals that cache map size.
void change_map (const gamemap *m)
const imagelistget_terrain_at (const map_location &loc, const std::string &tod, TERRAIN_TYPE const terrain_type)
 Returns a vector of strings representing the images to load & blit together to get the built content for this tile.
bool update_animation (const map_location &loc)
 Updates the animation at a given tile.
void rebuild_terrain (const map_location &loc)
 Performs a "quick-rebuild" of the terrain in a given location.
void rebuild_all ()
 Performs a complete rebuild of the list of terrain graphics attached to a map.
tileget_tile (const map_location &loc)

Static Public Member Functions

static void set_terrain_rules_cfg (const config &cfg)
 Set the config where we will parse the global terrain rules.

Static Public Attributes

static const int TILEWIDTH = 72
 The tile width used when using basex and basey.
static const int UNITPOS = 36 + 18
 The position of unit graphics in a tile.
static const unsigned int DUMMY_HASH = 0

Private Types

typedef std::vector
< terrain_constraint
constraint_set
 The list of constraints attached to a terrain_graphics WML rule.
typedef std::multiset
< building_rule
building_ruleset
 A set of building rules.
typedef std::multimap< int,
map_location
anchormap
typedef std::map
< t_translation::t_terrain,
std::vector< map_location > > 
terrain_by_type_map
 Shorthand typedef for a map associating a list of locations to a terrain type.

Private Member Functions

bool load_images (building_rule &rule)
 Load images and tests for validity of a rule.
bool start_animation (building_rule &rule)
 Starts the animation on a rule.
void rotate (terrain_constraint &constraint, int angle)
 "Rotates" a constraint from a rule.
void replace_rotate_tokens (std::string &s, int angle, const std::vector< std::string > &replacement)
 Replaces, in a given string, rotation tokens with their values.
void replace_rotate_tokens (rule_image &image, int angle, const std::vector< std::string > &replacement)
 Replaces, in a given rule_image, rotation tokens with their values.
void replace_rotate_tokens (rule_image_variant &variant, int angle, const std::vector< std::string > &replacement)
 Replaces, in a given rule_variant_image, rotation tokens with their values.
void replace_rotate_tokens (rule_imagelist &list, int angle, const std::vector< std::string > &replacement)
 Replaces, in a given rule_imagelist, rotation tokens with their values.
void replace_rotate_tokens (building_rule &rule, int angle, const std::vector< std::string > &replacement)
 Replaces, in a given building_rule, rotation tokens with their values.
void rotate_rule (building_rule &rule, int angle, const std::vector< std::string > &angle_name)
 Rotates a template rule to a given angle.
void add_images_from_config (rule_imagelist &images, const config &cfg, bool global, int dx=0, int dy=0)
 Parses a "config" object, which should contains [image] children, and adds the corresponding parsed rule_images to a rule_imagelist.
terrain_constraintadd_constraints (constraint_set &constraints, const map_location &loc, const t_translation::t_match &type, const config &global_images)
 Creates a rule constraint object which matches a given list of terrains, and adds it to the list of constraints of a rule.
void add_constraints (constraint_set &constraints, const map_location &loc, const config &cfg, const config &global_images)
 Creates a rule constraint object from a config object and adds it to the list of constraints of a rule.
void parse_mapstring (const std::string &mapstring, struct building_rule &br, anchormap &anchors, const config &global_images)
 Parses a map string (the map= element of a [terrain_graphics] rule, and adds constraints from this map to a building_rule.
void add_rule (building_ruleset &rules, building_rule &rule)
 Adds a rule to a ruleset.
void add_rotated_rules (building_ruleset &rules, building_rule &tpl, const std::string &rotations)
 Adds a set of rules to a ruleset, from a template rule which spans 6 rotations (or less if some of the rotated rules are invalid).
void parse_config (const config &cfg, bool local=true)
 Parses a configuration object containing [terrain_graphics] rules, and fills the building_rules_ member of the current class according to those.
void parse_global_config (const config &cfg)
void add_off_map_rule (const std::string &image)
 Adds a builder rule for the _off^_usr tile, this tile only has 1 image.
void flush_local_rules ()
bool terrain_matches (t_translation::t_terrain tcode, const t_translation::t_list &terrains) const
 Checks whether a terrain code matches a given list of terrain codes.
bool terrain_matches (t_translation::t_terrain tcode, const t_translation::t_match &terrain) const
 Checks whether a terrain code matches a given list of terrain tcodes.
bool rule_matches (const building_rule &rule, const map_location &loc, const terrain_constraint *type_checked) const
 Checks whether a rule matches a given location in the map.
void apply_rule (const building_rule &rule, const map_location &loc)
 Applies a rule at a given location: applies the result of a matching rule at a given location: attachs the images corresponding to the rule, and sets the flags corresponding to the rule.
void build_terrains ()
 Calculates the list of terrains, and fills the tile_map_ member, from the gamemap and the building_rules_.

Private Attributes

const gamemapmap_
 A pointer to the gamemap class used in the current level.
tilemap tile_map_
 The tile_map_ for the current level, which is filled by the build_terrains_ method to contain "tiles" representing images attached to each tile.
terrain_by_type_map terrain_by_type_
 A map representing all locations whose terrain is of a given type.

Static Private Attributes

static building_ruleset building_rules_
 Parsed terrain rules.
static const configrules_cfg_ = NULL
 Config used to parse global terrain rules.

Detailed Description

The class terrain_builder is constructed from a config object, and a gamemap object.

On construction, it parses the configuration and extracts the list of [terrain_graphics] rules. Each terrain_graphics rule attaches one or more images to a specific terrain pattern. It then applies the rules loaded from the configuration to the current map, and calculates the list of images that must be associated to each hex of the map.

The get_terrain_at method can then be used to obtain the list of images necessary to draw the terrain on a given tile.

Definition at line 43 of file builder.hpp.


Member Typedef Documentation

typedef std::multimap<int, map_location> terrain_builder::anchormap [private]

Definition at line 655 of file builder.hpp.

typedef std::multiset<building_rule> terrain_builder::building_ruleset [private]

A set of building rules.

In-memory representation of the whole set of [terrain_graphics] rules.

Definition at line 463 of file builder.hpp.

typedef std::vector<terrain_constraint> terrain_builder::constraint_set [private]

The list of constraints attached to a terrain_graphics WML rule.

Definition at line 349 of file builder.hpp.

A shorthand typedef for a list of animated image locators, the base data type returned by the get_terrain_at method.

Definition at line 76 of file builder.hpp.

A shorthand notation for a vector of rule_images.

Definition at line 244 of file builder.hpp.

Shorthand typedef for a map associating a list of locations to a terrain type.

Definition at line 783 of file builder.hpp.


Member Enumeration Documentation

Used as a parameter for the get_terrain_at function.

Enumerator:
BACKGROUND 

Represents terrains which are to be drawn behind unit sprites.

FOREGROUND 

Represents terrains which are to be drawn in front of them.

Definition at line 47 of file builder.hpp.


Constructor & Destructor Documentation

terrain_builder::terrain_builder ( const config level,
const gamemap map,
const std::string &  offmap_image 
)

Constructor for the terrain_builder class.

Parameters:
level A level (scenario)-specific configuration file, containing scenario-specific [terrain_graphics] rules.
map A properly-initialized gamemap object representing the current terrain map.
offmap_image The filename of the image which will be used as off map image (see add_off_map_rule()). This image automatically gets the 'terrain/' prefix and '.png' suffix

Definition at line 164 of file builder.cpp.

References add_off_map_rule(), build_terrains(), building_rules_, flush_local_rules(), parse_config(), parse_global_config(), image::precache_file_existence(), and rules_cfg_.

Here is the call graph for this function:


Member Function Documentation

terrain_builder::terrain_constraint & terrain_builder::add_constraints ( terrain_builder::constraint_set constraints,
const map_location loc,
const t_translation::t_match type,
const config global_images 
) [private]

Creates a rule constraint object which matches a given list of terrains, and adds it to the list of constraints of a rule.

Parameters:
constraints The constraint set to which to add the constraint.
loc The location of the constraint
type The list of terrains this constraint will match
global_images A configuration object containing [image] tags describing rule-global images.

Definition at line 628 of file builder.cpp.

References add_images_from_config(), terrain_builder::terrain_constraint::images, terrain_builder::terrain_constraint::loc, t_translation::t_match::terrain, terrain_builder::terrain_constraint::terrain_types_match, TILEWIDTH, map_location::x, and map_location::y.

Referenced by add_constraints(), parse_config(), and parse_mapstring().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::add_constraints ( terrain_builder::constraint_set constraints,
const map_location loc,
const config cfg,
const config global_images 
) [private]

Creates a rule constraint object from a config object and adds it to the list of constraints of a rule.

Parameters:
constraints The constraint set to which to add the constraint.
loc The location of the constraint
cfg The config object describing this constraint. Usually, a [tile] child of a [terrain_graphics] rule.
global_images A configuration object containing [image] tags describing rule-global images.

Definition at line 658 of file builder.cpp.

References add_constraints(), add_images_from_config(), terrain_builder::terrain_constraint::has_flag, terrain_builder::terrain_constraint::images, terrain_builder::terrain_constraint::no_flag, terrain_builder::terrain_constraint::set_flag, utils::split(), and t_translation::WILDCARD.

Here is the call graph for this function:

void terrain_builder::add_images_from_config ( rule_imagelist images,
const config cfg,
bool  global,
int  dx = 0,
int  dy = 0 
) [private]

Parses a "config" object, which should contains [image] children, and adds the corresponding parsed rule_images to a rule_imagelist.

Parameters:
images The rule_imagelist into which to add the parsed images.
cfg The WML configuration object to parse
global Whether those [image]s elements belong to a [terrain_graphics] element, or to a [tile] child. Set to true if those belong to a [terrain_graphics] element.
dx The X coordinate of the constraint those images apply to, relative to the start of the rule. Only meaningful if global is set to false.
dy The Y coordinate of the constraint those images apply to.

Definition at line 582 of file builder.cpp.

References base_, config::child_range(), config::get(), utils::split(), and TILEWIDTH.

Referenced by add_constraints().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::add_off_map_rule ( const std::string &  image  )  [private]

Adds a builder rule for the _off^_usr tile, this tile only has 1 image.

Parameters:
image The filename of the image

Definition at line 890 of file builder.cpp.

References config::add_child(), t_translation::OFF_MAP_USER, parse_global_config(), and t_translation::write_terrain_code().

Referenced by terrain_builder().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::add_rotated_rules ( building_ruleset rules,
building_rule tpl,
const std::string &  rotations 
) [private]

Adds a set of rules to a ruleset, from a template rule which spans 6 rotations (or less if some of the rotated rules are invalid).

Parameters:
rules The ruleset into which to add the rules.
tpl The template rule
rotations A comma-separated string containing the 6 values for replacing rotation template template strings

(@Rn) 

Definition at line 742 of file builder.cpp.

References add_rule(), rotate_rule(), and utils::split().

Referenced by parse_config().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::add_rule ( building_ruleset rules,
building_rule rule 
) [private]

Adds a rule to a ruleset.

Checks for validity before adding the rule.

Parameters:
rules The ruleset into which to add the rules.
rule The rule to add.

Definition at line 735 of file builder.cpp.

References load_images().

Referenced by add_rotated_rules().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::apply_rule ( const building_rule rule,
const map_location loc 
) [private]

Applies a rule at a given location: applies the result of a matching rule at a given location: attachs the images corresponding to the rule, and sets the flags corresponding to the rule.

Parameters:
rule The rule to apply
loc The location to which to apply the rule.

Definition at line 963 of file builder.cpp.

References terrain_builder::building_rule::constraints, game_config::images::flag, terrain_builder::tile::flags, terrain_builder::building_rule::get_hash(), get_noise(), terrain_builder::tile::images, terrain_builder::terrain_constraint::images, map_location::legacy_sum(), terrain_builder::terrain_constraint::loc, terrain_builder::tilemap::on_map(), terrain_builder::terrain_constraint::set_flag, and tile_map_.

Referenced by build_terrains().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::build_terrains (  )  [private]

Calculates the list of terrains, and fills the tile_map_ member, from the gamemap and the building_rules_.

Definition at line 1020 of file builder.cpp.

References apply_rule(), building_rules_, terrain_builder::building_rule::constraints, gamemap::get_terrain(), gamemap::h(), terrain_builder::terrain_constraint::loc, log_scope, map(), match(), rule_matches(), terrain_by_type_, terrain_matches(), terrain_builder::terrain_constraint::terrain_types_match, and gamemap::w().

Referenced by rebuild_all(), reload_map(), and terrain_builder().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::change_map ( const gamemap m  ) 

Definition at line 215 of file builder.cpp.

References map_, and reload_map().

Here is the call graph for this function:

void terrain_builder::flush_local_rules (  )  [private]

Definition at line 188 of file builder.cpp.

References building_rules_.

Referenced by terrain_builder().

Here is the caller graph for this function:

const terrain_builder::imagelist * terrain_builder::get_terrain_at ( const map_location loc,
const std::string &  tod,
TERRAIN_TYPE const  terrain_type 
)

Returns a vector of strings representing the images to load & blit together to get the built content for this tile.

Parameters:
loc The location relative the the terrain map, where we ask for the image list
tod The string representing the current time-of day. Will be used if some images specify several time-of-day- related variants.
terrain_type BACKGROUND or FOREGROUND, depending on whether we ask for the terrain which is before, or after the unit sprite.
Returns:
Returns a pointer list of animated images corresponding to the parameters, or NULL if there is none.

Definition at line 221 of file builder.cpp.

References terrain_builder::tile::images_background, terrain_builder::tile::images_foreground, terrain_builder::tile::last_tod, terrain_builder::tilemap::on_map(), terrain_builder::tile::rebuild_cache(), and tile_map_.

Here is the call graph for this function:

terrain_builder::tile * terrain_builder::get_tile ( const map_location loc  ) 

Definition at line 1094 of file builder.cpp.

References terrain_builder::tilemap::on_map(), and tile_map_.

Referenced by events::console_handler::do_layers().

Here is the call graph for this function:

Here is the caller graph for this function:

bool terrain_builder::load_images ( building_rule rule  )  [private]

Load images and tests for validity of a rule.

A rule is considered valid if all its images are present. This method is used, when building the ruleset, to only add rules which are valid to the ruleset.

Parameters:
rule The rule to test for validity
Returns:
true if the rule is valid, false if it is not.

Todo:
improve this, 99% of terrains are not animated.

Definition at line 340 of file builder.cpp.

References animated< T, T_void_value >::add_frame(), terrain_builder::rule_image::center_x, terrain_builder::rule_image::center_y, terrain_builder::building_rule::constraints, animated< T, T_void_value >::get_frames_count(), get_variations(), terrain_builder::rule_image::global_image, image_exists(), terrain_builder::rule_image_variant::image_string, terrain_builder::rule_image_variant::images, terrain_builder::terrain_constraint::images, terrain_builder::terrain_constraint::loc, utils::parenthetical_split(), utils::split(), animated< T, T_void_value >::start_animation(), terrain_builder::rule_image::variants, and terrain_builder::rule_image_variant::variations.

Referenced by add_rule().

Here is the call graph for this function:

Here is the caller graph for this function:

const gamemap& terrain_builder::map (  )  const [inline]

Definition at line 100 of file builder.hpp.

References map_.

Referenced by build_terrains(), parse_mapstring(), rebuild_terrain(), reload_map(), and rule_matches().

Here is the caller graph for this function:

void terrain_builder::parse_config ( const config cfg,
bool  local = true 
) [private]
void terrain_builder::parse_global_config ( const config cfg  )  [inline, private]

Definition at line 702 of file builder.hpp.

References parse_config().

Referenced by add_off_map_rule(), and terrain_builder().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::parse_mapstring ( const std::string &  mapstring,
struct building_rule br,
anchormap anchors,
const config global_images 
) [private]

Parses a map string (the map= element of a [terrain_graphics] rule, and adds constraints from this map to a building_rule.

Parameters:
mapstring The map vector to parse
br The building rule into which to add the extracted constraints
anchors A map where to put "anchors" extracted from the map.
global_images A config object representing the images defined as direct children of the [terrain_graphics] rule.

Definition at line 688 of file builder.cpp.

References add_constraints(), assert, t_translation::t_terrain::base, terrain_builder::building_rule::constraints, ERR_NG, map(), t_translation::NONE_TERRAIN, t_translation::t_terrain::overlay, t_translation::read_builder_map(), t_translation::STAR, t_translation::TB_DOT, t_translation::TB_STAR, gui2::terrain, and t_translation::write_terrain_code().

Referenced by parse_config().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::rebuild_all (  ) 

Performs a complete rebuild of the list of terrain graphics attached to a map.

Should be called when a terrain is changed in the map.

Definition at line 294 of file builder.cpp.

References build_terrains(), terrain_builder::tilemap::reset(), terrain_by_type_, and tile_map_.

Here is the call graph for this function:

void terrain_builder::rebuild_terrain ( const map_location loc  ) 

Performs a "quick-rebuild" of the terrain in a given location.

The "quick-rebuild" is no proper rebuild: it only clears the terrain cache for a given location, and replaces it with a single, default image for this terrain.

Parameters:
loc the location where to rebuild terrains
Todo:
TODO: rename this function

Definition at line 268 of file builder.cpp.

References animated< T, T_void_value >::add_frame(), gamemap::get_terrain_info(), terrain_builder::tile::images_background, terrain_builder::tile::images_foreground, map(), terrain_type::minimap_image(), terrain_type::minimap_image_overlay(), terrain_builder::tilemap::on_map(), animated< T, T_void_value >::start_animation(), and tile_map_.

Here is the call graph for this function:

void terrain_builder::reload_map (  ) 

Updates internals that cache map size.

This should be called when the map size has changed.

Definition at line 208 of file builder.cpp.

References build_terrains(), h, map(), terrain_builder::tilemap::reload(), terrain_by_type_, tile_map_, and w.

Referenced by change_map().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::replace_rotate_tokens ( building_rule rule,
int  angle,
const std::vector< std::string > &  replacement 
) [private]

Replaces, in a given building_rule, rotation tokens with their values.

The actual substitution is done in the rule_imagelists contained in all constraints of the building_rule, and in the flags (has_flag, set_flag and no_flag) contained in all constraints of the building_rule.

Parameters:
rule the building_rule in which to do the replacement.
angle the angle for substituting the correct replacement.
replacement the replacement strings.

Definition at line 515 of file builder.cpp.

References terrain_builder::building_rule::constraints, game_config::images::flag, terrain_builder::terrain_constraint::has_flag, terrain_builder::terrain_constraint::images, terrain_builder::terrain_constraint::no_flag, replace_rotate_tokens(), and terrain_builder::terrain_constraint::set_flag.

Here is the call graph for this function:

void terrain_builder::replace_rotate_tokens ( rule_imagelist list,
int  angle,
const std::vector< std::string > &  replacement 
) [private]

Replaces, in a given rule_imagelist, rotation tokens with their values.

The actual substitution is done in all rule_images contained in the rule_imagelist.

Parameters:
list the rule_imagelist in which to do the replacement.
angle the angle for substituting the correct replacement.
replacement the replacement strings.

Definition at line 507 of file builder.cpp.

References replace_rotate_tokens().

Here is the call graph for this function:

void terrain_builder::replace_rotate_tokens ( rule_image_variant variant,
int  angle,
const std::vector< std::string > &  replacement 
) [inline, private]

Replaces, in a given rule_variant_image, rotation tokens with their values.

The actual substitution is done in the "image_string" parameter of this rule_variant_image.

Parameters:
variant the rule_variant_image in which to do the replacement.
angle the angle for substituting the correct replacement.
replacement the replacement strings.

Definition at line 537 of file builder.hpp.

References terrain_builder::rule_image_variant::image_string, and replace_rotate_tokens().

Referenced by replace_rotate_tokens().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::replace_rotate_tokens ( std::string &  s,
int  angle,
const std::vector< std::string > &  replacement 
) [private]

Replaces, in a given string, rotation tokens with their values.

Parameters:
s the string in which to do the replacement
angle the angle for substituting the correct replacement.
replacement the replacement strings.

Definition at line 484 of file builder.cpp.

References pos.

Referenced by replace_rotate_tokens(), and rotate_rule().

Here is the caller graph for this function:

void terrain_builder::replace_rotate_tokens ( rule_image image,
int  angle,
const std::vector< std::string > &  replacement 
) [private]

Replaces, in a given rule_image, rotation tokens with their values.

The actual substitution is done in all variants of the given image.

Parameters:
image the rule_image in which to do the replacement.
angle the angle for substituting the correct replacement.
replacement the replacement strings.

Definition at line 499 of file builder.cpp.

References replace_rotate_tokens(), and terrain_builder::rule_image::variants.

Here is the call graph for this function:

void terrain_builder::rotate ( terrain_constraint constraint,
int  angle 
) [private]

"Rotates" a constraint from a rule.

Takes a template constraint from a template rule, and rotates to the given angle.

On a constraint, the relative position of each rule, and the "base" of each vertical images, are rotated according to the given angle.

Template terrain constraints are defined like normal terrain constraints, except that, flags, and image filenames, may contain template strings of the form

	 *  <code>@Rn</code>,
	 *

n being a number from 0 to 5. See the rotate_rule method for more info.

Parameters:
constraint A template constraint to rotate
angle An int, from 0 to 5, representing the rotation angle.

Definition at line 404 of file builder.cpp.

References assert, terrain_builder::terrain_constraint::images, terrain_builder::terrain_constraint::loc, TILEWIDTH, map_location::x, and map_location::y.

Referenced by rotate_rule().

Here is the caller graph for this function:

void terrain_builder::rotate_rule ( building_rule rule,
int  angle,
const std::vector< std::string > &  angle_name 
) [private]

Rotates a template rule to a given angle.

Template rules are defined like normal rules, except that: * Flags and image filenames may contain template strings of the form

	 *  <code>@Rn</code>, n being a number from 0 to 5.
	 *

* The rule contains the rotations=r0,r1,r2,r3,r4,r5, with r0 to r5 being strings describing the 6 different positions, typically, n, ne, se, s, sw, and nw (but maybe anything else.)

A template rule will generate 6 rules, which are similar to the template, except that:

* The map of constraints ( [tile]s ) of this rule will be rotated by an angle, of 0 to 5 pi / 6

* On the rule which is rotated to 0rad, the template strings

	 *    @R0, @R1, @R2, @R3, @R4, @R5,
	 *

will be replaced by the corresponding r0, r1, r2, r3, r4, r5 variables given in the rotations= element.

* On the rule which is rotated to pi/3 rad, the template strings

	 *    @R0, @R1, @R2 etc.
	 *

will be replaced by the corresponding r1, r2, r3, r4, r5, r0 (note the shift in indices).

* On the rule rotated 2pi/3, those will be replaced by r2, r3, r4, r5, r0, r1 and so on.

Definition at line 536 of file builder.cpp.

References terrain_builder::building_rule::constraints, ERR_NG, map_location::legacy_sum_assign(), terrain_builder::terrain_constraint::loc, replace_rotate_tokens(), rotate(), map_location::x, and map_location::y.

Referenced by add_rotated_rules().

Here is the call graph for this function:

Here is the caller graph for this function:

bool terrain_builder::rule_matches ( const building_rule rule,
const map_location loc,
const terrain_constraint type_checked 
) const [private]

Checks whether a rule matches a given location in the map.

Parameters:
rule The rule to check.
loc The location in the map where we want to check whether the rule matches.
type_checked The constraint which we already know that its terrain types matches.

Definition at line 914 of file builder.cpp.

References terrain_builder::building_rule::constraints, terrain_builder::building_rule::get_hash(), get_noise(), terrain_builder::terrain_constraint::has_flag, map_location::legacy_sum(), terrain_builder::terrain_constraint::loc, terrain_builder::building_rule::location_constraints, map(), terrain_builder::terrain_constraint::no_flag, terrain_builder::tilemap::on_map(), terrain_builder::building_rule::probability, terrain_matches(), terrain_builder::terrain_constraint::terrain_types_match, tile_map_, and map_location::valid().

Referenced by build_terrains().

Here is the call graph for this function:

Here is the caller graph for this function:

void terrain_builder::set_terrain_rules_cfg ( const config cfg  )  [static]

Set the config where we will parse the global terrain rules.

This also flushes the terrain rules cache.

Parameters:
cfg The main grame configuration object, where the [terrain_graphics] rule reside.

Definition at line 199 of file builder.cpp.

References building_rules_, and rules_cfg_.

Referenced by game_controller::load_game_cfg().

Here is the caller graph for this function:

bool terrain_builder::start_animation ( building_rule rule  )  [private]

Starts the animation on a rule.

Parameters:
rule The rule on which ot start animations
Returns:
true
bool terrain_builder::terrain_matches ( t_translation::t_terrain  tcode,
const t_translation::t_match terrain 
) const [inline, private]

Checks whether a terrain code matches a given list of terrain tcodes.

Parameters:
tcode The terrain code to check
terrain The terrain match structure which to check the terrain. See previous definition for more details.
Returns:
returns true if "tcode" matches the list or the list is empty, else false.

Definition at line 738 of file builder.hpp.

References t_translation::t_match::is_empty, and terrain_matches().

Here is the call graph for this function:

bool terrain_builder::terrain_matches ( t_translation::t_terrain  tcode,
const t_translation::t_list terrains 
) const [inline, private]

Checks whether a terrain code matches a given list of terrain codes.

Parameters:
tcode The terrain to check
terrains The terrain list agains which to check the terrain. May contain the metacharacters

  • '*' STAR, meaning "all terrains"
  • '!' NOT, meaning "all terrains except those present in the list."
Returns:
returns true if "tcode" matches the list or the list is empty, else false.

Definition at line 725 of file builder.hpp.

Referenced by build_terrains(), rule_matches(), and terrain_matches().

Here is the caller graph for this function:

bool terrain_builder::update_animation ( const map_location loc  ) 

Updates the animation at a given tile.

Returns true if something has changed, and must be redrawn.

Parameters:
loc the location to update
Return values:
true,: this tile must be redrawn.

Definition at line 244 of file builder.cpp.

References terrain_builder::tile::images_background, terrain_builder::tile::images_foreground, animated< T, T_void_value >::need_update(), terrain_builder::tilemap::on_map(), tile_map_, and animated< T, T_void_value >::update_last_draw_time().

Here is the call graph for this function:


Member Data Documentation

Parsed terrain rules.

Cached between instances

Definition at line 791 of file builder.hpp.

Referenced by build_terrains(), flush_local_rules(), parse_config(), set_terrain_rules_cfg(), and terrain_builder().

const unsigned int terrain_builder::DUMMY_HASH = 0 [static]

Definition at line 71 of file builder.hpp.

Referenced by terrain_builder::building_rule::get_hash().

const gamemap* terrain_builder::map_ [private]

A pointer to the gamemap class used in the current level.

Definition at line 771 of file builder.hpp.

Referenced by change_map(), and map().

const config * terrain_builder::rules_cfg_ = NULL [static, private]

Config used to parse global terrain rules.

Definition at line 794 of file builder.hpp.

Referenced by set_terrain_rules_cfg(), and terrain_builder().

A map representing all locations whose terrain is of a given type.

Definition at line 788 of file builder.hpp.

Referenced by build_terrains(), rebuild_all(), and reload_map().

The tile_map_ for the current level, which is filled by the build_terrains_ method to contain "tiles" representing images attached to each tile.

Definition at line 778 of file builder.hpp.

Referenced by apply_rule(), get_terrain_at(), get_tile(), rebuild_all(), rebuild_terrain(), reload_map(), rule_matches(), and update_animation().

const int terrain_builder::TILEWIDTH = 72 [static]

The tile width used when using basex and basey.

This is not, necessarily, the tile width in pixels, this is totally arbitrary. However, it will be set to 72 for convenience.

Definition at line 62 of file builder.hpp.

Referenced by add_constraints(), add_images_from_config(), and rotate().

const int terrain_builder::UNITPOS = 36 + 18 [static]

The position of unit graphics in a tile.

Graphics whose y position is below this value are considered background for this tile; graphics whose y position is above this value are considered foreground.

Definition at line 69 of file builder.hpp.

Referenced by terrain_builder::rule_image::is_background().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated by doxygen 1.7.1 on Thu Feb 9 2012 01:07:49 for The Battle for Wesnoth
Gna! | Forum | Wiki | CIA | devdocs