The Battle for Wesnoth  1.17.21+dev
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014 - 2023
3  by Chris Beck <>
4  Part of the Battle for Wesnoth Project
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
13  See the COPYING file for more details.
14 */
16 /**
17  *
18  * This wrapper class should be held by the display object when it needs to draw a unit.
19  * The purpose of this is to improve encapsulation -- other parts of the engine like AI
20  * don't need to be exposed to the unit drawing code, and encapsulation like this will
21  * help us to reduce unnecessary includes.
22  *
23  **/
25 #pragma once
27 #include "map/location.hpp"
28 #include "sdl/rect.hpp"
29 #include "utils/math.hpp"
31 #include <map>
32 #include <vector>
34 class display;
35 class display_context;
36 class gamemap;
37 namespace halo { class manager; }
38 class team;
39 class unit;
41 struct color_t;
42 struct SDL_Rect;
43 struct point;
44 class surface;
47 {
48 public:
49  explicit unit_drawer(display & thedisp);
51 private:
54  const gamemap & map;
55  const std::vector<team> & teams;
57  std::size_t viewing_team;
58  std::size_t playing_team;
65  double zoom_factor;
66  std::set<map_location> units_that_can_reach_goal;
68  int hex_size;
71 public:
72  /** draw a unit. */
73  void redraw_unit(const unit & u) const;
74 };
Abstract class for exposing game data that doesn't depend on the GUI, however which for historical re...
Sort-of-Singleton that many classes, both GUI and non-GUI, use to access the game data.
Definition: display.hpp:87
Encapsulates the map of the game.
Definition: map.hpp:172
This class stores all the data for a single 'side' (in game nomenclature).
Definition: team.hpp:76
const team & viewing_team_ref
Definition: drawer.hpp:59
const gamemap & map
Definition: drawer.hpp:54
double zoom_factor
Definition: drawer.hpp:65
void redraw_unit(const unit &u) const
draw a unit.
Definition: drawer.cpp:167
const std::vector< team > & teams
Definition: drawer.hpp:55
const display_context & dc
Definition: drawer.hpp:53
bool show_everything
Definition: drawer.hpp:62
const team & playing_team_ref
Definition: drawer.hpp:60
halo::manager & halo_man
Definition: drawer.hpp:56
std::size_t viewing_team
Definition: drawer.hpp:57
display & disp
Definition: drawer.hpp:52
std::set< map_location > units_that_can_reach_goal
Definition: drawer.hpp:66
int hex_size
Definition: drawer.hpp:68
map_location sel_hex
Definition: drawer.hpp:63
int hex_size_by_2
Definition: drawer.hpp:69
unit_drawer(display &thedisp)
Definition: drawer.cpp:139
std::size_t playing_team
Definition: drawer.hpp:58
map_location mouse_hex
Definition: drawer.hpp:64
bool is_blindfolded
Definition: drawer.hpp:61
This class represents a single unit of a specific type.
Definition: unit.hpp:134
General math utility functions.
Definition: display.hpp:45
Contains the SDL_Rect helper code.
The basic class for representing 8-bit RGB or RGBA colour values.
Definition: color.hpp:59
Encapsulates the map of the game.
Definition: location.hpp:38
Holds a 2D point.
Definition: point.hpp:25