Freeciv21
Develop your civilization from humble roots to a global empire
layer_grid.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: GPLv3-or-later
2 // SPDX-FileCopyrightText: Freeciv authors
3 // SPDX-FileCopyrightText: Freeciv21 authors
4 // SPDX-FileCopyrightText: Louis Moureaux <m_louis30@yahoo.com>
5 
6 #pragma once
7 
8 #include "fc_types.h"
9 #include "layer.h"
10 
11 #include <array>
12 #include <memory>
13 
14 class QPixmap;
15 
16 namespace freeciv {
17 
18 class layer_grid : public layer {
19 public:
20  explicit layer_grid(struct tileset *ts, mapview_layer layer);
21  virtual ~layer_grid() = default;
22 
23  void load_sprites() override;
24 
25  std::vector<drawn_sprite>
26  fill_sprite_array(const tile *ptile, const tile_edge *pedge,
27  const tile_corner *pcorner,
28  const unit *punit) const override;
29 
30  void initialize_player(const player *player) override;
31  void free_player(int player_id) override;
32 
33 private:
34  std::array<QPixmap *, EDGE_COUNT> m_city = {nullptr}, m_main = {nullptr},
35  m_selected = {nullptr},
36  m_worked = {nullptr};
38 
39  // Without player colors
40  using edge_data = std::array<QPixmap *, 2>;
41  std::array<edge_data, EDGE_COUNT> m_basic_borders = {
42  edge_data{nullptr, nullptr}};
43 
44  // With player colors
45  using unique_edge_data = std::array<std::unique_ptr<QPixmap>, 2>;
47  std::array<std::array<unique_edge_data, EDGE_COUNT>, MAX_NUM_PLAYER_SLOTS>
49 };
50 
51 } // namespace freeciv
void load_sprites() override
Loads all sprites that do not depend on the ruleset.
Definition: layer_grid.cpp:26
QPixmap * m_unavailable
Definition: layer_grid.h:37
std::array< QPixmap *, 2 > edge_data
Definition: layer_grid.h:40
std::array< QPixmap *, EDGE_COUNT > m_selected
Definition: layer_grid.h:35
void initialize_player(const player *player) override
Initializes border data for a player.
Definition: layer_grid.cpp:67
std::array< std::array< unique_edge_data, EDGE_COUNT >, MAX_NUM_PLAYER_SLOTS > m_borders
Indices: [player][edge][in/out].
Definition: layer_grid.h:48
std::array< std::unique_ptr< QPixmap >, 2 > unique_edge_data
Definition: layer_grid.h:45
QPixmap * m_nonnative
Definition: layer_grid.h:37
void free_player(int player_id) override
Frees border data for a player.
Definition: layer_grid.cpp:92
std::array< edge_data, EDGE_COUNT > m_basic_borders
Definition: layer_grid.h:41
std::vector< drawn_sprite > fill_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.
Definition: layer_grid.cpp:105
std::array< QPixmap *, EDGE_COUNT > m_main
Definition: layer_grid.h:34
std::array< QPixmap *, EDGE_COUNT > m_worked
Definition: layer_grid.h:36
std::array< QPixmap *, EDGE_COUNT > m_city
Definition: layer_grid.h:34
layer_grid(struct tileset *ts, mapview_layer layer)
Definition: layer_grid.cpp:21
virtual ~layer_grid()=default
A layer when drawing the map.
Definition: layer.h:153
#define MAX_NUM_PLAYER_SLOTS
Definition: fc_types.h:24
Definition: path.cpp:10
Definition: player.h:231
Definition: tile.h:42
Definition: unit.h:134