Freeciv21
Develop your civilization from humble roots to a global empire
layer_water.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 
13 namespace freeciv {
14 
15 class layer_water : public layer {
16  struct extra_data {
17  using terrain_data = std::array<QPixmap *, MAX_INDEX_CARDINAL>;
18 
19  const extra_type *extra;
20  std::vector<terrain_data> sprites;
21  };
22 
23 public:
24  explicit layer_water(struct tileset *ts);
25  virtual ~layer_water() = default;
26 
27  void initialize_extra(const extra_type *extra, const QString &tag,
28  extrastyle_id style) override;
29 
30  std::vector<drawn_sprite>
31  fill_sprite_array(const tile *ptile, const tile_edge *pedge,
32  const tile_corner *pcorner,
33  const unit *punit) const override;
34 
35  void reset_ruleset() override;
36 
37 private:
38  void fill_irrigation_sprite_array(const struct tileset *t,
39  std::vector<drawn_sprite> &sprs,
40  bv_extras textras,
41  bv_extras *textras_near,
42  const terrain *pterrain,
43  const city *pcity) const;
44 
45  std::vector<extra_data> m_cardinals, m_outlets, m_rivers;
46 };
47 
48 } // namespace freeciv
virtual ~layer_water()=default
std::vector< extra_data > m_cardinals
Definition: layer_water.h:45
void reset_ruleset() override
Resets cached data that depends on the ruleset.
layer_water(struct tileset *ts)
Definition: layer_water.cpp:15
void initialize_extra(const extra_type *extra, const QString &tag, extrastyle_id style) override
Collects all extras to be drawn (the ones with ESTYLE_CARDINALS or ESTYLE_RIVER).
Definition: layer_water.cpp:24
void fill_irrigation_sprite_array(const struct tileset *t, std::vector< drawn_sprite > &sprs, bv_extras textras, bv_extras *textras_near, const terrain *pterrain, const city *pcity) const
Fill in the farmland/irrigation sprite for the tile.
std::vector< extra_data > m_outlets
Definition: layer_water.h:45
std::vector< drawn_sprite > fill_sprite_array(const tile *ptile, const tile_edge *pedge, const tile_corner *pcorner, const unit *punit) const override
Returns the list of sprites drawn by this layer somewhere on the map.
std::vector< extra_data > m_rivers
Definition: layer_water.h:45
A layer when drawing the map.
Definition: layer.h:153
Definition: path.cpp:10
Definition: city.h:291
std::vector< terrain_data > sprites
Definition: layer_water.h:20
std::array< QPixmap *, MAX_INDEX_CARDINAL > terrain_data
Definition: layer_water.h:17
Definition: tile.h:42
Definition: unit.h:134