Freeciv21
Develop your civilization from humble roots to a global empire
layer_fog.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 "layer.h"
9 #include "layer_darkness.h"
10 
11 #include <QPixmap>
12 
13 #include <array>
14 
15 namespace freeciv {
16 
17 #define SPECENUM_NAME fog_style
18 // Fog is automatically appended by the code.
19 #define SPECENUM_VALUE0 FOG_AUTO
20 #define SPECENUM_VALUE0NAME "Auto"
21 // A single fog sprite is provided by the tileset (tx.fog).
22 #define SPECENUM_VALUE1 FOG_SPRITE
23 #define SPECENUM_VALUE1NAME "Sprite"
24 // No fog, or fog derived from darkness style.
25 #define SPECENUM_VALUE2 FOG_DARKNESS
26 #define SPECENUM_VALUE2NAME "Darkness"
27 #include "specenum_gen.h"
28 
29 class layer_fog : public layer {
30 public:
31  explicit layer_fog(struct tileset *ts, fog_style style,
32  darkness_style darkness);
33  virtual ~layer_fog() = default;
34 
35  void load_sprites() override;
36 
37  std::vector<drawn_sprite>
38  fill_sprite_array(const tile *ptile, const tile_edge *pedge,
39  const tile_corner *pcorner,
40  const unit *punit) const override;
41 
42 private:
43  fog_style m_style;
44  darkness_style m_darkness;
45  QPixmap *m_fog_sprite;
46  std::vector<QPixmap *> m_darkness_sprites; //< For darkness style = CORNER
47 };
48 
49 } // namespace freeciv
void load_sprites() override
Loads all sprites that do not depend on the ruleset.
Definition: layer_fog.cpp:20
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.
Definition: layer_fog.cpp:45
QPixmap * m_fog_sprite
Definition: layer_fog.h:45
layer_fog(struct tileset *ts, fog_style style, darkness_style darkness)
Definition: layer_fog.cpp:14
darkness_style m_darkness
Definition: layer_fog.h:44
fog_style m_style
Definition: layer_fog.h:43
virtual ~layer_fog()=default
std::vector< QPixmap * > m_darkness_sprites
Definition: layer_fog.h:46
A layer when drawing the map.
Definition: layer.h:153
Definition: path.cpp:10
Definition: tile.h:42
Definition: unit.h:134