~widelands-dev/widelands/trunk

4677 by sigra
move more of the logic files into the logic directory
1
/*
11165 by The Widelands Bunnybot
Update copyright end year to 2025
2
 * Copyright (C) 2002-2025 by the Widelands Development Team
4677 by sigra
move more of the logic files into the logic directory
3
 *
4
 * This program is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU General Public License
6
 * as published by the Free Software Foundation; either version 2
7
 * of the License, or (at your option) any later version.
8
 *
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License
10152 by The Widelands Bunnybot
Add check for missing copyright headers (#5223)
15
 * along with this program; if not, see <https://www.gnu.org/licenses/>.
4677 by sigra
move more of the logic files into the logic directory
16
 *
17
 */
18
7649.1.1 by fios at foramnagaidhlig
- Moved logic MapObjects and related classes into subdirectories.
19
#ifndef WL_LOGIC_MAP_OBJECTS_TRIBES_TRIBE_DESCR_H
20
#define WL_LOGIC_MAP_OBJECTS_TRIBES_TRIBE_DESCR_H
4677 by sigra
move more of the logic files into the logic directory
21
7175.7.42 by fios at foramnagaidhlig
Implemented LuaTable version of TribeDescr constructor + some bugfixes.
22
#include <memory>
6667.1.1 by Holger Rapp
Added new codecheck rule that complains about wrong include order. This adds tons of codecheck errors.
23
7076.2.1 by fios at foramnagaidhlig
Replaced most instances of boost::noncopyable with new macro DISALLOW_COPY_AND_ASSIGN and added codecheck rule
24
#include "base/macros.h"
9204 by The Widelands Bunnybot
Noordfrees: Launchpad mirror (#3766)\n\nMirrors all changes at widelands:master to lp:widelands (1d6b62c7619a182081e1c942ae533a95d6112044)
25
#include "graphic/animation/animation.h"
9033.4.50 by GunChleoc
Implemented optional custom toolbar images per tribe.
26
#include "graphic/toolbar_imageset.h"
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
27
#include "logic/map_objects/descriptions.h"
7649.1.1 by fios at foramnagaidhlig
- Moved logic MapObjects and related classes into subdirectories.
28
#include "logic/map_objects/immovable.h"
8048 by GunChleoc
Ran clang-format.
29
#include "logic/map_objects/tribes/building.h"
7649.1.1 by fios at foramnagaidhlig
- Moved logic MapObjects and related classes into subdirectories.
30
#include "logic/map_objects/tribes/road_textures.h"
31
#include "logic/map_objects/tribes/tribe_basic_info.h"
32
#include "logic/map_objects/tribes/ware_descr.h"
33
#include "logic/map_objects/tribes/worker.h"
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
34
#include "logic/map_objects/world/resource_description.h"
8494.1.6 by GunChleoc
Restore work done in r8497.
35
#include "logic/widelands.h"
4677 by sigra
move more of the logic files into the logic directory
36
37
namespace Widelands {
38
39
/*
8771.2.18 by Benedikt Straub
implemented diff comments
40
 * Resource indicators:
41
 * A ResourceIndicatorSet maps the resource name to a ResourceIndicatorList.
8833 by Wideland's Bunnybot
Merged lp:~widelands-dev/widelands/rework-resource-indicators:
42
 * A ResourceIndicatorList maps resource amounts to the DescriptionIndex of an immovable this player
43
 * uses.
44
 * Special case: The ResourceIndicatorList mapped to "" contains resis that will be used in
45
 * locations
8771.2.18 by Benedikt Straub
implemented diff comments
46
 * without resources. If it has several entries, result is arbitrary.
8939 by Wideland's Bunnybot
Merged lp:~widelands-dev/widelands/appveyor_reenable_glbinding:
47
 */
8771.2.1 by Benedikt Straub
Each TribeDescr defines its own set of resource indicators
48
using ResourceIndicatorList = std::map<uint32_t, DescriptionIndex>;
49
using ResourceIndicatorSet = std::map<std::string, ResourceIndicatorList>;
50
51
/*
4677 by sigra
move more of the logic files into the logic directory
52
Tribes
53
------
54
55
Every player chooses a tribe. A tribe has distinct properties such as the
56
buildings it can build and the associated graphics.
57
Two players can choose the same tribe.
58
*/
7175.7.79 by fios at foramnagaidhlig
Fixed more compiler errors.
59
class TribeDescr {
60
public:
9461 by The Widelands Bunnybot
Tribes filtering (#3693)
61
	TribeDescr(const Widelands::TribeBasicInfo& info,
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
62
	           Descriptions& descriptions,
9461 by The Widelands Bunnybot
Tribes filtering (#3693)
63
	           const LuaTable& table,
64
	           const LuaTable* scenario_table = nullptr);
4677 by sigra
move more of the logic files into the logic directory
65
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
66
	[[nodiscard]] const std::string& name() const;
67
	[[nodiscard]] const std::string& descname() const;
68
69
	[[nodiscard]] size_t get_nrwares() const;
70
	[[nodiscard]] size_t get_nrworkers() const;
71
72
	[[nodiscard]] const std::set<DescriptionIndex>& buildings() const;
73
	[[nodiscard]] const std::set<DescriptionIndex>& wares() const;
74
	[[nodiscard]] const std::set<DescriptionIndex>& workers() const;
75
	[[nodiscard]] const std::set<DescriptionIndex>& immovables() const;
76
	[[nodiscard]] const ResourceIndicatorSet& resource_indicators() const;
7175.7.64 by fios at foramnagaidhlig
Cleanup in TribeDescr.
77
9682 by The Widelands Bunnybot
Add-Ons (#4464)
78
	std::set<DescriptionIndex>& mutable_wares();
79
	std::set<DescriptionIndex>& mutable_workers();
80
	std::set<DescriptionIndex>& mutable_buildings();
81
	std::set<DescriptionIndex>& mutable_immovables();
82
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
83
	[[nodiscard]] bool has_building(const DescriptionIndex& index) const;
84
	[[nodiscard]] bool has_ware(const DescriptionIndex& index) const;
85
	[[nodiscard]] bool has_worker(const DescriptionIndex& index) const;
86
	[[nodiscard]] bool has_immovable(const DescriptionIndex& index) const;
7175.7.294 by fios at foramnagaidhlig
Return more const references. Converted most remaining NOCOMs to TODOs.
87
88
	// A ware is a construction material if it appears in a building's buildcost or enhancement cost
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
89
	[[nodiscard]] bool is_construction_material(const DescriptionIndex& ware_index) const;
7175.7.64 by fios at foramnagaidhlig
Cleanup in TribeDescr.
90
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
91
	[[nodiscard]] DescriptionIndex building_index(const std::string& buildingname) const;
92
	[[nodiscard]] DescriptionIndex immovable_index(const std::string& immovablename) const;
93
	[[nodiscard]] DescriptionIndex ware_index(const std::string& warename) const;
94
	[[nodiscard]] DescriptionIndex worker_index(const std::string& workername) const;
7175.7.64 by fios at foramnagaidhlig
Cleanup in TribeDescr.
95
96
	/// Return the given building or die trying
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
97
	[[nodiscard]] DescriptionIndex safe_building_index(const std::string& buildingname) const;
7175.7.64 by fios at foramnagaidhlig
Cleanup in TribeDescr.
98
	/// Return the given ware or die trying
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
99
	[[nodiscard]] DescriptionIndex safe_ware_index(const std::string& warename) const;
7175.7.64 by fios at foramnagaidhlig
Cleanup in TribeDescr.
100
	/// Return the given worker or die trying
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
101
	[[nodiscard]] DescriptionIndex safe_worker_index(const std::string& workername) const;
102
103
	[[nodiscard]] BuildingDescr const* get_building_descr(const DescriptionIndex& index) const;
104
	[[nodiscard]] ImmovableDescr const* get_immovable_descr(const DescriptionIndex& index) const;
105
	[[nodiscard]] WareDescr const* get_ware_descr(const DescriptionIndex& index) const;
106
	[[nodiscard]] WorkerDescr const* get_worker_descr(const DescriptionIndex& index) const;
107
108
	[[nodiscard]] DescriptionIndex builder() const;
109
	[[nodiscard]] DescriptionIndex geologist() const;
110
	[[nodiscard]] DescriptionIndex scouts_house() const;
111
	[[nodiscard]] DescriptionIndex soldier() const;
112
	[[nodiscard]] DescriptionIndex ship() const;
113
	[[nodiscard]] DescriptionIndex ferry() const;
114
	[[nodiscard]] DescriptionIndex port() const;
115
	[[nodiscard]] const std::vector<DescriptionIndex>& carriers() const {
9999 by The Widelands Bunnybot
Support having more than 2 carriers on a road (#4938)
116
		return carriers_;
117
	}
8325.4.5 by GunChleoc
Merged trunk.
118
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
119
	[[nodiscard]] const std::vector<DescriptionIndex>& trainingsites() const;
120
	[[nodiscard]] const std::vector<DescriptionIndex>& worker_types_without_cost() const;
7175.7.64 by fios at foramnagaidhlig
Cleanup in TribeDescr.
121
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
122
	[[nodiscard]] uint32_t frontier_animation() const;
123
	[[nodiscard]] uint32_t flag_animation() const;
124
	[[nodiscard]] uint32_t pinned_note_animation() const;
125
	[[nodiscard]] uint32_t bridge_animation(uint8_t dir, bool busy) const;
9204 by The Widelands Bunnybot
Noordfrees: Launchpad mirror (#3766)\n\nMirrors all changes at widelands:master to lp:widelands (1d6b62c7619a182081e1c942ae533a95d6112044)
126
127
	// Bridge height in pixels at 1x scale, for drawing bobs walking over a bridge
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
128
	[[nodiscard]] uint32_t bridge_height() const;
7366.2.7 by Holger Rapp
Allow more textures for than just one.
129
9204 by The Widelands Bunnybot
Noordfrees: Launchpad mirror (#3766)\n\nMirrors all changes at widelands:master to lp:widelands (1d6b62c7619a182081e1c942ae533a95d6112044)
130
	// The road textures used for drawing roads and waterways.
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
131
	[[nodiscard]] const RoadTextures& road_textures() const;
4677 by sigra
move more of the logic files into the logic directory
132
10462 by The Widelands Bunnybot
Clear clang-tidy in logic headers (#5691)
133
	DescriptionIndex get_resource_indicator(const ResourceDescription* res,
134
	                                        ResourceAmount amount) const;
4677 by sigra
move more of the logic files into the logic directory
135
7006.2.1 by Holger Rapp
Remove unused and broken implementation of flag and frontier styles.
136
	// Returns the initalization at 'index' (which must not be out of bounds).
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
137
	[[nodiscard]] const Widelands::TribeBasicInfo::Initialization&
138
	initialization(const uint8_t index) const {
9792 by The Widelands Bunnybot
Support custom tribes in add-ons (#4708)
139
		return basic_info_.initializations.at(index);
140
	}
141
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
142
	[[nodiscard]] const Widelands::TribeBasicInfo& basic_info() const {
9792 by The Widelands Bunnybot
Support custom tribes in add-ons (#4708)
143
		return basic_info_;
4677 by sigra
move more of the logic files into the logic directory
144
	}
5614.1.9 by Nicolai Hähnle
Introduce Ship
145
7617.2.1 by fios at foramnagaidhlig
Renamed WareIndex to DescriptionIndex.
146
	using WaresOrder = std::vector<std::vector<Widelands::DescriptionIndex>>;
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
147
	[[nodiscard]] const WaresOrder& wares_order() const {
8048 by GunChleoc
Ran clang-format.
148
		return wares_order_;
149
	}
9682 by The Widelands Bunnybot
Add-Ons (#4464)
150
	WaresOrder& mutable_wares_order() {
151
		return wares_order_;
152
	}
5982 by victor.pelt at gmail
fix for bug 786243
153
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
154
	[[nodiscard]] const WaresOrder& workers_order() const {
8048 by GunChleoc
Ran clang-format.
155
		return workers_order_;
156
	}
9682 by The Widelands Bunnybot
Add-Ons (#4464)
157
	WaresOrder& mutable_workers_order() {
158
		return workers_order_;
159
	}
7654.1.9 by tiborb95 at gmail
default name for ships after names are exhausted changed to ship X
160
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
161
	[[nodiscard]] bool uses_resource(const std::string& name) const {
10462 by The Widelands Bunnybot
Clear clang-tidy in logic headers (#5691)
162
		return used_resources_.count(name) != 0u;
9644 by The Widelands Bunnybot
Amazon fixes (#4473)
163
	}
164
	// Warning: Do not use pointer arithmetics in logic code!
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
165
	[[nodiscard]] const std::set<const BuildingDescr*>& buildings_built_over_immovables() const {
9644 by The Widelands Bunnybot
Amazon fixes (#4473)
166
		return buildings_built_over_immovables_;
167
	}
168
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
169
	[[nodiscard]] const std::vector<std::pair<std::string, int>>& collectors_points_table() const {
9792 by The Widelands Bunnybot
Support custom tribes in add-ons (#4708)
170
		return collectors_points_table_;
171
	}
10477 by The Widelands Bunnybot
Naming Warehouses and Ships (#5703)
172
	[[nodiscard]] const std::vector<std::string>& get_warehouse_names() const {
173
		return warehouse_names_;
174
	}
9792 by The Widelands Bunnybot
Support custom tribes in add-ons (#4708)
175
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
176
	[[nodiscard]] const std::string& get_productionsite_worker_missing_string() const {
9938 by The Widelands Bunnybot
Disambiguate productionsites' worker(s) missing/coming strings (#4971)
177
		return productionsite_worker_missing_;
178
	}
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
179
	[[nodiscard]] const std::string& get_productionsite_worker_coming_string() const {
9938 by The Widelands Bunnybot
Disambiguate productionsites' worker(s) missing/coming strings (#4971)
180
		return productionsite_worker_coming_;
181
	}
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
182
	[[nodiscard]] const std::string& get_productionsite_workers_missing_string() const {
9938 by The Widelands Bunnybot
Disambiguate productionsites' worker(s) missing/coming strings (#4971)
183
		return productionsite_workers_missing_;
184
	}
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
185
	[[nodiscard]] const std::string& get_productionsite_workers_coming_string() const {
9938 by The Widelands Bunnybot
Disambiguate productionsites' worker(s) missing/coming strings (#4971)
186
		return productionsite_workers_coming_;
187
	}
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
188
	[[nodiscard]] const std::string& get_productionsite_experienced_worker_missing_string() const {
10409 by The Widelands Bunnybot
Allow loading another replay in replay mode (#5611)
189
		return productionsite_experienced_worker_missing_;
190
	}
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
191
	[[nodiscard]] const std::string& get_productionsite_experienced_workers_missing_string() const {
10409 by The Widelands Bunnybot
Allow loading another replay in replay mode (#5611)
192
		return productionsite_experienced_workers_missing_;
193
	}
9938 by The Widelands Bunnybot
Disambiguate productionsites' worker(s) missing/coming strings (#4971)
194
11133 by The Widelands Bunnybot
Improve census and status lines of warehouses (rebased) (GH #6576 / CB #4936)
195
	enum class CapacityStringIndex { kLacking = 0, kFull = 1, kOutAndLacking = 2, kOut = 3 };
196
197
	// Return the translated format string for case `index` and plural form according to
198
	// `number_to_format`
199
	[[nodiscard]] std::string get_soldiers_format_string(CapacityStringIndex index,
200
	                                                     int number_to_format) const;
10333 by The Widelands Bunnybot
Military capacity string refactor (#5476)
201
9033.4.50 by GunChleoc
Implemented optional custom toolbar images per tribe.
202
	// The custom toolbar imageset if any. Can be nullptr.
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
203
	[[nodiscard]] ToolbarImageset* toolbar_image_set() const;
9033.4.50 by GunChleoc
Implemented optional custom toolbar images per tribe.
204
10448 by The Widelands Bunnybot
Fix clang-tidy C++17 checks (#5679)
205
	[[nodiscard]] const std::map<std::string /* key */, std::string /* building */>&
206
	fastplace_defaults() const {
10058 by The Widelands Bunnybot
Fastplace Groups (#5110)
207
		return fastplace_defaults_;
208
	}
209
9682 by The Widelands Bunnybot
Add-Ons (#4464)
210
	// Read helptext from Lua table
10191 by The Widelands Bunnybot
Fix misc clang-tidy checks in `logic` (#5255)
211
	void load_helptexts(MapObjectDescr* descr, const LuaTable& table) const;
9682 by The Widelands Bunnybot
Add-Ons (#4464)
212
213
	// Make sure that everything is there and that dependencies are calculated.
214
	// This needs to be called exactly once during postloading.
215
	void finalize_loading(Descriptions& descriptions);
216
4677 by sigra
move more of the logic files into the logic directory
217
private:
9461 by The Widelands Bunnybot
Tribes filtering (#3693)
218
	// Helper functions for loading everything in the constructor
219
	void load_frontiers_flags_roads(const LuaTable& table);
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
220
	void load_ships(const LuaTable& table, Descriptions& descriptions);
221
	void load_wares(const LuaTable& table, Descriptions& descriptions);
222
	void load_immovables(const LuaTable& table, Descriptions& descriptions);
223
	void load_workers(const LuaTable& table, Descriptions& descriptions);
224
	void load_buildings(const LuaTable& table, Descriptions& descriptions);
9461 by The Widelands Bunnybot
Tribes filtering (#3693)
225
7175.7.113 by fios at foramnagaidhlig
Tribes are loading now.
226
	// Helper function for adding a special worker type (carriers etc.)
10191 by The Widelands Bunnybot
Fix misc clang-tidy checks in `logic` (#5255)
227
	DescriptionIndex add_special_worker(const std::string& workername,
228
	                                    Descriptions& descriptions) const;
7175.7.147 by fios at foramnagaidhlig
Fixed bugs with ships.
229
	// Helper function for adding a special building type (port etc.)
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
230
	DescriptionIndex add_special_building(const std::string& buildingname,
10191 by The Widelands Bunnybot
Fix misc clang-tidy checks in `logic` (#5255)
231
	                                      Descriptions& descriptions) const;
9461 by The Widelands Bunnybot
Tribes filtering (#3693)
232
	// Helper function to calculate trainingsites proportions for the AI
10191 by The Widelands Bunnybot
Fix misc clang-tidy checks in `logic` (#5255)
233
	void calculate_trainingsites_proportions(const Descriptions& descriptions) const;
8039.2.138 by tiborb95 at gmail
codefix
234
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
235
	void process_productionsites(Descriptions& descriptions);
9398 by The Widelands Bunnybot
Detect work area overlaps from MapObject programs (#4014)
236
7175.7.54 by fios at foramnagaidhlig
Indices in TribeDescr are now identical to those in Tribes.
237
	const std::string name_;
7175.7.131 by fios at foramnagaidhlig
Added TribeDescr to Lua Map interface and fixed building help for productionsites.
238
	const std::string descname_;
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
239
	const Descriptions& descriptions_;
7175.7.54 by fios at foramnagaidhlig
Indices in TribeDescr are now identical to those in Tribes.
240
10583 by The Widelands Bunnybot
Validate that all tribes possess all special animations (#5862)
241
	uint32_t frontier_animation_id_{0U};
242
	uint32_t flag_animation_id_{0U};
243
	uint32_t pinned_note_animation_id_{0U};
9204 by The Widelands Bunnybot
Noordfrees: Launchpad mirror (#3766)\n\nMirrors all changes at widelands:master to lp:widelands (1d6b62c7619a182081e1c942ae533a95d6112044)
244
	struct BridgeAnimationIDs {
245
		uint32_t e;
246
		uint32_t se;
247
		uint32_t sw;
248
	};
249
	BridgeAnimationIDs bridges_normal_;
250
	BridgeAnimationIDs bridges_busy_;
251
	uint32_t bridge_height_;
9461 by The Widelands Bunnybot
Tribes filtering (#3693)
252
253
	// A container of all texture images that can be used for drawing a
254
	// (normal|busy) road or a waterway. The images are guaranteed to exist.
7175.7.130 by fios at foramnagaidhlig
Merged trunk.
255
	RoadTextures road_textures_;
4677 by sigra
move more of the logic files into the logic directory
256
9612 by The Widelands Bunnybot
Unify tribes world (#4240)
257
	std::set<DescriptionIndex> buildings_;
8048 by GunChleoc
Ran clang-format.
258
	std::set<DescriptionIndex> immovables_;  // The player immovables
259
	std::set<DescriptionIndex> workers_;
260
	std::set<DescriptionIndex> wares_;
9644 by The Widelands Bunnybot
Amazon fixes (#4473)
261
	std::set<const BuildingDescr*> buildings_built_over_immovables_;
262
	std::set<std::string> used_resources_;
8771.2.1 by Benedikt Straub
Each TribeDescr defines its own set of resource indicators
263
	ResourceIndicatorSet resource_indicators_;
7617.2.8 by fios at foramnagaidhlig
Fixed Codecheck.
264
	// The wares that are used by construction sites
8048 by GunChleoc
Ran clang-format.
265
	std::set<DescriptionIndex> construction_materials_;
8039.2.128 by GunChleoc
Renamed "stines" to "granite".
266
	// Special units. Some of them are used by the engine, some are only used by the AI.
9999 by The Widelands Bunnybot
Support having more than 2 carriers on a road (#4938)
267
	DescriptionIndex builder_;                // The builder for this tribe
268
	std::vector<DescriptionIndex> carriers_;  // The basic and advanced carriers for this tribe
269
	DescriptionIndex geologist_;              // This tribe's geologist worker
270
	DescriptionIndex soldier_;                // The soldier that this tribe uses
271
	DescriptionIndex ship_;                   // The ship that this tribe uses
272
	DescriptionIndex ferry_;                  // The ferry that this tribe uses
273
	DescriptionIndex port_;                   // The port that this tribe uses
274
	DescriptionIndex scouts_house_;           // This tribe's scout's house/hut
8048 by GunChleoc
Ran clang-format.
275
	std::vector<DescriptionIndex> worker_types_without_cost_;
8325.4.1 by GunChleoc
Added new entry "trainingsites_max_percent" to AI building hints. If this is not set, the percentages will be evenly distributed while loading the tribe. TribeDescr now has a new convenience function trainingsites() .
276
	std::vector<DescriptionIndex> trainingsites_;
5611.1.1 by Joachim Breitner
Configurable order in WaresDisplay
277
	// Order and positioning of wares in the warehouse display
8048 by GunChleoc
Ran clang-format.
278
	WaresOrder wares_order_;
279
	WaresOrder workers_order_;
9792 by The Widelands Bunnybot
Support custom tribes in add-ons (#4708)
280
	std::vector<std::pair<std::string, int>> collectors_points_table_;
10477 by The Widelands Bunnybot
Naming Warehouses and Ships (#5703)
281
	std::vector<std::string> warehouse_names_;
4879 by sigra
* When a road decides to request a carrying animal, also set the road type to busy.
282
10333 by The Widelands Bunnybot
Military capacity string refactor (#5476)
283
	std::string productionsite_worker_missing_;
284
	std::string productionsite_workers_missing_;
285
	std::string productionsite_worker_coming_;
286
	std::string productionsite_workers_coming_;
10409 by The Widelands Bunnybot
Allow loading another replay in replay mode (#5611)
287
	std::string productionsite_experienced_worker_missing_;
288
	std::string productionsite_experienced_workers_missing_;
10333 by The Widelands Bunnybot
Military capacity string refactor (#5476)
289
290
	std::string soldier_context_;
291
	std::string soldier_capacity_strings_sg_[4];
292
	std::string soldier_capacity_strings_pl_[4];
9938 by The Widelands Bunnybot
Disambiguate productionsites' worker(s) missing/coming strings (#4971)
293
9033.4.50 by GunChleoc
Implemented optional custom toolbar images per tribe.
294
	// An optional custom imageset for the in-game menu toolbar
295
	std::unique_ptr<ToolbarImageset> toolbar_image_set_;
296
10058 by The Widelands Bunnybot
Fastplace Groups (#5110)
297
	std::map<std::string, std::string> fastplace_defaults_;
298
9792 by The Widelands Bunnybot
Support custom tribes in add-ons (#4708)
299
	Widelands::TribeBasicInfo basic_info_;
7076.2.3 by fios at foramnagaidhlig
Removed all uses of boost:: noncopyable except for src/wui/unique_window_handler.h
300
7175.1.4 by fios at foramnagaidhlig
Renamed everything in editor_game_base.h and widelands_geometry.h
301
	DISALLOW_COPY_AND_ASSIGN(TribeDescr);
4677 by sigra
move more of the logic files into the logic directory
302
};
8939 by Wideland's Bunnybot
Merged lp:~widelands-dev/widelands/appveyor_reenable_glbinding:
303
}  // namespace Widelands
4677 by sigra
move more of the logic files into the logic directory
304
7649.1.1 by fios at foramnagaidhlig
- Moved logic MapObjects and related classes into subdirectories.
305
#endif  // end of include guard: WL_LOGIC_MAP_OBJECTS_TRIBES_TRIBE_DESCR_H