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

#include <layer_grid.h>

+ Inheritance diagram for freeciv::layer_grid:
+ Collaboration diagram for freeciv::layer_grid:

Public Member Functions

 layer_grid (struct tileset *ts, mapview_layer layer)
 
virtual ~layer_grid ()=default
 
void load_sprites () override
 Loads all sprites that do not depend on the ruleset. More...
 
std::vector< drawn_spritefill_sprite_array (const tile *ptile, const tile_edge *pedge, const tile_corner *pcorner, const unit *punit) const override
 Fill in the grid sprites for the given tile, city, and unit. More...
 
void initialize_player (const player *player) override
 Initializes border data for a player. More...
 
void free_player (int player_id) override
 Frees border data for a player. More...
 
- Public Member Functions inherited from freeciv::layer
 layer (struct tileset *ts, mapview_layer layer)
 Constructor. More...
 
virtual ~layer ()=default
 Destructor. 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
 

Private Types

using edge_data = std::array< QPixmap *, 2 >
 
using unique_edge_data = std::array< std::unique_ptr< QPixmap >, 2 >
 

Private Attributes

std::array< QPixmap *, EDGE_COUNTm_city = {nullptr}
 
std::array< QPixmap *, EDGE_COUNTm_main = {nullptr}
 
std::array< QPixmap *, EDGE_COUNTm_selected = {nullptr}
 
std::array< QPixmap *, EDGE_COUNTm_worked = {nullptr}
 
QPixmap * m_unavailable
 
QPixmap * m_nonnative
 
std::array< edge_data, EDGE_COUNTm_basic_borders
 
std::array< std::array< unique_edge_data, EDGE_COUNT >, MAX_NUM_PLAYER_SLOTSm_borders
 Indices: [player][edge][in/out]. More...
 

Additional Inherited Members

- Protected Member Functions inherited from freeciv::layer
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...
 

Detailed Description

Definition at line 18 of file layer_grid.h.

Member Typedef Documentation

◆ edge_data

using freeciv::layer_grid::edge_data = std::array<QPixmap *, 2>
private

Definition at line 40 of file layer_grid.h.

◆ unique_edge_data

using freeciv::layer_grid::unique_edge_data = std::array<std::unique_ptr<QPixmap>, 2>
private

Definition at line 45 of file layer_grid.h.

Constructor & Destructor Documentation

◆ layer_grid()

freeciv::layer_grid::layer_grid ( struct tileset ts,
mapview_layer  layer 
)
explicit

Definition at line 21 of file layer_grid.cpp.

◆ ~layer_grid()

virtual freeciv::layer_grid::~layer_grid ( )
virtualdefault

Member Function Documentation

◆ fill_sprite_array()

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

Fill in the grid sprites for the given tile, city, and unit.

Reimplemented from freeciv::layer.

Definition at line 105 of file layer_grid.cpp.

◆ free_player()

void freeciv::layer_grid::free_player ( int  player_id)
overridevirtual

Frees border data for a player.

Reimplemented from freeciv::layer.

Definition at line 92 of file layer_grid.cpp.

◆ initialize_player()

void freeciv::layer_grid::initialize_player ( const player player)
overridevirtual

Initializes border data for a player.

Reimplemented from freeciv::layer.

Definition at line 67 of file layer_grid.cpp.

◆ load_sprites()

void freeciv::layer_grid::load_sprites ( )
overridevirtual

Loads all sprites that do not depend on the ruleset.

Reimplemented from freeciv::layer.

Definition at line 26 of file layer_grid.cpp.

Member Data Documentation

◆ m_basic_borders

std::array<edge_data, EDGE_COUNT> freeciv::layer_grid::m_basic_borders
private
Initial value:
= {
edge_data{nullptr, nullptr}}
std::array< QPixmap *, 2 > edge_data
Definition: layer_grid.h:40

Definition at line 41 of file layer_grid.h.

Referenced by initialize_player(), and load_sprites().

◆ m_borders

std::array<std::array<unique_edge_data, EDGE_COUNT>, MAX_NUM_PLAYER_SLOTS> freeciv::layer_grid::m_borders
private

Indices: [player][edge][in/out].

Definition at line 48 of file layer_grid.h.

Referenced by fill_sprite_array(), free_player(), and initialize_player().

◆ m_city

std::array<QPixmap *, EDGE_COUNT> freeciv::layer_grid::m_city = {nullptr}
private

Definition at line 34 of file layer_grid.h.

Referenced by fill_sprite_array(), and load_sprites().

◆ m_main

std::array<QPixmap *, EDGE_COUNT> freeciv::layer_grid::m_main = {nullptr}
private

Definition at line 34 of file layer_grid.h.

Referenced by fill_sprite_array(), and load_sprites().

◆ m_nonnative

QPixmap * freeciv::layer_grid::m_nonnative
private

Definition at line 37 of file layer_grid.h.

Referenced by fill_sprite_array(), and load_sprites().

◆ m_selected

std::array<QPixmap *, EDGE_COUNT> freeciv::layer_grid::m_selected = {nullptr}
private

Definition at line 35 of file layer_grid.h.

Referenced by fill_sprite_array(), and load_sprites().

◆ m_unavailable

QPixmap* freeciv::layer_grid::m_unavailable
private

Definition at line 37 of file layer_grid.h.

Referenced by fill_sprite_array(), and load_sprites().

◆ m_worked

std::array<QPixmap *, EDGE_COUNT> freeciv::layer_grid::m_worked = {nullptr}
private

Definition at line 36 of file layer_grid.h.

Referenced by fill_sprite_array(), and load_sprites().