The Battle for Wesnoth 1.21.0-dev
 
Loading...
Searching...
No Matches
team.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2003 - 2025
3 by David White <dave@whitevine.net>
4 Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5
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,
11 but WITHOUT ANY WARRANTY.
12
13 See the COPYING file for more details.
14*/
15
16#pragma once
17
18#include "color_range.hpp"
19#include "config.hpp"
20#include "defeat_condition.hpp"
21#include "game_events/fwd.hpp"
22#include "map/location.hpp"
24#include "side_controller.hpp"
27
28#include <chrono>
29#include <set>
30
31#include <boost/dynamic_bitset.hpp>
32
33class game_data;
34class gamemap;
35struct color_t;
36
37
38namespace wb {
39 class side_actions;
40}
41
43public:
44 shroud_map() : enabled_(false), data_() {}
45
46 void place(int x, int y);
47 bool clear(int x, int y);
48 void reset();
49
50 bool value(int x, int y) const;
51 bool shared_value(const std::vector<const shroud_map*>& maps, int x, int y) const;
52
53 bool copy_from(const std::vector<const shroud_map*>& maps);
55 std::string write() const;
56 void read(const std::string& shroud_data);
57 void merge(const std::string& shroud_data);
58
59 bool enabled() const { return enabled_; }
61
62 int width() const;
63 int height() const;
64private:
66 std::vector<std::vector<bool>> data_;
67};
68
69/**
70 * This class stores all the data for a single 'side' (in game nomenclature).
71 * E.g., there is only one leader unit per team.
72 */
73class team
74{
75private:
76 struct team_info
77 {
78 team_info();
79 void read(const config &cfg);
80 void write(config& cfg) const;
81 int gold;
83 int income;
88 std::set<std::string> can_recruit;
89 std::string team_name;
92 std::string faction;
94 std::string save_id;
95 // 'id' of the current player (not necessarily unique)
96 std::string current_player;
97 std::string countdown_time;
99
100 std::string flag;
101 std::string flag_icon;
102
103 std::string id;
104
106
107 t_string objectives; /** < Team's objectives for the current level. */
108
109 /** Set to true when the objectives for this time changes.
110 * Reset to false when the objectives for this team have been
111 * displayed to the user. */
112 mutable bool objectives_changed;
113
114 side_controller::type controller;
116 defeat_condition::type defeat_cond;
117
118 side_proxy_controller::type proxy_controller; // when controller == HUMAN, the proxy controller determines what input method is actually used.
119 // proxy controller is an interface property, not gamestate. it is not synced, not known to server.
120 // also not saved in save game file
121 team_shared_vision::type share_vision;
126 bool hidden;
127 bool no_turn_confirmation; // Can suppress confirmations when ending a turn.
128
129 std::string color;
130
131 int side;
133 bool lost;
134
137 // TODO: maybe make this integer percentage? I like the float version more but this might cause OOS error because of floating point rounding differences on different hardware.
142 };
143
144 static const int default_team_gold_;
145
146public:
147 team();
148 virtual ~team();
149
150 team(team&&) noexcept = default;
151 team& operator=(team&&) noexcept = default;
152
153 /**
154 * Stores the attributes recognized by [side]. These should be stripped
155 * from a side's config before using it to create the side's leader.
156 */
157 static const std::set<std::string> attributes;
158 /**
159 * Stores the child tags recognized by [side]. These should be stripped
160 * from a side's config before using it to create the side's leader.
161 */
162 static const std::set<std::string> tags;
163
164 void build(const config &cfg, const gamemap &map);
165
166 void write(config& cfg) const;
167
168 void fix_villages(const gamemap &map);
169 /**
170 * Acquires a village from owner_side.
171 * Pointer fire_event should be the game_data for the game if it is desired to fire an event -- a "capture" event with owner_side variable scoped in will be fired.
172 * For no event, pass it nullptr.
173 * Default is the resources::gamedata pointer.
174 */
175 game_events::pump_result_t get_village(const map_location&, const int owner_side, game_data * fire_event);
176 void lose_village(const map_location&);
177 void clear_villages() { villages_.clear(); }
178 const std::set<map_location>& villages() const { return villages_; }
179 bool owns_village(const map_location& loc) const
180 { return villages_.count(loc) > 0; }
181
182 int side() const { return info_.side; }
183 int gold() const { return info_.gold; }
184 int start_gold() const { return info_.start_gold; }
185
186 /**
187 * @return The income for this side exactly as defined in the [side] tag.
188 */
189 int raw_income() const { return info_.income; }
190
191 /**
192 * @return The income for this side as defined in the [side] tag
193 * with base income from [game_config] added.
194 */
195 int base_income() const;
196
197 int village_gold() const { return info_.income_per_village; }
198 int recall_cost() const { return info_.recall_cost; }
199 void set_village_gold(int income) { info_.income_per_village = income; }
200 void set_recall_cost(int cost) { info_.recall_cost = cost; }
201 int total_income() const { return base_income() + static_cast<int>(villages_.size()) * info_.income_per_village; }
202
203 /**
204 * @return The number of unit levels each village can support,
205 * i.e. how much upkeep each village can bear.
206 */
208
209 /**
210 * @param support The number of unit levels each village can support
211 */
213
214 /**
215 * @return Calculated total support capacity, based on support_per_village.
216 */
217 int support() const { return static_cast<int>(villages_.size()) * village_support(); }
219 void set_gold(int amount) { info_.gold = amount; }
220 void set_start_gold(const int amount) { info_.start_gold = amount; }
221 void spend_gold(const int amount) { info_.gold -= amount; }
222
223 /**
224 * Sets the income of this side to the given value.
225 * Base income from `[game_config]` is not added.
226 * @param amount The income amount
227 */
228 void set_raw_income(int amount) { info_.income = amount; }
229
230 /**
231 * Sets the income of this side to the given value with
232 * base income from `[game_config]` added to it.
233 * @param amount The income amount
234 */
235 void set_base_income(int amount);
236 std::chrono::milliseconds countdown_time() const { return countdown_time_; }
237 void set_countdown_time(const std::chrono::milliseconds& amount) const { countdown_time_ = amount; }
239 void set_action_bonus_count(const int count) { action_bonus_count_ = count; }
244 void set_current_player(const std::string& player)
245 { info_.current_player = player; }
246
249
250 const std::set<std::string>& recruits() const
251 { return info_.can_recruit; }
252 void add_recruit(const std::string &);
253 void set_recruits(const std::set<std::string>& recruits);
254 int minimum_recruit_price() const;
255 const std::string& last_recruit() const { return last_recruit_; }
256 void set_last_recruit(const std::string & u_type) { last_recruit_ = u_type; }
257
258 const std::string& save_id() const { return info_.save_id; }
259 std::string save_id_or_number() const { return info_.save_id.empty() ? std::to_string(info_.side) : info_.save_id; }
260 void set_save_id(const std::string& save_id) { info_.save_id = save_id; }
261 const std::string& current_player() const { return info_.current_player; }
262
263 void set_objectives(const t_string& new_objectives, bool silently=false);
264 void set_objectives_changed(bool c = true) const { info_.objectives_changed = c; }
266
267 const t_string& objectives() const { return info_.objectives; }
269
270 bool is_enemy(int n) const {
271 const std::size_t index = std::size_t(n-1);
272 if(index >= enemies_.size()) {
273 calculate_enemies(index);
274 }
275 if(index < enemies_.size()) {
276 return enemies_[index];
277 } else {
278 return false;
279 }
280 }
281
282 side_controller::type controller() const { return info_.controller; }
283 const std::string& color() const { return info_.color; }
284 /** @note Call display::reinit_flag_for_side() after calling this */
285 void set_color(const std::string& color) { info_.color = color; }
286 bool is_empty() const { return info_.controller == side_controller::type::none; }
287
288 bool is_local() const { return !is_empty() && info_.is_local; }
289 bool is_network() const { return !is_empty() && !info_.is_local; }
290
291 bool is_human() const { return info_.controller == side_controller::type::human; }
292 bool is_ai() const { return info_.controller == side_controller::type::ai; }
293
294 bool is_local_human() const { return is_human() && is_local(); }
295 bool is_local_ai() const { return is_ai() && is_local(); }
296 bool is_network_human() const { return is_human() && is_network(); }
297 bool is_network_ai() const { return is_ai() && is_network(); }
298
299 void set_local(bool local) { info_.is_local = local; }
300 void make_human() { info_.controller = side_controller::type::human; }
301 void make_ai() { info_.controller = side_controller::type::ai; }
302 void change_controller(const std::string& new_controller) {
303 info_.controller = side_controller::get_enum(new_controller).value_or(side_controller::type::ai);
304 }
305 void change_controller(side_controller::type controller) { info_.controller = controller; }
306 void change_controller_by_wml(const std::string& new_controller);
307
308 side_proxy_controller::type proxy_controller() const { return info_.proxy_controller; }
309 bool is_proxy_human() const { return info_.proxy_controller == side_proxy_controller::type::human; }
310 bool is_droid() const { return info_.proxy_controller == side_proxy_controller::type::ai; }
311 bool is_idle() const { return info_.proxy_controller == side_proxy_controller::type::idle; }
312
313 void make_droid() { info_.proxy_controller = side_proxy_controller::type::ai; }
314 void make_idle() { info_.proxy_controller = side_proxy_controller::type::idle; }
315 void make_proxy_human() { info_.proxy_controller = side_proxy_controller::type::human; }
317
318 void change_proxy(side_proxy_controller::type proxy) { info_.proxy_controller = proxy; }
319
320 void toggle_droid() { info_.proxy_controller = (info_.proxy_controller == side_proxy_controller::type::ai ) ? side_proxy_controller::type::human : side_proxy_controller::type::ai; }
321 void toggle_idle() { info_.proxy_controller = (info_.proxy_controller == side_proxy_controller::type::idle) ? side_proxy_controller::type::human : side_proxy_controller::type::idle; }
322
323 const std::string& team_name() const { return info_.team_name; }
324 const t_string &user_team_name() const { return info_.user_team_name; }
325 void change_team(const std::string &name, const t_string &user_name);
326
327 const std::string& flag() const { return info_.flag; }
328 const std::string& flag_icon() const { return info_.flag_icon; }
329
330 /** @note Call display::reinit_flag_for_side() after calling this */
331 void set_flag(const std::string& flag) { info_.flag = flag; }
332 void set_flag_icon(const std::string& flag_icon) { info_.flag_icon = flag_icon; }
333
334 const std::string& side_name() const { return info_.side_name.empty() ? info_.current_player : info_.side_name.str(); }
336 void set_side_name(const t_string& new_name) {info_.side_name = new_name == info_.current_player ? "" : new_name;}
337 const std::string& faction() const { return info_.faction; }
338 const t_string& faction_name() const { return info_.faction_name; }
339 //Returns true if the hex is shrouded/fogged for this side, or
340 //any other ally with shared vision.
341 bool shrouded(const map_location& loc) const;
342 bool fogged(const map_location& loc) const;
343
344 bool uses_shroud() const { return shroud_.enabled(); }
345 bool uses_fog() const { return fog_.enabled(); }
346 bool fog_or_shroud() const { return uses_shroud() || uses_fog(); }
349 bool clear_fog(const map_location& loc) { return fog_.clear(loc.wml_x(),loc.wml_y()); }
350 void reshroud() { shroud_.reset(); }
351 void refog() { fog_.reset(); }
352 void set_shroud(bool shroud) { shroud_.set_enabled(shroud); }
353 void set_fog(bool fog) { fog_.set_enabled(fog); }
354 std::string shroud_data() const { return shroud_.write(); }
355
356 /** Merge a WML shroud map with the shroud data of this player. */
358
359 /** Whether @a other's count of villages, units, upkeep and income should be visible in the status table. */
360 bool knows_upkeep(const team &other) const;
361 /** Records hexes that were cleared of fog via WML. */
362 void add_fog_override(const std::set<map_location> &hexes) { fog_clearer_.insert(hexes.begin(), hexes.end()); }
363 /** Removes the record of hexes that were cleared of fog via WML. */
364 void remove_fog_override(const std::set<map_location> &hexes);
365
369 bool no_leader() const { return info_.no_leader; }
370 defeat_condition::type defeat_cond() const { return info_.defeat_cond; }
371 void set_defeat_condition(defeat_condition::type value) { info_.defeat_cond = value; }
372 /** sets the defeat condition if @param value is a valid defeat condition, otherwise nothing happes. */
374 void have_leader(bool value=true) { info_.no_leader = !value; }
375 bool hidden() const { return info_.hidden; }
377 bool persistent() const { return info_.persistent; }
379 void set_lost(bool value=true) { info_.lost = value; }
380 bool lost() const { return info_.lost; }
381
385 bool carryover_add() const { return info_.carryover_add; }
387 double carryover_bonus() const { return info_.carryover_bonus; }
389 int carryover_gold() const { return info_.carryover_gold; }
391 const config& variables() const { return info_.variables; }
392
395
396 //function which, when given a 1-based side will return the color used by that side.
398
399 static color_t get_side_color(int side);
400 static color_t get_minimap_color(int side);
401 static color_t get_font_color(int side);
402
403 static std::string get_side_color_id(unsigned side);
405 static std::string get_side_color_id_from_config(const config& cfg);
406
407 void log_recruitable() const;
408
409 /** clear the shroud, fog, and enemies cache for all teams*/
410 static void clear_caches();
411
412 /** get the whiteboard planned actions for this team */
413 std::shared_ptr<wb::side_actions> get_side_actions() const { return planned_actions_; }
414
415 config to_config() const;
416
417 bool share_maps() const { return info_.share_vision != team_shared_vision::type::none ; }
418 bool share_view() const { return info_.share_vision == team_shared_vision::type::all; }
419 team_shared_vision::type share_vision() const { return info_.share_vision; }
420
421 void set_share_vision(const std::string& vision_status) {
422 info_.share_vision = team_shared_vision::get_enum(vision_status).value_or(team_shared_vision::type::all);
423 clear_caches();
424 }
425
426 void set_share_vision(team_shared_vision::type vision_status) {
427 info_.share_vision = vision_status;
428 clear_caches();
429 }
430
435 std::string allied_human_teams() const;
436
437 bool chose_random() const
438 {
439 return info_.chose_random;
440 }
441
442private:
443
444 const std::vector<const shroud_map*>& ally_shroud(const std::vector<team>& teams) const;
445 const std::vector<const shroud_map*>& ally_fog(const std::vector<team>& teams) const;
446
447 std::set<map_location> villages_;
448
450 /** Stores hexes that have been cleared of fog via WML. */
451 std::set<map_location> fog_clearer_;
452
454
456
457 mutable std::chrono::milliseconds countdown_time_;
459
461 std::string last_recruit_;
462
463private:
464 void calculate_enemies(std::size_t index) const;
465 bool calculate_is_enemy(std::size_t index) const;
466 mutable boost::dynamic_bitset<> enemies_;
467
468 mutable std::vector<const shroud_map*> ally_shroud_, ally_fog_;
469
470 /**
471 * Whiteboard planned actions for this team.
472 */
473 std::shared_ptr<wb::side_actions> planned_actions_;
474};
475
476//function which will validate a side. Throws game::game_error
477//if the side is invalid
478void validate_side(int side); //throw game::game_error
map_location loc
Definition move.cpp:172
Representing the "team color" information, this C++ class contains a subset of WML's [color_range] ta...
A config object defines a single node in a WML file, with access to child nodes.
Definition config.hpp:157
Encapsulates the map of the game.
Definition map.hpp:176
This class encapsulates the recall list of a team.
bool copy_from(const std::vector< const shroud_map * > &maps)
Definition team.cpp:906
int height() const
Definition team.cpp:756
void read(const std::string &shroud_data)
Definition team.cpp:871
void set_enabled(bool enabled)
Definition team.hpp:60
shroud_map()
Definition team.hpp:44
bool enabled() const
Definition team.hpp:59
std::vector< std::vector< bool > > data_
Definition team.hpp:66
void place(int x, int y)
Definition team.cpp:786
int width() const
Definition team.cpp:751
bool shared_value(const std::vector< const shroud_map * > &maps, int x, int y) const
Definition team.cpp:834
void merge(const std::string &shroud_data)
Definition team.cpp:890
std::string write() const
Definition team.cpp:855
void reset()
Definition team.cpp:803
bool enabled_
Definition team.hpp:65
bool clear(int x, int y)
Definition team.cpp:764
bool empty() const
Definition tstring.hpp:200
const std::string & str() const
Definition tstring.hpp:204
This class stores all the data for a single 'side' (in game nomenclature).
Definition team.hpp:74
bool uses_shroud() const
Definition team.hpp:344
const t_string & faction_name() const
Definition team.hpp:338
void set_action_bonus_count(const int count)
Definition team.hpp:239
int carryover_gold() const
Definition team.hpp:389
const std::string & side_name() const
Definition team.hpp:334
bool clear_shroud(const map_location &loc)
Definition team.hpp:347
void have_leader(bool value=true)
Definition team.hpp:374
const std::string & faction() const
Definition team.hpp:337
bool is_ai() const
Definition team.hpp:292
static color_t get_minimap_color(int side)
Definition team.cpp:948
void build(const config &cfg, const gamemap &map)
Definition team.cpp:344
bool no_turn_confirmation() const
Definition team.hpp:393
void set_carryover_percentage(int value)
Definition team.hpp:382
void fix_villages(const gamemap &map)
Definition team.cpp:413
bool is_proxy_human() const
Definition team.hpp:309
const std::set< std::string > & recruits() const
Definition team.hpp:250
recall_list_manager recall_list_
Definition team.hpp:460
int side() const
Definition team.hpp:182
game_events::pump_result_t get_village(const map_location &, const int owner_side, game_data *fire_event)
Acquires a village from owner_side.
Definition team.cpp:424
bool is_human() const
Definition team.hpp:291
void set_countdown_time(const std::chrono::milliseconds &amount) const
Definition team.hpp:237
const std::string & save_id() const
Definition team.hpp:258
void set_flag_icon(const std::string &flag_icon)
Definition team.hpp:332
void set_scroll_to_leader(bool value)
Definition team.hpp:248
int support() const
Definition team.hpp:217
int village_support() const
Definition team.hpp:207
std::vector< const shroud_map * > ally_shroud_
Definition team.hpp:468
int recall_cost() const
Definition team.hpp:198
void set_objectives_changed(bool c=true) const
Definition team.hpp:264
void set_shroud(bool shroud)
Definition team.hpp:352
bool is_droid() const
Definition team.hpp:310
bool fog_or_shroud() const
Definition team.hpp:346
void change_proxy(side_proxy_controller::type proxy)
Definition team.hpp:318
bool auto_shroud_updates() const
Definition team.hpp:366
void set_local(bool local)
Definition team.hpp:299
void set_recruits(const std::set< std::string > &recruits)
Definition team.cpp:457
bool objectives_changed() const
Definition team.hpp:268
void set_carryover_gold(int value)
Definition team.hpp:388
void decrement_action_bonus_count()
Definition team.hpp:241
bool is_local() const
Definition team.hpp:288
void set_carryover_bonus(double value)
Definition team.hpp:386
static std::string get_side_color_id_from_config(const config &cfg)
Definition team.cpp:999
bool is_local_human() const
Definition team.hpp:294
std::chrono::milliseconds countdown_time_
Definition team.hpp:457
void merge_shroud_map_data(const std::string &shroud_data)
Merge a WML shroud map with the shroud data of this player.
Definition team.hpp:357
bool no_leader() const
Definition team.hpp:369
void toggle_idle()
Definition team.hpp:321
void refog()
Definition team.hpp:351
bool clear_fog(const map_location &loc)
Definition team.hpp:349
int village_gold() const
Definition team.hpp:197
bool is_enemy(int n) const
Definition team.hpp:270
config to_config() const
Definition team.cpp:1029
team_shared_vision::type share_vision() const
Definition team.hpp:419
void set_auto_shroud_updates(bool value)
Definition team.hpp:367
int action_bonus_count() const
Definition team.hpp:238
shroud_map fog_
Definition team.hpp:449
bool owns_village(const map_location &loc) const
Definition team.hpp:179
bool calculate_is_enemy(std::size_t index) const
Definition team.cpp:505
const std::string & flag_icon() const
Definition team.hpp:328
void set_current_player(const std::string &player)
Definition team.hpp:244
void change_controller(side_controller::type controller)
Definition team.hpp:305
void change_team(const std::string &name, const t_string &user_name)
Definition team.cpp:602
int gold() const
Definition team.hpp:183
void set_last_recruit(const std::string &u_type)
Definition team.hpp:256
static color_range get_side_color_range(int side)
Definition team.cpp:931
team()
Definition team.cpp:322
const t_string & objectives() const
Definition team.hpp:267
defeat_condition::type defeat_cond() const
Definition team.hpp:370
void set_objectives(const t_string &new_objectives, bool silently=false)
Definition team.cpp:627
t_string side_name_tstr() const
Definition team.hpp:335
const std::string & current_player() const
Definition team.hpp:261
bool carryover_add() const
Definition team.hpp:385
std::string shroud_data() const
Definition team.hpp:354
static const std::set< std::string > tags
Stores the child tags recognized by [side].
Definition team.hpp:120
recall_list_manager & recall_list()
Definition team.hpp:242
static t_string get_side_color_name_for_UI(unsigned side)
Definition team.cpp:987
const std::set< map_location > & villages() const
Definition team.hpp:178
void clear_proxy()
Definition team.hpp:316
void handle_legacy_share_vision(const config &cfg)
Definition team.hpp:431
int carryover_percentage() const
Definition team.hpp:383
void write(config &cfg) const
Definition team.cpp:382
static std::string get_side_color_id(unsigned side)
Definition team.cpp:960
bool is_network_ai() const
Definition team.hpp:297
int raw_income() const
Definition team.hpp:189
bool is_network() const
Definition team.hpp:289
std::vector< const shroud_map * > ally_fog_
Definition team.hpp:468
int total_income() const
Definition team.hpp:201
void set_persistent(bool value)
Definition team.hpp:378
void reset_objectives_changed() const
Definition team.hpp:265
void set_recall_cost(int cost)
Definition team.hpp:200
static color_t get_font_color(int side)
Definition team.cpp:955
void set_side_name(const t_string &new_name)
Definition team.hpp:336
void set_start_gold(const int amount)
Definition team.hpp:220
team_info info_
Definition team.hpp:455
std::shared_ptr< wb::side_actions > get_side_actions() const
get the whiteboard planned actions for this team
Definition team.hpp:413
team(team &&) noexcept=default
void reshroud()
Definition team.hpp:350
static const int default_team_gold_
Definition team.hpp:144
void set_carryover_add(bool value)
Definition team.hpp:384
bool is_local_ai() const
Definition team.hpp:295
void calculate_enemies(std::size_t index) const
Definition team.cpp:494
void add_recruit(const std::string &)
Definition team.cpp:467
side_controller::type controller() const
Definition team.hpp:282
bool is_idle() const
Definition team.hpp:311
int minimum_recruit_price() const
Definition team.cpp:474
double carryover_bonus() const
Definition team.hpp:387
void make_droid()
Definition team.hpp:313
void change_controller(const std::string &new_controller)
Definition team.hpp:302
void make_ai()
Definition team.hpp:301
void add_fog_override(const std::set< map_location > &hexes)
Records hexes that were cleared of fog via WML.
Definition team.hpp:362
virtual ~team()
Definition team.cpp:340
static void clear_caches()
clear the shroud, fog, and enemies cache for all teams
Definition team.cpp:615
bool auto_shroud_updates_
Definition team.hpp:453
bool share_maps() const
Definition team.hpp:417
void set_raw_income(int amount)
Sets the income of this side to the given value.
Definition team.hpp:228
void set_defeat_condition(defeat_condition::type value)
Definition team.hpp:371
std::set< map_location > fog_clearer_
Stores hexes that have been cleared of fog via WML.
Definition team.hpp:451
bool is_network_human() const
Definition team.hpp:296
std::string allied_human_teams() const
Definition team.cpp:1037
const config & variables() const
Definition team.hpp:391
int action_bonus_count_
Definition team.hpp:458
bool shrouded(const map_location &loc) const
Definition team.cpp:636
void set_fog(bool fog)
Definition team.hpp:353
std::set< map_location > villages_
Definition team.hpp:447
bool knows_upkeep(const team &other) const
Whether other's count of villages, units, upkeep and income should be visible in the status table.
Definition team.cpp:689
void set_color(const std::string &color)
Definition team.hpp:285
const std::string & team_name() const
Definition team.hpp:323
const recall_list_manager & recall_list() const
Definition team.hpp:243
void make_proxy_human()
Definition team.hpp:315
std::chrono::milliseconds countdown_time() const
Definition team.hpp:236
int start_gold() const
Definition team.hpp:184
shroud_map shroud_
Definition team.hpp:449
void make_human()
Definition team.hpp:300
std::string save_id_or_number() const
Definition team.hpp:259
void spend_gold(const int amount)
Definition team.hpp:221
const std::vector< const shroud_map * > & ally_fog(const std::vector< team > &teams) const
Definition team.cpp:676
void clear_villages()
Definition team.hpp:177
bool get_scroll_to_leader() const
Definition team.hpp:247
side_proxy_controller::type proxy_controller() const
Definition team.hpp:308
int base_income() const
Definition team.cpp:403
bool uses_fog() const
Definition team.hpp:345
static color_t get_side_color(int side)
Definition team.cpp:943
void set_flag(const std::string &flag)
Definition team.hpp:331
static const std::set< std::string > attributes
Stores the attributes recognized by [side].
Definition team.hpp:54
bool persistent() const
Definition team.hpp:377
void increment_action_bonus_count()
Definition team.hpp:240
bool hidden() const
Definition team.hpp:375
std::string last_recruit_
Definition team.hpp:461
void set_village_gold(int income)
Definition team.hpp:199
void set_hidden(bool value)
Definition team.hpp:376
void set_village_support(int support)
Definition team.hpp:212
void set_defeat_condition_string(const std::string &value)
sets the defeat condition if
Definition team.hpp:373
bool get_disallow_observers() const
Definition team.hpp:368
void set_no_turn_confirmation(bool value)
Definition team.hpp:394
std::shared_ptr< wb::side_actions > planned_actions_
Whiteboard planned actions for this team.
Definition team.hpp:473
bool share_view() const
Definition team.hpp:418
const std::string & color() const
Definition team.hpp:283
void set_save_id(const std::string &save_id)
Definition team.hpp:260
const std::string & flag() const
Definition team.hpp:327
const std::string & last_recruit() const
Definition team.hpp:255
void make_idle()
Definition team.hpp:314
void lose_village(const map_location &)
Definition team.cpp:450
void set_share_vision(const std::string &vision_status)
Definition team.hpp:421
void set_base_income(int amount)
Sets the income of this side to the given value with base income from [game_config] added to it.
Definition team.cpp:408
void set_share_vision(team_shared_vision::type vision_status)
Definition team.hpp:426
const t_string & user_team_name() const
Definition team.hpp:324
boost::dynamic_bitset enemies_
Definition team.hpp:466
config & variables()
Definition team.hpp:390
void remove_fog_override(const std::set< map_location > &hexes)
Removes the record of hexes that were cleared of fog via WML.
Definition team.cpp:728
bool fogged(const map_location &loc) const
Definition team.cpp:645
void set_lost(bool value=true)
Definition team.hpp:379
bool is_empty() const
Definition team.hpp:286
bool lost() const
Definition team.hpp:380
void place_shroud(const map_location &loc)
Definition team.hpp:348
void change_controller_by_wml(const std::string &new_controller)
Definition team.cpp:569
void set_gold(int amount)
Definition team.hpp:219
bool chose_random() const
Definition team.hpp:437
void log_recruitable() const
Definition team.cpp:1019
void toggle_droid()
Definition team.hpp:320
void new_turn()
Definition team.hpp:218
const std::vector< const shroud_map * > & ally_shroud(const std::vector< team > &teams) const
Definition team.cpp:663
Definitions for the interface to Wesnoth Markup Language (WML).
const config * cfg
Domain specific events.
STL namespace.
Definition display.hpp:45
std::unique_ptr< MIX_Audio, decltype(&MIX_DestroyAudio)> value
Definition sound.cpp:139
The basic class for representing 8-bit RGB or RGBA colour values.
Definition color.hpp:51
Encapsulates the map of the game.
Definition location.hpp:46
int wml_y() const
Definition location.hpp:187
int wml_x() const
Definition location.hpp:186
static constexpr utils::optional< enum_type > get_enum(const std::string_view value)
Converts a string into its enum equivalent.
Definition enum_base.hpp:57
std::string color
Definition team.hpp:129
double carryover_bonus
Definition team.hpp:138
int carryover_gold
Definition team.hpp:139
bool chose_random
Definition team.hpp:124
std::string team_name
Definition team.hpp:89
void read(const config &cfg)
Definition team.cpp:173
t_string user_team_name
Definition team.hpp:90
int minimum_recruit_price
Definition team.hpp:86
t_string faction_name
Definition team.hpp:93
config variables
Definition team.hpp:140
std::string countdown_time
Definition team.hpp:97
void handle_legacy_share_vision(const config &cfg)
Definition team.cpp:260
std::string flag
Definition team.hpp:100
std::string current_player
Definition team.hpp:96
side_proxy_controller::type proxy_controller
Definition team.hpp:118
int carryover_percentage
Definition team.hpp:135
t_string side_name
Definition team.hpp:91
bool scroll_to_leader
Definition team.hpp:105
t_string objectives
Definition team.hpp:107
int action_bonus_count
Definition team.hpp:98
std::string id
Definition team.hpp:103
void write(config &cfg) const
Definition team.cpp:273
std::string faction
Definition team.hpp:92
bool carryover_add
Definition team.hpp:136
bool no_turn_confirmation
Definition team.hpp:127
bool disallow_observers
Definition team.hpp:122
std::string flag_icon
Definition team.hpp:101
int recall_cost
Definition team.hpp:87
bool persistent
Definition team.hpp:132
bool allow_player
Definition team.hpp:123
side_controller::type controller
Definition team.hpp:114
int support_per_village
Definition team.hpp:85
defeat_condition::type defeat_cond
Definition team.hpp:116
int income_per_village
Definition team.hpp:84
std::string save_id
Definition team.hpp:94
std::set< std::string > can_recruit
Definition team.hpp:88
bool objectives_changed
< Team's objectives for the current level.
Definition team.hpp:112
team_shared_vision::type share_vision
Definition team.hpp:121
void validate_side(int side)
Definition team.cpp:740
static map_location::direction n
#define c