The Battle for Wesnoth  1.13.10+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
terrain_builder Class Reference

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

#include <builder.hpp>

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. More...
 
typedef std::vector< rule_imagerule_imagelist
 A shorthand notation for a vector of rule_images. More...
 

Public Member Functions

 terrain_builder (const config &level, const gamemap *map, const std::string &offmap_image)
 Constructor for the terrain_builder class. More...
 
const gamemapmap () const
 
void reload_map ()
 Updates internals that cache map size. More...
 
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. More...
 
bool update_animation (const map_location &loc)
 Updates the animation at a given tile. More...
 
void rebuild_terrain (const map_location &loc)
 Performs a "quick-rebuild" of the terrain in a given location. More...
 
void rebuild_all ()
 Performs a complete rebuild of the list of terrain graphics attached to a map. More...
 
void rebuild_cache_all ()
 
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. More...
 

Static Public Attributes

static const int UNITPOS = 36 + 18
 The position of unit graphics in a tile. More...
 
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. More...
 
typedef std::multiset
< building_rule
building_ruleset
 A set of building rules. More...
 
typedef std::multimap< int,
map_location
anchormap
 
typedef std::map
< t_translation::terrain_code,
std::vector< map_location > > 
terrain_by_type_map
 Shorthand typedef for a map associating a list of locations to a terrain type. More...
 

Private Member Functions

bool load_images (building_rule &rule)
 Load images and tests for validity of a rule. More...
 
bool start_animation (building_rule &rule)
 Starts the animation on a rule. More...
 
void rotate (terrain_constraint &constraint, int angle)
 "Rotates" a constraint from a rule. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void rotate_rule (building_rule &rule, int angle, const std::vector< std::string > &angle_name)
 Rotates a template rule to a given angle. More...
 
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. More...
 
terrain_constraintadd_constraints (constraint_set &constraints, const map_location &loc, const t_translation::ter_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. More...
 
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. More...
 
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. More...
 
void add_rule (building_ruleset &rules, building_rule &rule)
 Adds a rule to a ruleset. More...
 
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). More...
 
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. More...
 
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. More...
 
void flush_local_rules ()
 
bool terrain_matches (const t_translation::terrain_code &tcode, const t_translation::ter_list &terrains) const
 Checks whether a terrain code matches a given list of terrain codes. More...
 
bool terrain_matches (const t_translation::terrain_code &tcode, const t_translation::ter_match &terrain) const
 Checks whether a terrain code matches a given list of terrain tcodes. More...
 
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. More...
 
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. More...
 
void build_terrains ()
 Calculates the list of terrains, and fills the tile_map_ member, from the gamemap and the building_rules_. More...
 

Private Attributes

const int tilewidth_
 The tile width used when using basex and basey. More...
 
const gamemapmap_
 A pointer to the gamemap class used in the current level. More...
 
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. More...
 
terrain_by_type_map terrain_by_type_
 A map representing all locations whose terrain is of a given type. More...
 

Static Private Attributes

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

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 45 of file builder.hpp.

Member Typedef Documentation

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

Definition at line 706 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 520 of file builder.hpp.

The list of constraints attached to a terrain_graphics WML rule.

Definition at line 391 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 72 of file builder.hpp.

A shorthand notation for a vector of rule_images.

Definition at line 263 of file builder.hpp.

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

Definition at line 840 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 49 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
levelA level (scenario)-specific configuration file, containing scenario-specific [terrain_graphics] rules.
mapA properly-initialized gamemap object representing the current terrain map.
offmap_imageThe 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 244 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_.

Member Function Documentation

terrain_builder::terrain_constraint & terrain_builder::add_constraints ( terrain_builder::constraint_set constraints,
const map_location loc,
const t_translation::ter_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
constraintsThe constraint set to which to add the constraint.
locThe location of the constraint
typeThe list of terrains this constraint will match
global_imagesA configuration object containing [image] tags describing rule-global images.

Definition at line 744 of file builder.cpp.

References add_images_from_config(), c, terrain_builder::terrain_constraint::images, t_translation::ter_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().

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
constraintsThe constraint set to which to add the constraint.
locThe location of the constraint
cfgThe config object describing this constraint. Usually, a [tile] child of a [terrain_graphics] rule.
global_imagesA configuration object containing [image] tags describing rule-global images.

Definition at line 774 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_draw, terrain_builder::terrain_constraint::no_flag, terrain_builder::terrain_constraint::set_flag, utils::square_parenthetical_split(), and t_translation::WILDCARD.

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
imagesThe rule_imagelist into which to add the parsed images.
cfgThe WML configuration object to parse
globalWhether 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.
dxThe X coordinate of the constraint those images apply to, relative to the start of the rule. Only meaningful if global is set to false.
dyThe Y coordinate of the constraint those images apply to.

Definition at line 684 of file builder.cpp.

References config::child_range(), ERR_NG, name(), utils::split(), and tilewidth_.

Referenced by add_constraints().

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
imageThe filename of the image

Definition at line 993 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().

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
rulesThe ruleset into which to add the rules.
tplThe template rule
rotationsA comma-separated string containing the 6 values for replacing rotation template template strings
(@Rn) 

Definition at line 853 of file builder.cpp.

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

Referenced by parse_config().

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
rulesThe ruleset into which to add the rules.
ruleThe rule to add.

Definition at line 846 of file builder.cpp.

References load_images().

Referenced by add_rotated_rules().

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
ruleThe rule to apply
locThe location to which to apply the rule.

Definition at line 1074 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::terrain_constraint::images, terrain_builder::tile::images, legacy_sum(), terrain_builder::terrain_constraint::loc, terrain_builder::terrain_constraint::no_draw, terrain_builder::tilemap::on_map(), terrain_builder::terrain_constraint::set_flag, and tile_map_.

Referenced by build_terrains().

void terrain_builder::build_terrains ( )
private
void terrain_builder::change_map ( const gamemap m)

Definition at line 305 of file builder.cpp.

References map_, and reload_map().

void terrain_builder::flush_local_rules ( )
private

Definition at line 278 of file builder.cpp.

References building_rules_, and i.

Referenced by terrain_builder().

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
locThe location relative the the terrain map, where we ask for the image list
todThe string representing the current time-of day. Will be used if some images specify several time-of-day- related variants.
terrain_typeBACKGROUND 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 nullptr if there is none.

Definition at line 311 of file builder.cpp.

References BACKGROUND, 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_.

terrain_builder::tile * terrain_builder::get_tile ( const map_location loc)
bool terrain_builder::load_images ( building_rule rule)
private
const gamemap& terrain_builder::map ( ) const
inline
void terrain_builder::parse_config ( const config cfg,
bool  local = true 
)
private
void terrain_builder::parse_global_config ( const config cfg)
inlineprivate

Definition at line 752 of file builder.hpp.

References parse_config().

Referenced by add_off_map_rule(), and terrain_builder().

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
mapstringThe map vector to parse
brThe building rule into which to add the extracted constraints
anchorsA map where to put "anchors" extracted from the map.
global_imagesA config object representing the images defined as direct children of the [terrain_graphics] rule.

Definition at line 801 of file builder.cpp.

References add_constraints(), t_translation::terrain_code::base, terrain_builder::building_rule::constraints, t_translation::ter_map::data, ERR_NG, t_translation::ter_map::get(), t_translation::ter_map::h, map(), t_translation::NONE_TERRAIN, t_translation::terrain_code::overlay, t_translation::read_builder_map(), t_translation::STAR, t_translation::TB_DOT, t_translation::TB_STAR, gui2::terrain, t_translation::ter_map::w, and t_translation::write_terrain_code().

Referenced by parse_config().

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 387 of file builder.cpp.

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

void terrain_builder::rebuild_cache_all ( )

Definition at line 269 of file builder.cpp.

References gamemap::h(), map(), tile_map_, and gamemap::w().

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
locthe location where to rebuild terrains
Todo:
TODO: rename this function

Definition at line 357 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_.

void terrain_builder::reload_map ( )

Updates internals that cache map size.

This should be called when the map size has changed.

Definition at line 298 of file builder.cpp.

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

Referenced by change_map().

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
sthe string in which to do the replacement
anglethe angle for substituting the correct replacement.
replacementthe replacement strings.

Definition at line 578 of file builder.cpp.

References i.

Referenced by replace_rotate_tokens(), and rotate_rule().

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
imagethe rule_image in which to do the replacement.
anglethe angle for substituting the correct replacement.
replacementthe replacement strings.

Definition at line 597 of file builder.cpp.

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

void terrain_builder::replace_rotate_tokens ( rule_image_variant variant,
int  angle,
const std::vector< std::string > &  replacement 
)
inlineprivate

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
variantthe rule_variant_image in which to do the replacement.
anglethe angle for substituting the correct replacement.
replacementthe replacement strings.

Definition at line 592 of file builder.hpp.

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

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
listthe rule_imagelist in which to do the replacement.
anglethe angle for substituting the correct replacement.
replacementthe replacement strings.

Definition at line 604 of file builder.cpp.

References replace_rotate_tokens().

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
rulethe building_rule in which to do the replacement.
anglethe angle for substituting the correct replacement.
replacementthe replacement strings.

Definition at line 612 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.

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
constraintA template constraint to rotate
angleAn int, from 0 to 5, representing the rotation angle.

Definition at line 495 of file builder.cpp.

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

Referenced by rotate_rule().

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 631 of file builder.cpp.

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

Referenced by add_rotated_rules().

bool terrain_builder::rule_matches ( const building_rule rule,
const map_location loc,
const terrain_constraint type_checked 
) const
private
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
cfgThe main grame configuration object, where the [terrain_graphics] rule reside.

Definition at line 289 of file builder.cpp.

References building_rules_, rules_cfg_, and swap().

Referenced by game_config_manager::load_game_config().

bool terrain_builder::start_animation ( building_rule rule)
private

Starts the animation on a rule.

Parameters
ruleThe rule on which ot start animations
Returns
true
bool terrain_builder::terrain_matches ( const t_translation::terrain_code tcode,
const t_translation::ter_list terrains 
) const
inlineprivate

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

Parameters
tcodeThe terrain to check
terrainsThe 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 778 of file builder.hpp.

References t_translation::terrain_matches().

Referenced by build_terrains(), and rule_matches().

bool terrain_builder::terrain_matches ( const t_translation::terrain_code tcode,
const t_translation::ter_match terrain 
) const
inlineprivate

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

Parameters
tcodeThe terrain code to check
terrainThe 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 793 of file builder.hpp.

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

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
locthe location to update
Return values
truethis tile must be redrawn.

Definition at line 333 of file builder.cpp.

References a, 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().

Member Data Documentation

terrain_builder::building_ruleset terrain_builder::building_rules_
staticprivate

Parsed terrain rules.

This file holds the terrain_builder implementation.

Cached between instances

Definition at line 848 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 67 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 828 of file builder.hpp.

Referenced by change_map(), and map().

const config * terrain_builder::rules_cfg_ = nullptr
staticprivate

Config used to parse global terrain rules.

Definition at line 851 of file builder.hpp.

Referenced by set_terrain_rules_cfg(), and terrain_builder().

terrain_by_type_map terrain_builder::terrain_by_type_
private

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

Definition at line 845 of file builder.hpp.

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

tilemap terrain_builder::tile_map_
private

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 835 of file builder.hpp.

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

const int terrain_builder::tilewidth_
private

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 386 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 65 of file builder.hpp.

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


The documentation for this class was generated from the following files: