Freeciv21
Develop your civilization from humble roots to a global empire
freeciv::layer Class Reference

A layer when drawing the map. More...

#include <layer.h>

+ Inheritance diagram for freeciv::layer:
+ Collaboration diagram for freeciv::layer:

Public Member Functions

 layer (struct tileset *ts, mapview_layer layer)
 Constructor. More...
 
virtual ~layer ()=default
 Destructor. More...
 
virtual std::vector< drawn_spritefill_sprite_array (const tile *ptile, const tile_edge *pedge, const tile_corner *pcorner, const unit *punit) const
 Returns the list of sprites drawn by this layer somewhere on the map. More...
 
virtual void load_sprites ()
 Loads all sprites that do not depend on the ruleset. More...
 
virtual void initialize_player (const player *player)
 Initializes data specific to one player. More...
 
virtual void free_player (int player_id)
 Frees data initialized by initialize_player. More...
 
virtual void initialize_city_style (const citystyle &style, int index)
 Initializes data for a city style. More...
 
virtual void initialize_extra (const extra_type *extra, const QString &tag, extrastyle_id style)
 Initializes extra-specific data. More...
 
virtual void initialize_terrain (const terrain *terrain)
 Initializes terrain-specific data. More...
 
virtual void reset_ruleset ()
 Resets cached data that depends on the ruleset. More...
 
mapview_layer type () const
 

Protected Member Functions

struct tilesettileset () const
 
bool do_draw_unit (const tile *ptile, const unit *punit) const
 Whether a unit should be drawn. More...
 
bool solid_background (const tile *ptile, const unit *punit, const city *pcity) const
 Whether a solid background should be drawn on a tile instead of its terrain. More...
 
QPixmap * load_sprite (const QStringList &possible_names, bool required=false, bool verbose=true) const
 Shortcut to load a sprite from the tileset. More...
 

Private Attributes

struct tilesetm_ts
 
mapview_layer m_layer
 

Detailed Description

A layer when drawing the map.

Definition at line 153 of file layer.h.

Constructor & Destructor Documentation

◆ layer()

freeciv::layer::layer ( struct tileset ts,
mapview_layer  layer 
)
inline

Constructor.

Definition at line 158 of file layer.h.

◆ ~layer()

virtual freeciv::layer::~layer ( )
virtualdefault

Destructor.

Member Function Documentation

◆ do_draw_unit()

bool freeciv::layer::do_draw_unit ( const tile ptile,
const unit punit 
) const
protected

Whether a unit should be drawn.

Parameters
ptileThe tile where to draw (can be null)
punitThe unit that should be drawn (can be null)

Definition at line 27 of file layer.cpp.

Referenced by freeciv::layer_background::fill_sprite_array(), freeciv::layer_units::fill_sprite_array(), and solid_background().

◆ fill_sprite_array()

virtual std::vector<drawn_sprite> freeciv::layer::fill_sprite_array ( const tile ptile,
const tile_edge pedge,
const tile_corner pcorner,
const unit punit 
) const
inlinevirtual

◆ free_player()

virtual void freeciv::layer::free_player ( int  player_id)
inlinevirtual

Frees data initialized by initialize_player.

Note that this takes the player ID and not a pointer to the player; the player may have never existed.

See also
initialize_player

Reimplemented in freeciv::layer_grid, and freeciv::layer_background.

Definition at line 202 of file layer.h.

◆ initialize_city_style()

virtual void freeciv::layer::initialize_city_style ( const citystyle style,
int  index 
)
inlinevirtual

Initializes data for a city style.

Reimplemented in freeciv::layer_city.

Definition at line 207 of file layer.h.

◆ initialize_extra()

virtual void freeciv::layer::initialize_extra ( const extra_type extra,
const QString &  tag,
extrastyle_id  style 
)
inlinevirtual

Initializes extra-specific data.

This is called after terrains have been loaded, and only for extras with a graphic (graphic_str != none).

Reimplemented in freeciv::layer_water, freeciv::layer_special, freeciv::layer_roads, and freeciv::layer_abstract_activities.

Definition at line 217 of file layer.h.

◆ initialize_player()

virtual void freeciv::layer::initialize_player ( const player player)
inlinevirtual

Initializes data specific to one player.

This allows to cache tiles depending on the actual players in a game.

See also
free_player

Reimplemented in freeciv::layer_grid, and freeciv::layer_background.

Definition at line 193 of file layer.h.

◆ initialize_terrain()

virtual void freeciv::layer::initialize_terrain ( const terrain terrain)
inlinevirtual

Initializes terrain-specific data.

Reimplemented in freeciv::layer_terrain.

Definition at line 228 of file layer.h.

◆ load_sprite()

◆ load_sprites()

virtual void freeciv::layer::load_sprites ( )
inlinevirtual

◆ reset_ruleset()

virtual void freeciv::layer::reset_ruleset ( )
inlinevirtual

Resets cached data that depends on the ruleset.

Reimplemented in freeciv::layer_water, freeciv::layer_special, freeciv::layer_roads, freeciv::layer_city, and freeciv::layer_abstract_activities.

Definition at line 236 of file layer.h.

◆ solid_background()

bool freeciv::layer::solid_background ( const tile ptile,
const unit punit,
const city pcity 
) const
protected

Whether a solid background should be drawn on a tile instead of its terrain.

Query this function to know whether you should refrain from drawing "terrain-like" sprites (terrain, darkness, water follow this setting).

Returns
true when the solid background is enabled and a unit or city is drawn on the tile.
Parameters
ptileThe tile where to draw (can be null)
punitThe unit that could be drawn (can be null)
pcityThe city that could be drawn (can be null)

Definition at line 65 of file layer.cpp.

Referenced by freeciv::layer_darkness::fill_sprite_array(), freeciv::layer_terrain::fill_sprite_array(), and freeciv::layer_water::fill_sprite_array().

◆ tileset()

struct tileset* freeciv::layer::tileset ( ) const
inlineprotected

Definition at line 241 of file layer.h.

Referenced by freeciv::layer_units::add_automated_sprite(), freeciv::layer_units::add_orders_sprite(), freeciv::layer_terrain::add_tag(), freeciv::layer_terrain::create_matching_group(), freeciv::layer_background::create_player_sprite(), freeciv::layer_terrain::enable_blending(), freeciv::layer_roads::fill_all_combined(), freeciv::layer_roads::fill_all_separate(), freeciv::layer_terrain::fill_blending_sprite_array(), freeciv::layer_roads::fill_corners(), freeciv::layer_roads::fill_parity_combined(), freeciv::layer_background::fill_sprite_array(), freeciv::layer_base_flags::fill_sprite_array(), freeciv::layer_city::fill_sprite_array(), freeciv::layer_city_size::fill_sprite_array(), freeciv::layer_darkness::fill_sprite_array(), freeciv::layer_editor::fill_sprite_array(), freeciv::layer_fog::fill_sprite_array(), freeciv::layer_goto::fill_sprite_array(), freeciv::layer_grid::fill_sprite_array(), freeciv::layer_infrawork::fill_sprite_array(), freeciv::layer_overlays::fill_sprite_array(), freeciv::layer_terrain::fill_sprite_array(), freeciv::layer_units::fill_sprite_array(), freeciv::layer_water::fill_sprite_array(), freeciv::layer_workertask::fill_sprite_array(), freeciv::layer_city::fill_sprite_array_no_flag(), freeciv::layer_terrain::fill_terrain_sprite_array(), freeciv::layer_terrain::group(), freeciv::layer_roads::initialize_all_combined(), freeciv::layer_roads::initialize_all_separate(), freeciv::layer_terrain::initialize_blending(), freeciv::layer_terrain::initialize_cell_corner_match_full(), freeciv::layer_terrain::initialize_cell_corner_match_none(), freeciv::layer_terrain::initialize_cell_corner_match_pair(), freeciv::layer_terrain::initialize_cell_corner_match_same(), freeciv::layer_terrain::initialize_cell_hex_corner(), freeciv::layer_terrain::initialize_cell_whole_match_none(), freeciv::layer_terrain::initialize_cell_whole_match_same(), freeciv::layer_city::initialize_city_style(), freeciv::layer_roads::initialize_corners(), freeciv::layer_special::initialize_extra(), freeciv::layer_water::initialize_extra(), freeciv::layer_roads::initialize_parity_combined(), freeciv::layer_background::initialize_player(), freeciv::layer_grid::initialize_player(), freeciv::layer_terrain::initialize_terrain(), freeciv::layer_city::load_city_size_sprites(), load_sprite(), freeciv::layer_city_size::load_sprites(), freeciv::layer_darkness::load_sprites(), freeciv::layer_editor::load_sprites(), freeciv::layer_goto::load_sprites(), freeciv::layer_grid::load_sprites(), freeciv::layer_overlays::load_sprites(), freeciv::layer_units::load_sprites(), and freeciv::layer_special::set_sprite().

◆ type()

Member Data Documentation

◆ m_layer

mapview_layer freeciv::layer::m_layer
private

Definition at line 252 of file layer.h.

Referenced by type().

◆ m_ts

struct tileset* freeciv::layer::m_ts
private

Definition at line 251 of file layer.h.

Referenced by tileset().