Merge lp:~widelands-dev/widelands/compiler_warnings_201802 into lp:widelands

Proposed by GunChleoc
Status: Merged
Merged at revision: 8614
Proposed branch: lp:~widelands-dev/widelands/compiler_warnings_201802
Merge into: lp:widelands
Diff against target: 2034 lines (+262/-267)
61 files modified
src/economy/flag.cc (+3/-3)
src/economy/flag.h (+1/-1)
src/economy/fleet.cc (+10/-8)
src/economy/fleet.h (+1/-9)
src/economy/input_queue.h (+9/-1)
src/economy/portdock.cc (+2/-2)
src/economy/road.cc (+2/-3)
src/economy/shippingitem.cc (+1/-1)
src/economy/shippingitem.h (+1/-1)
src/economy/workers_queue.cc (+4/-4)
src/editor/ui_menus/tool_place_critter_options_menu.cc (+1/-1)
src/editor/ui_menus/tool_place_immovable_options_menu.cc (+1/-1)
src/game_io/game_player_info_packet.cc (+13/-13)
src/graphic/gl/fields_to_draw.cc (+2/-2)
src/io/streamread.cc (+2/-2)
src/logic/cmd_delete_message.cc (+1/-1)
src/logic/cmd_luacoroutine.cc (+1/-1)
src/logic/editor_game_base.cc (+11/-11)
src/logic/editor_game_base.h (+1/-1)
src/logic/map_objects/bob.cc (+7/-8)
src/logic/map_objects/immovable.h (+0/-6)
src/logic/map_objects/map_object.h (+7/-2)
src/logic/map_objects/tribes/battle.cc (+2/-2)
src/logic/map_objects/tribes/building.cc (+18/-17)
src/logic/map_objects/tribes/building.h (+1/-1)
src/logic/map_objects/tribes/constructionsite.cc (+2/-2)
src/logic/map_objects/tribes/dismantlesite.cc (+3/-3)
src/logic/map_objects/tribes/dismantlesite.h (+1/-1)
src/logic/map_objects/tribes/market.cc (+3/-3)
src/logic/map_objects/tribes/militarysite.cc (+10/-10)
src/logic/map_objects/tribes/production_program.cc (+1/-1)
src/logic/map_objects/tribes/productionsite.cc (+3/-3)
src/logic/map_objects/tribes/ship.cc (+1/-1)
src/logic/map_objects/tribes/soldier.cc (+3/-3)
src/logic/map_objects/tribes/trainingsite.cc (+3/-3)
src/logic/map_objects/tribes/warehouse.cc (+21/-22)
src/logic/map_objects/tribes/warehouse.h (+1/-1)
src/logic/map_objects/tribes/worker.cc (+10/-10)
src/logic/map_objects/tribes/worker.h (+1/-5)
src/logic/map_objects/tribes/worker_descr.cc (+2/-2)
src/logic/map_objects/tribes/worker_descr.h (+1/-1)
src/logic/map_objects/world/critter.cc (+6/-6)
src/logic/player.cc (+12/-12)
src/logic/player.h (+3/-3)
src/logic/playercommand.cc (+38/-38)
src/logic/playersmanager.h (+1/-1)
src/map_io/map_buildingdata_packet.cc (+5/-5)
src/map_io/map_flag_packet.cc (+1/-1)
src/map_io/map_players_messages_packet.cc (+6/-6)
src/map_io/map_roaddata_packet.cc (+2/-3)
src/network/netclient.cc (+1/-1)
src/network/netclientproxy.cc (+1/-1)
src/network/nethost.cc (+1/-1)
src/network/nethostproxy.cc (+1/-1)
src/network/netrelayconnection.cc (+2/-2)
src/scripting/lua_game.cc (+1/-1)
src/scripting/lua_map.cc (+2/-2)
src/ui_basic/fileview_panel.cc (+2/-1)
src/wui/game_message_menu.cc (+7/-7)
src/wui/interactive_player.cc (+1/-1)
src/wui/interactive_player.h (+1/-1)
To merge this branch: bzr merge lp:~widelands-dev/widelands/compiler_warnings_201802
Reviewer Review Type Date Requested Status
Klaus Halfmann review, compile Approve
Review via email: mp+339498@code.launchpad.net

Commit message

Fixed some compiler warnings and refactored some pointers/references

- Unused variable in worker.cc
- Member variable shadowing in fleet.h
- Refactored owner()/get_owner() and messages()/get_messages() to clearly distinguish between const& and *
- Removed unused lambda captures in editor tool UI
- Replaced lu with PRIuS macro to make Windows happy

To post a comment you must log in.
Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3250. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/346013750.
Appveyor build 3059. State: success. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_compiler_warnings_201802-3059.

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3252. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/346186101.
Appveyor build 3061. State: failed. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_compiler_warnings_201802-3061.

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3257. State: passed. Details: https://travis-ci.org/widelands/widelands/builds/346683571.
Appveyor build 3066. State: failed. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_compiler_warnings_201802-3066.

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3262. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/348112516.
Appveyor build 3071. State: failed. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_compiler_warnings_201802-3071.

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3273. State: passed. Details: https://travis-ci.org/widelands/widelands/builds/348614929.
Appveyor build 3082. State: success. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_compiler_warnings_201802-3082.

Revision history for this message
Klaus Halfmann (klaus-halfmann) wrote :

Code LGTM, looke like a cleanup favouring * instead of &,
we lost some not null assertion, though.

review: Approve (review, compile)
Revision history for this message
GunChleoc (gunchleoc) wrote :

Good point, I have added an assert to MessageQueue& messages(), so we should be covered now. Thanks for the review!

@bunnybot merge

Revision history for this message
bunnybot (widelandsofficial) wrote :

Continuous integration builds have changed state:

Travis build 3275. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/348905118.
Appveyor build 3084. State: failed. Details: https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_compiler_warnings_201802-3084.

Revision history for this message
bunnybot (widelandsofficial) wrote :

Refusing to merge, since Travis is not green. Use @bunnybot merge force for merging anyways.

Travis build 3275. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/348905118.

Revision history for this message
GunChleoc (gunchleoc) wrote :

That didn't work, so I've erased the extra commit.

@bunnybot merge

Revision history for this message
bunnybot (widelandsofficial) wrote :

Refusing to merge, since Travis is not green. Use @bunnybot merge force for merging anyways.

Travis build 3275. State: failed. Details: https://travis-ci.org/widelands/widelands/builds/348905118.

Revision history for this message
GunChleoc (gunchleoc) wrote :

The commit at the same state as the now overwritten branch was green on Travis

@bunnybot merge force

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/economy/flag.cc'
2--- src/economy/flag.cc 2017-11-09 17:37:13 +0000
3+++ src/economy/flag.cc 2018-03-04 15:27:08 +0000
4@@ -106,7 +106,7 @@
5 /**
6 * Create a flag at the given location
7 */
8-Flag::Flag(EditorGameBase& egbase, Player& owning_player, const Coords& coords)
9+Flag::Flag(EditorGameBase& egbase, Player* owning_player, const Coords& coords)
10 : PlayerImmovable(g_flag_descr),
11 building_(nullptr),
12 ware_capacity_(8),
13@@ -116,7 +116,7 @@
14 for (uint32_t i = 0; i < 6; ++i)
15 roads_[i] = nullptr;
16
17- set_owner(&owning_player);
18+ set_owner(owning_player);
19
20 set_flag_position(coords);
21
22@@ -125,7 +125,7 @@
23
24 if (game) {
25 // we split a road, or a new, standalone flag is created
26- (road ? road->get_economy() : new Economy(owning_player))->add_flag(*this);
27+ (road ? road->get_economy() : new Economy(*owning_player))->add_flag(*this);
28
29 if (road)
30 road->presplit(*game, coords);
31
32=== modified file 'src/economy/flag.h'
33--- src/economy/flag.h 2017-11-12 16:00:09 +0000
34+++ src/economy/flag.h 2018-03-04 15:27:08 +0000
35@@ -74,7 +74,7 @@
36 const FlagDescr& descr() const;
37
38 Flag(); /// empty flag for savegame loading
39- Flag(EditorGameBase&, Player& owner, const Coords&); /// create a new flag
40+ Flag(EditorGameBase&, Player* owner, const Coords&); /// create a new flag
41 ~Flag() override;
42
43 void load_finish(EditorGameBase&) override;
44
45=== modified file 'src/economy/fleet.cc'
46--- src/economy/fleet.cc 2017-11-25 15:46:56 +0000
47+++ src/economy/fleet.cc 2018-03-04 15:27:08 +0000
48@@ -56,7 +56,8 @@
49 * instance, then add themselves \em before calling the \ref init function.
50 * The Fleet takes care of merging with existing fleets, if any.
51 */
52-Fleet::Fleet(Player& player) : MapObject(&g_fleet_descr), owner_(player), act_pending_(false) {
53+Fleet::Fleet(Player* player) : MapObject(&g_fleet_descr), act_pending_(false) {
54+ owner_ = player;
55 }
56
57 /**
58@@ -81,7 +82,7 @@
59 assert(e == nullptr);
60 #endif
61
62- if (upcast(Game, game, &owner().egbase())) {
63+ if (upcast(Game, game, &get_owner()->egbase())) {
64 for (Ship* temp_ship : ships_) {
65 temp_ship->set_economy(*game, e);
66 }
67@@ -309,8 +310,9 @@
68 bool reverse;
69 const PortPath& pp(portpath_bidir(startidx, endidx, reverse));
70
71- if (pp.cost < 0)
72- connect_port(owner().egbase(), startidx);
73+ if (pp.cost < 0) {
74+ connect_port(get_owner()->egbase(), startidx);
75+ }
76
77 if (pp.cost < 0)
78 return false;
79@@ -356,7 +358,7 @@
80
81 if (pp.cost < 0) {
82 // Lazily discover routes between ports
83- connect_port(owner().egbase(), idx);
84+ connect_port(get_owner()->egbase(), idx);
85 }
86
87 if (pp.cost >= 0) {
88@@ -371,7 +373,7 @@
89 void Fleet::add_ship(Ship* ship) {
90 ships_.push_back(ship);
91 ship->set_fleet(this);
92- if (upcast(Game, game, &owner().egbase())) {
93+ if (upcast(Game, game, &get_owner()->egbase())) {
94 if (ports_.empty())
95 ship->set_economy(*game, nullptr);
96 else
97@@ -942,7 +944,7 @@
98 if (!owner)
99 throw GameDataError("owning player %u does not exist", owner_number);
100
101- loader->init(egbase, mol, *(new Fleet(*owner)));
102+ loader->init(egbase, mol, *(new Fleet(owner)));
103 loader->load(fr);
104 } else {
105 throw UnhandledVersionError("Fleet", packet_version, kCurrentPacketVersion);
106@@ -958,7 +960,7 @@
107 fw.unsigned_8(HeaderFleet);
108 fw.unsigned_8(kCurrentPacketVersion);
109
110- fw.unsigned_8(owner_.player_number());
111+ fw.unsigned_8(owner_->player_number());
112
113 MapObject::save(egbase, mos, fw);
114
115
116=== modified file 'src/economy/fleet.h'
117--- src/economy/fleet.h 2017-12-02 12:42:57 +0000
118+++ src/economy/fleet.h 2018-03-04 15:27:08 +0000
119@@ -75,14 +75,7 @@
120
121 const FleetDescr& descr() const;
122
123- explicit Fleet(Player& player);
124-
125- Player* get_owner() const {
126- return &owner_;
127- }
128- Player& owner() const {
129- return owner_;
130- }
131+ explicit Fleet(Player* player);
132
133 PortDock* get_dock(Flag& flag) const;
134 PortDock* get_dock(EditorGameBase&, Coords) const;
135@@ -125,7 +118,6 @@
136 PortPath& portpath_bidir(uint32_t i, uint32_t j, bool& reverse);
137 const PortPath& portpath_bidir(uint32_t i, uint32_t j, bool& reverse) const;
138
139- Player& owner_;
140 std::vector<Ship*> ships_;
141 std::vector<PortDock*> ports_;
142
143
144=== modified file 'src/economy/input_queue.h'
145--- src/economy/input_queue.h 2017-02-12 09:10:57 +0000
146+++ src/economy/input_queue.h 2018-03-04 15:27:08 +0000
147@@ -167,7 +167,7 @@
148 * Returns the player owning the building containing this queue.
149 * @return A reference to the owning player.
150 */
151- Player& owner() const {
152+ const Player& owner() const {
153 return owner_.owner();
154 }
155
156@@ -198,6 +198,14 @@
157 InputQueue(PlayerImmovable& owner, DescriptionIndex index, uint8_t max_size, WareWorker type);
158
159 /**
160+ * Returns the mutable player owning the building containing this queue.
161+ * @return A pointer to the owning player.
162+ */
163+ Player* get_owner() const {
164+ return owner_.get_owner();
165+ }
166+
167+ /**
168 * Called when an item arrives at the owning building.
169 * Most likely only one of \c i or \c w will be valid.
170 * @param g The game the queue is part of.
171
172=== modified file 'src/economy/portdock.cc'
173--- src/economy/portdock.cc 2017-11-12 16:30:35 +0000
174+++ src/economy/portdock.cc 2018-03-04 15:27:08 +0000
175@@ -130,7 +130,7 @@
176 if (fleet_)
177 fleet_->set_economy(e);
178
179- if (upcast(Game, game, &owner().egbase())) {
180+ if (upcast(Game, game, &get_owner()->egbase())) {
181 for (ShippingItem& shipping_item : waiting_) {
182 shipping_item.set_economy(*game, e);
183 }
184@@ -160,7 +160,7 @@
185 * that we merge with a larger fleet when possible.
186 */
187 void PortDock::init_fleet(EditorGameBase& egbase) {
188- Fleet* fleet = new Fleet(owner());
189+ Fleet* fleet = new Fleet(get_owner());
190 fleet->add_port(egbase, this);
191 fleet->init(egbase);
192 // Note: the Fleet calls our set_fleet automatically
193
194=== modified file 'src/economy/road.cc'
195--- src/economy/road.cc 2017-08-19 22:22:20 +0000
196+++ src/economy/road.cc 2018-03-04 15:27:08 +0000
197@@ -86,9 +86,8 @@
198 assert(end.get_position() == path.get_end());
199 assert(start.get_owner() == end.get_owner());
200
201- Player& owner = start.owner();
202 Road& road = *new Road();
203- road.set_owner(&owner);
204+ road.set_owner(start.get_owner());
205 road.type_ = RoadType::kNormal;
206 road.flags_[FlagStart] = &start;
207 road.flags_[FlagEnd] = &end;
208@@ -367,7 +366,7 @@
209 * If we lost our carrier, re-request it.
210 */
211 void Road::remove_worker(Worker& w) {
212- EditorGameBase& egbase = owner().egbase();
213+ EditorGameBase& egbase = get_owner()->egbase();
214
215 for (CarrierSlot& slot : carrier_slots_) {
216 Carrier const* carrier = slot.carrier.get(egbase);
217
218=== modified file 'src/economy/shippingitem.cc'
219--- src/economy/shippingitem.cc 2017-08-18 14:27:26 +0000
220+++ src/economy/shippingitem.cc 2018-03-04 15:27:08 +0000
221@@ -36,7 +36,7 @@
222 ShippingItem::ShippingItem(Worker& worker) : object_(&worker) {
223 }
224
225-void ShippingItem::get(EditorGameBase& game, WareInstance** ware, Worker** worker) const {
226+void ShippingItem::get(const EditorGameBase& game, WareInstance** ware, Worker** worker) const {
227 if (ware) {
228 *ware = nullptr;
229 }
230
231=== modified file 'src/economy/shippingitem.h'
232--- src/economy/shippingitem.h 2017-08-18 14:27:26 +0000
233+++ src/economy/shippingitem.h 2018-03-04 15:27:08 +0000
234@@ -50,7 +50,7 @@
235 // Unboxes the item that is shipped which might be either a ware or a
236 // worker. It is safe to pass nullptr for 'ware' or 'worker' in case you are
237 // only interested in the ware if it is the one or the other.
238- void get(EditorGameBase& game, WareInstance** ware, Worker** worker) const;
239+ void get(const EditorGameBase& game, WareInstance** ware, Worker** worker) const;
240
241 void set_economy(Game&, Economy* e);
242 PortDock* get_destination(Game&);
243
244=== modified file 'src/economy/workers_queue.cc'
245--- src/economy/workers_queue.cc 2017-02-12 09:10:57 +0000
246+++ src/economy/workers_queue.cc 2018-03-04 15:27:08 +0000
247@@ -75,7 +75,7 @@
248 assert(get_filled() < max_size_);
249 assert(index_ == index);
250
251- EditorGameBase& egbase = owner().egbase();
252+ EditorGameBase& egbase = get_owner()->egbase();
253 if (worker->get_location(egbase) != &(owner_)) {
254 worker->set_location(&(owner_));
255 }
256@@ -121,7 +121,7 @@
257 // Now adjust them
258 const TribeDescr& tribe = owner().tribe();
259 const WorkerDescr* worker_descr = tribe.get_worker_descr(index_);
260- EditorGameBase& egbase = owner().egbase();
261+ EditorGameBase& egbase = get_owner()->egbase();
262 upcast(Game, game, &egbase);
263 assert(game != nullptr);
264
265@@ -129,7 +129,7 @@
266 while (get_filled() < filled) {
267 // Create new worker
268 Worker& w =
269- worker_descr->create(egbase, owner(), &owner_, owner_.get_positions(egbase).front());
270+ worker_descr->create(egbase, get_owner(), &owner_, owner_.get_positions(egbase).front());
271 assert(w.get_location(egbase) == &owner_);
272 w.start_task_idle(*game, 0, -1);
273 workers_.push_back(&w);
274@@ -157,7 +157,7 @@
275 InputQueue::set_max_fill(q);
276
277 // If requested, kick out workers
278- upcast(Game, game, &owner().egbase());
279+ upcast(Game, game, &get_owner()->egbase());
280 while (workers_.size() > max_fill_) {
281 workers_.back()->reset_tasks(*game);
282 workers_.back()->start_task_leavebuilding(*game, true);
283
284=== modified file 'src/editor/ui_menus/tool_place_critter_options_menu.cc'
285--- src/editor/ui_menus/tool_place_critter_options_menu.cc 2017-05-14 14:40:24 +0000
286+++ src/editor/ui_menus/tool_place_critter_options_menu.cc 2018-03-04 15:27:08 +0000
287@@ -53,7 +53,7 @@
288 multi_select_menu_.reset(
289 new CategorizedItemSelectionMenu<Widelands::CritterDescr, EditorPlaceCritterTool>(
290 this, world.editor_critter_categories(), world.critters(),
291- [this](UI::Panel* cb_parent, const Widelands::CritterDescr& critter_descr) {
292+ [](UI::Panel* cb_parent, const Widelands::CritterDescr& critter_descr) {
293 return create_critter_checkbox(cb_parent, critter_descr);
294 },
295 [this] { select_correct_tool(); }, &tool));
296
297=== modified file 'src/editor/ui_menus/tool_place_immovable_options_menu.cc'
298--- src/editor/ui_menus/tool_place_immovable_options_menu.cc 2017-05-14 14:40:24 +0000
299+++ src/editor/ui_menus/tool_place_immovable_options_menu.cc 2018-03-04 15:27:08 +0000
300@@ -54,7 +54,7 @@
301 multi_select_menu_.reset(
302 new CategorizedItemSelectionMenu<Widelands::ImmovableDescr, EditorPlaceImmovableTool>(
303 this, world.editor_immovable_categories(), world.immovables(),
304- [this](UI::Panel* cb_parent, const ImmovableDescr& immovable_descr) {
305+ [](UI::Panel* cb_parent, const ImmovableDescr& immovable_descr) {
306 return create_immovable_checkbox(cb_parent, immovable_descr);
307 },
308 [this] { select_correct_tool(); }, &tool));
309
310=== modified file 'src/game_io/game_player_info_packet.cc'
311--- src/game_io/game_player_info_packet.cc 2017-01-25 18:55:59 +0000
312+++ src/game_io/game_player_info_packet.cc 2018-03-04 15:27:08 +0000
313@@ -55,19 +55,19 @@
314 std::string const name = fr.c_string();
315
316 game.add_player(plnum, 0, tribe_name, name, team);
317- Player& player = game.player(plnum);
318- player.set_see_all(see_all);
319-
320- player.set_ai(fr.c_string());
321- player.read_statistics(fr);
322- player.read_remaining_shipnames(fr);
323-
324- player.casualties_ = fr.unsigned_32();
325- player.kills_ = fr.unsigned_32();
326- player.msites_lost_ = fr.unsigned_32();
327- player.msites_defeated_ = fr.unsigned_32();
328- player.civil_blds_lost_ = fr.unsigned_32();
329- player.civil_blds_defeated_ = fr.unsigned_32();
330+ Player* player = game.get_player(plnum);
331+ player->set_see_all(see_all);
332+
333+ player->set_ai(fr.c_string());
334+ player->read_statistics(fr);
335+ player->read_remaining_shipnames(fr);
336+
337+ player->casualties_ = fr.unsigned_32();
338+ player->kills_ = fr.unsigned_32();
339+ player->msites_lost_ = fr.unsigned_32();
340+ player->msites_defeated_ = fr.unsigned_32();
341+ player->civil_blds_lost_ = fr.unsigned_32();
342+ player->civil_blds_defeated_ = fr.unsigned_32();
343 }
344 }
345
346
347=== modified file 'src/graphic/gl/fields_to_draw.cc'
348--- src/graphic/gl/fields_to_draw.cc 2017-08-29 10:48:24 +0000
349+++ src/graphic/gl/fields_to_draw.cc 2018-03-04 15:27:08 +0000
350@@ -146,8 +146,8 @@
351
352 f.brightness = field_brightness(f.fcoords);
353
354- Widelands::PlayerNumber owned_by = f.fcoords.field->get_owned_by();
355- f.owner = owned_by != 0 ? &egbase.player(owned_by) : nullptr;
356+ const Widelands::PlayerNumber owned_by = f.fcoords.field->get_owned_by();
357+ f.owner = owned_by != 0 ? egbase.get_player(owned_by) : nullptr;
358 f.is_border = f.fcoords.field->is_border();
359 f.vision = 2;
360 f.roads = f.fcoords.field->get_roads();
361
362=== modified file 'src/io/streamread.cc'
363--- src/io/streamread.cc 2017-01-25 18:55:59 +0000
364+++ src/io/streamread.cc 2018-03-04 15:27:08 +0000
365@@ -50,8 +50,8 @@
366 size_t read = data(read_data, size);
367
368 if (read != size)
369- throw data_error("Stream ended unexpectedly (%lu bytes read, %lu expected)",
370- static_cast<long unsigned int>(read), static_cast<long unsigned int>(size));
371+ throw data_error("Stream ended unexpectedly (%" PRIuS " bytes read, %" PRIuS " expected)",
372+ read, size);
373 }
374
375 int8_t StreamRead::signed_8() {
376
377=== modified file 'src/logic/cmd_delete_message.cc'
378--- src/logic/cmd_delete_message.cc 2017-01-25 18:55:59 +0000
379+++ src/logic/cmd_delete_message.cc 2018-03-04 15:27:08 +0000
380@@ -25,6 +25,6 @@
381 namespace Widelands {
382
383 void CmdDeleteMessage::execute(Game& game) {
384- game.player(player).messages().delete_message(message);
385+ game.get_player(player)->get_messages()->delete_message(message);
386 }
387 }
388
389=== modified file 'src/logic/cmd_luacoroutine.cc'
390--- src/logic/cmd_luacoroutine.cc 2017-07-07 07:20:10 +0000
391+++ src/logic/cmd_luacoroutine.cc 2018-03-04 15:27:08 +0000
392@@ -57,7 +57,7 @@
393 Message::Type::kGameLogic, game.get_gametime(), "Coroutine",
394 "images/ui_basic/menu_help.png", "Lua Coroutine Failed",
395 (boost::format("<rt><p font-size=12>%s</p></rt>") % e.what()).str()));
396- game.player(i).add_message(game, std::move(msg), true);
397+ game.get_player(i)->add_message(game, std::move(msg), true);
398 }
399 game.game_controller()->set_desired_speed(0);
400 }
401
402=== modified file 'src/logic/editor_game_base.cc'
403--- src/logic/editor_game_base.cc 2017-11-11 18:59:55 +0000
404+++ src/logic/editor_game_base.cc 2018-03-04 15:27:08 +0000
405@@ -160,7 +160,7 @@
406 return player_manager_->get_player(n);
407 }
408
409-Player& EditorGameBase::player(const int32_t n) const {
410+const Player& EditorGameBase::player(const int32_t n) const {
411 return player_manager_->player(n);
412 }
413
414@@ -225,8 +225,8 @@
415 PlayerNumber const owner,
416 DescriptionIndex const idx,
417 Building::FormerBuildings former_buildings) {
418- Player& plr = player(owner);
419- const TribeDescr& tribe = plr.tribe();
420+ Player* plr = get_player(owner);
421+ const TribeDescr& tribe = plr->tribe();
422 return tribe.get_building_descr(idx)->create(*this, plr, c, false, true, former_buildings);
423 }
424
425@@ -242,8 +242,8 @@
426 DescriptionIndex idx,
427 bool loading,
428 Building::FormerBuildings former_buildings) {
429- Player& plr = player(owner);
430- const TribeDescr& tribe = plr.tribe();
431+ Player* plr = get_player(owner);
432+ const TribeDescr& tribe = plr->tribe();
433 return tribe.get_building_descr(idx)->create(*this, plr, c, true, loading, former_buildings);
434 }
435
436@@ -256,15 +256,15 @@
437 PlayerNumber const owner,
438 bool loading,
439 Building::FormerBuildings former_buildings) {
440- Player& plr = player(owner);
441- const TribeDescr& tribe = plr.tribe();
442+ Player* plr = get_player(owner);
443+ const TribeDescr& tribe = plr->tribe();
444
445 BuildingDescr const* const descr =
446 tribe.get_building_descr(tribe.safe_building_index("dismantlesite"));
447
448 upcast(const DismantleSiteDescr, ds_descr, descr);
449
450- return *new DismantleSite(*ds_descr, *this, c, *get_player(owner), loading, former_buildings);
451+ return *new DismantleSite(*ds_descr, *this, c, plr, loading, former_buildings);
452 }
453
454 /**
455@@ -576,7 +576,7 @@
456 assert(preferred_player <= map().get_nrplayers());
457 assert(preferred_player != player_area.player_number);
458 assert(!conquer || !preferred_player);
459- Player& conquering_player = player(player_area.player_number);
460+ Player* conquering_player = get_player(player_area.player_number);
461 MapRegion<Area<FCoords>> mr(map(), player_area);
462 do {
463 MapIndex const index = mr.location().field - &first_field;
464@@ -586,14 +586,14 @@
465 PlayerNumber const owner = mr.location().field->get_owned_by();
466 if (conquer) {
467 // adds the influence
468- MilitaryInfluence new_influence_modified = conquering_player.military_influence(index) +=
469+ MilitaryInfluence new_influence_modified = conquering_player->military_influence(index) +=
470 influence;
471 if (owner && !conquer_guarded_location_by_superior_influence)
472 new_influence_modified = 1;
473 if (!owner || player(owner).military_influence(index) < new_influence_modified) {
474 change_field_owner(mr.location(), player_area.player_number);
475 }
476- } else if (!(conquering_player.military_influence(index) -= influence) &&
477+ } else if (!(conquering_player->military_influence(index) -= influence) &&
478 owner == player_area.player_number) {
479 // The player completely lost influence over the location, which he
480 // owned. Now we must see if some other player has influence and if
481
482=== modified file 'src/logic/editor_game_base.h'
483--- src/logic/editor_game_base.h 2017-08-20 15:45:50 +0000
484+++ src/logic/editor_game_base.h 2018-03-04 15:27:08 +0000
485@@ -108,7 +108,7 @@
486 const std::string& name,
487 TeamNumber team = 0);
488 Player* get_player(int32_t n) const;
489- Player& player(int32_t n) const;
490+ const Player& player(int32_t n) const;
491 virtual Player* get_safe_player(PlayerNumber);
492
493 // loading stuff
494
495=== modified file 'src/logic/map_objects/bob.cc'
496--- src/logic/map_objects/bob.cc 2017-09-22 09:26:28 +0000
497+++ src/logic/map_objects/bob.cc 2018-03-04 15:27:08 +0000
498@@ -767,11 +767,11 @@
499 return;
500 }
501
502- auto* const owner = get_owner();
503+ auto* const bob_owner = get_owner();
504 const Vector2f point_on_dst = calc_drawpos(egbase, field_on_dst, scale);
505- if (owner != nullptr) {
506+ if (bob_owner != nullptr) {
507 dst->blit_animation(
508- point_on_dst, scale, anim_, egbase.get_gametime() - animstart_, owner->get_playercolor());
509+ point_on_dst, scale, anim_, egbase.get_gametime() - animstart_, bob_owner->get_playercolor());
510 } else {
511 dst->blit_animation(point_on_dst, scale, anim_, egbase.get_gametime() - animstart_);
512 }
513@@ -919,11 +919,11 @@
514
515 molog("Signal: %s\n", signal_.c_str());
516
517- molog("Stack size: %lu\n", static_cast<long unsigned int>(stack_.size()));
518+ molog("Stack size: %" PRIuS "\n", stack_.size());
519
520 for (size_t i = 0; i < stack_.size(); ++i) {
521- molog("Stack dump %lu/%lu\n", static_cast<long unsigned int>(i + 1),
522- static_cast<long unsigned int>(stack_.size()));
523+ molog("Stack dump %" PRIuS "/%" PRIuS "\n", i + 1,
524+ stack_.size());
525
526 molog("* task->name: %s\n", stack_[i].task->name);
527
528@@ -946,8 +946,7 @@
529 FORMAT_WARNINGS_ON;
530 if (stack_[i].path) {
531 const Path& path = *stack_[i].path;
532- Path::StepVector::size_type nr_steps = path.get_nsteps();
533- molog("** Path length: %lu\n", static_cast<long unsigned int>(nr_steps));
534+ molog("** Path length: %" PRIuS "\n", path.get_nsteps());
535 molog("** Start: (%i, %i)\n", path.get_start().x, path.get_start().y);
536 molog("** End: (%i, %i)\n", path.get_end().x, path.get_end().y);
537 // Printing all coordinates of the path
538
539=== modified file 'src/logic/map_objects/immovable.h'
540--- src/logic/map_objects/immovable.h 2017-11-26 14:44:23 +0000
541+++ src/logic/map_objects/immovable.h 2018-03-04 15:27:08 +0000
542@@ -332,12 +332,6 @@
543 explicit PlayerImmovable(const MapObjectDescr&);
544 ~PlayerImmovable() override;
545
546- Player* get_owner() const {
547- return owner_;
548- }
549- Player& owner() const {
550- return *owner_;
551- }
552 Economy* get_economy() const {
553 return economy_;
554 }
555
556=== modified file 'src/logic/map_objects/map_object.h'
557--- src/logic/map_objects/map_object.h 2018-01-23 00:23:13 +0000
558+++ src/logic/map_objects/map_object.h 2018-03-04 15:27:08 +0000
559@@ -208,8 +208,8 @@
560 *
561 * When you do create a new object yourself (i.e. when you're implementing one
562 * of the create() functions), you need to allocate the object using new,
563- * potentially set it up by calling basic functions like set_position(),
564- * set_owner(), etc. and then call init(). After that, the object is supposed to
565+ * potentially set it up by calling basic functions like set_position(), etc.
566+ * and then call init(). After that, the object is supposed to
567 * be fully created.
568 */
569
570@@ -310,6 +310,11 @@
571 return owner_;
572 }
573
574+ const Player& owner() const {
575+ assert(get_owner());
576+ return *owner_;
577+ }
578+
579 // Header bytes to distinguish between data packages for the different
580 // MapObject classes. Be careful in changing those, since they are written
581 // to files.
582
583=== modified file 'src/logic/map_objects/tribes/battle.cc'
584--- src/logic/map_objects/tribes/battle.cc 2017-08-16 13:23:15 +0000
585+++ src/logic/map_objects/tribes/battle.cc 2018-03-04 15:27:08 +0000
586@@ -176,8 +176,8 @@
587
588 if (soldier.get_current_health() < 1) {
589 molog("[battle] soldier %u lost the battle\n", soldier.serial());
590- soldier.owner().count_casualty();
591- opponent(soldier)->owner().count_kill();
592+ soldier.get_owner()->count_casualty();
593+ opponent(soldier)->get_owner()->count_kill();
594 soldier.start_task_die(game);
595 molog("[battle] waking up winner %d\n", opponent(soldier)->serial());
596 opponent(soldier)->send_signal(game, "wakeup");
597
598=== modified file 'src/logic/map_objects/tribes/building.cc'
599--- src/logic/map_objects/tribes/building.cc 2018-01-11 11:40:45 +0000
600+++ src/logic/map_objects/tribes/building.cc 2018-03-04 15:27:08 +0000
601@@ -166,14 +166,14 @@
602 }
603
604 Building& BuildingDescr::create(EditorGameBase& egbase,
605- Player& owner,
606+ Player* owner,
607 Coords const pos,
608 bool const construct,
609 bool loading,
610 Building::FormerBuildings const former_buildings) const {
611 Building& b = construct ? create_constructionsite() : create_object();
612 b.position_ = pos;
613- b.set_owner(&owner);
614+ b.set_owner(owner);
615 for (DescriptionIndex idx : former_buildings) {
616 b.old_buildings_.push_back(idx);
617 }
618@@ -356,7 +356,7 @@
619 {
620 Flag* flag = dynamic_cast<Flag*>(map.get_immovable(neighb));
621 if (!flag)
622- flag = new Flag(egbase, owner(), neighb);
623+ flag = new Flag(egbase, get_owner(), neighb);
624 flag_ = flag;
625 flag->attach_building(egbase, *this);
626 }
627@@ -370,13 +370,13 @@
628
629 void Building::cleanup(EditorGameBase& egbase) {
630 if (defeating_player_) {
631- Player& defeating_player = egbase.player(defeating_player_);
632+ Player* defeating_player = egbase.get_player(defeating_player_);
633 if (descr().get_conquers()) {
634- owner().count_msite_lost();
635- defeating_player.count_msite_defeated();
636+ get_owner()->count_msite_lost();
637+ defeating_player->count_msite_defeated();
638 } else {
639- owner().count_civil_bld_lost();
640- defeating_player.count_civil_bld_defeated();
641+ get_owner()->count_civil_bld_lost();
642+ defeating_player->count_civil_bld_defeated();
643 }
644 }
645
646@@ -684,7 +684,7 @@
647
648 molog("leave_time: %i\n", leave_time_);
649
650- molog("leave_queue.size(): %lu\n", static_cast<long unsigned int>(leave_queue_.size()));
651+ molog("leave_queue.size(): %" PRIuS "\n", leave_queue_.size());
652 FORMAT_WARNINGS_OFF;
653 molog("leave_allow.get(): %p\n", leave_allow_.get(egbase));
654 FORMAT_WARNINGS_ON;
655@@ -727,13 +727,14 @@
656 if (see == seeing_)
657 return;
658
659- Player& player = owner();
660- const Map& map = player.egbase().map();
661+ Player* player = get_owner();
662+ const Map& map = player->egbase().map();
663
664- if (see)
665- player.see_area(Area<FCoords>(map.get_fcoords(get_position()), descr().vision_range()));
666- else
667- player.unsee_area(Area<FCoords>(map.get_fcoords(get_position()), descr().vision_range()));
668+ if (see) {
669+ player->see_area(Area<FCoords>(map.get_fcoords(get_position()), descr().vision_range()));
670+ } else {
671+ player->unsee_area(Area<FCoords>(map.get_fcoords(get_position()), descr().vision_range()));
672+ }
673
674 seeing_ = see;
675 }
676@@ -778,9 +779,9 @@
677 (link_to_building_lifetime ? serial_ : 0)));
678
679 if (throttle_time) {
680- owner().add_message_with_timeout(game, std::move(msg), throttle_time, throttle_radius);
681+ get_owner()->add_message_with_timeout(game, std::move(msg), throttle_time, throttle_radius);
682 } else {
683- owner().add_message(game, std::move(msg));
684+ get_owner()->add_message(game, std::move(msg));
685 }
686 }
687 }
688
689=== modified file 'src/logic/map_objects/tribes/building.h'
690--- src/logic/map_objects/tribes/building.h 2018-01-23 00:23:13 +0000
691+++ src/logic/map_objects/tribes/building.h 2018-03-04 15:27:08 +0000
692@@ -143,7 +143,7 @@
693 /// Does not perform any sanity checks.
694 /// If former_buildings is not empty this is an enhancing.
695 Building& create(EditorGameBase&,
696- Player&,
697+ Player*,
698 Coords,
699 bool construct,
700 bool loading = false,
701
702=== modified file 'src/logic/map_objects/tribes/constructionsite.cc'
703--- src/logic/map_objects/tribes/constructionsite.cc 2017-12-17 17:47:34 +0000
704+++ src/logic/map_objects/tribes/constructionsite.cc 2018-03-04 15:27:08 +0000
705@@ -189,7 +189,7 @@
706 // Put the real building in place
707 DescriptionIndex becomes_idx = owner().tribe().building_index(building_->name());
708 old_buildings_.push_back(becomes_idx);
709- Building& b = building_->create(egbase, owner(), position_, false, false, old_buildings_);
710+ Building& b = building_->create(egbase, get_owner(), position_, false, false, old_buildings_);
711 if (Worker* const builder = builder_.get(egbase)) {
712 builder->reset_tasks(dynamic_cast<Game&>(egbase));
713 builder->set_location(&b);
714@@ -294,7 +294,7 @@
715 wq.set_max_size(wq.get_max_size() - 1);
716
717 // Update consumption statistic
718- owner().ware_consumed(wq.get_index(), 1);
719+ get_owner()->ware_consumed(wq.get_index(), 1);
720
721 working_ = true;
722 work_steptime_ = game.get_gametime() + CONSTRUCTIONSITE_STEP_TIME;
723
724=== modified file 'src/logic/map_objects/tribes/dismantlesite.cc'
725--- src/logic/map_objects/tribes/dismantlesite.cc 2017-12-17 17:47:34 +0000
726+++ src/logic/map_objects/tribes/dismantlesite.cc 2018-03-04 15:27:08 +0000
727@@ -68,12 +68,12 @@
728 DismantleSite::DismantleSite(const DismantleSiteDescr& gdescr,
729 EditorGameBase& egbase,
730 const Coords& c,
731- Player& plr,
732+ Player* plr,
733 bool loading,
734 Building::FormerBuildings& former_buildings)
735 : PartiallyFinishedBuilding(gdescr) {
736 position_ = c;
737- set_owner(&plr);
738+ set_owner(plr);
739
740 assert(!former_buildings.empty());
741 for (DescriptionIndex former_idx : former_buildings) {
742@@ -184,7 +184,7 @@
743 wq.set_max_size(wq.get_max_size() - 1);
744
745 // Update statistics
746- owner().ware_produced(wq.get_index());
747+ get_owner()->ware_produced(wq.get_index());
748
749 const WareDescr& wd = *owner().tribe().get_ware_descr(wq.get_index());
750 WareInstance& ware = *new WareInstance(wq.get_index(), &wd);
751
752=== modified file 'src/logic/map_objects/tribes/dismantlesite.h'
753--- src/logic/map_objects/tribes/dismantlesite.h 2017-08-18 17:32:16 +0000
754+++ src/logic/map_objects/tribes/dismantlesite.h 2018-03-04 15:27:08 +0000
755@@ -69,7 +69,7 @@
756 explicit DismantleSite(const DismantleSiteDescr& descr,
757 EditorGameBase&,
758 const Coords&,
759- Player&,
760+ Player*,
761 bool,
762 Building::FormerBuildings& former_buildings);
763
764
765=== modified file 'src/logic/map_objects/tribes/market.cc'
766--- src/logic/map_objects/tribes/market.cc 2017-10-04 00:27:47 +0000
767+++ src/logic/map_objects/tribes/market.cc 2018-03-04 15:27:08 +0000
768@@ -243,14 +243,14 @@
769 // ware to drop it off. The carrier then leaves the building and goes home.
770 const WorkerDescr& w_desc =
771 *game->tribes().get_worker_descr(game->tribes().worker_index("barbarians_carrier"));
772- auto& worker = w_desc.create(*game, owner(), this, position_);
773+ auto& worker = w_desc.create(*game, get_owner(), this, position_);
774 worker.start_task_dropoff(*game, *ware);
775 trade_order.received_traded_wares_in_this_batch += 1;
776- owner().ware_produced(ware_index);
777+ get_owner()->ware_produced(ware_index);
778
779 auto* other_market = dynamic_cast<Market*>(game->objects().get_object(trade_order.other_side));
780 assert(other_market != nullptr);
781- other_market->owner().ware_consumed(ware_index, 1);
782+ other_market->get_owner()->ware_consumed(ware_index, 1);
783 auto& other_trade_order = other_market->trade_orders_.at(trade_id);
784 if (trade_order.received_traded_wares_in_this_batch == other_trade_order.num_wares_per_batch() &&
785 other_trade_order.received_traded_wares_in_this_batch == trade_order.num_wares_per_batch()) {
786
787=== modified file 'src/logic/map_objects/tribes/militarysite.cc'
788--- src/logic/map_objects/tribes/militarysite.cc 2017-11-30 10:59:06 +0000
789+++ src/logic/map_objects/tribes/militarysite.cc 2018-03-04 15:27:08 +0000
790@@ -88,7 +88,7 @@
791 }
792
793 void MilitarySite::SoldierControl::drop_soldier(Soldier& soldier) {
794- Game& game = dynamic_cast<Game&>(military_site_->owner().egbase());
795+ Game& game = dynamic_cast<Game&>(military_site_->get_owner()->egbase());
796
797 if (!military_site_->is_present(soldier)) {
798 // This can happen when the "drop soldier" player command is delayed
799@@ -154,16 +154,16 @@
800 }
801
802 void MilitarySite::AttackTarget::enemy_soldier_approaches(const Soldier& enemy) const {
803- auto& owner = military_site_->owner();
804- Game& game = dynamic_cast<Game&>(owner.egbase());
805+ Player* owner = military_site_->get_owner();
806+ Game& game = dynamic_cast<Game&>(owner->egbase());
807 const Map& map = game.map();
808- if (enemy.get_owner() == &owner || enemy.get_battle() ||
809+ if (enemy.get_owner() == owner || enemy.get_battle() ||
810 military_site_->descr().get_conquers() <=
811 map.calc_distance(enemy.get_position(), military_site_->get_position()))
812 return;
813
814 if (map.find_bobs(Area<FCoords>(map.get_fcoords(military_site_->base_flag().get_position()), 2),
815- nullptr, FindBobEnemySoldier(&owner)))
816+ nullptr, FindBobEnemySoldier(owner)))
817 return;
818
819 // We're dealing with a soldier that we might want to keep busy
820@@ -191,7 +191,7 @@
821 }
822
823 AttackTarget::AttackResult MilitarySite::AttackTarget::attack(Soldier* enemy) const {
824- Game& game = dynamic_cast<Game&>(military_site_->owner().egbase());
825+ Game& game = dynamic_cast<Game&>(military_site_->get_owner()->egbase());
826
827 std::vector<Soldier*> present = military_site_->soldier_control_.present_soldiers();
828 Soldier* defender = nullptr;
829@@ -519,7 +519,7 @@
830
831 // Now I know that the new guy is worthy.
832 if (nullptr != kickoutCandidate) {
833- Game& game = dynamic_cast<Game&>(owner().egbase());
834+ Game& game = dynamic_cast<Game&>(get_owner()->egbase());
835 kickoutCandidate->reset_tasks(game);
836 kickoutCandidate->start_task_leavebuilding(game, true);
837 return true;
838@@ -580,7 +580,7 @@
839 }
840
841 if (capacity_ < present.size()) {
842- Game& game = dynamic_cast<Game&>(owner().egbase());
843+ Game& game = dynamic_cast<Game&>(get_owner()->egbase());
844 for (uint32_t i = 0; i < present.size() - capacity_; ++i) {
845 Soldier& soldier = *present[i];
846 soldier.reset_tasks(game);
847@@ -812,7 +812,7 @@
848 * \return \c true if the soldier is currently present and idle in the building.
849 */
850 bool MilitarySite::is_present(Soldier& soldier) const {
851- return soldier.get_location(owner().egbase()) == this &&
852+ return soldier.get_location(get_owner()->egbase()) == this &&
853 soldier.get_state() == soldier.get_state(Worker::taskBuildingwork) &&
854 soldier.get_position() == get_position();
855 }
856@@ -894,7 +894,7 @@
857 sj.stayhome = false;
858 soldierjobs_.push_back(sj);
859
860- soldier.update_task_buildingwork(dynamic_cast<Game&>(owner().egbase()));
861+ soldier.update_task_buildingwork(dynamic_cast<Game&>(get_owner()->egbase()));
862 }
863
864 bool MilitarySite::has_soldier_job(Soldier& soldier) {
865
866=== modified file 'src/logic/map_objects/tribes/production_program.cc'
867--- src/logic/map_objects/tribes/production_program.cc 2017-12-02 11:41:19 +0000
868+++ src/logic/map_objects/tribes/production_program.cc 2018-03-04 15:27:08 +0000
869@@ -912,7 +912,7 @@
870
871 // Update consumption statistics
872 if (inputqueues[i]->get_type() == wwWARE) {
873- ps.owner().ware_consumed(inputqueues[i]->get_index(), q);
874+ ps.get_owner()->ware_consumed(inputqueues[i]->get_index(), q);
875 }
876 }
877 }
878
879=== modified file 'src/logic/map_objects/tribes/productionsite.cc'
880--- src/logic/map_objects/tribes/productionsite.cc 2017-09-15 19:45:11 +0000
881+++ src/logic/map_objects/tribes/productionsite.cc 2018-03-04 15:27:08 +0000
882@@ -514,7 +514,7 @@
883 continue;
884
885 // Okay, space is free and worker is fitting. Let's create him
886- Worker& worker = wdes.create(egbase, owner(), this, get_position());
887+ Worker& worker = wdes.create(egbase, get_owner(), this, get_position());
888
889 if (upcast(Game, game, &egbase))
890 worker.start_task_idle(*game, 0, -1);
891@@ -788,7 +788,7 @@
892 ware.init(game);
893 worker.start_task_dropoff(game, ware);
894 }
895- owner().ware_produced(ware_index); // for statistics
896+ get_owner()->ware_produced(ware_index); // for statistics
897 }
898 assert(ware_type_with_count.second);
899 if (--ware_type_with_count.second == 0)
900@@ -805,7 +805,7 @@
901 *owner().tribe().get_worker_descr(worker_type_with_count.first);
902 {
903 Worker& recruit = dynamic_cast<Worker&>(worker_descr.create_object());
904- recruit.set_owner(&worker.owner());
905+ recruit.set_owner(worker.get_owner());
906 recruit.set_position(game, worker.get_position());
907 recruit.init(game);
908 recruit.set_location(this);
909
910=== modified file 'src/logic/map_objects/tribes/ship.cc'
911--- src/logic/map_objects/tribes/ship.cc 2018-02-23 07:54:12 +0000
912+++ src/logic/map_objects/tribes/ship.cc 2018-03-04 15:27:08 +0000
913@@ -171,7 +171,7 @@
914 */
915 bool Ship::init_fleet(EditorGameBase& egbase) {
916 assert(get_owner() != nullptr);
917- Fleet* fleet = new Fleet(*get_owner());
918+ Fleet* fleet = new Fleet(get_owner());
919 fleet->add_ship(this);
920 return fleet->init(egbase);
921 // fleet calls the set_fleet function appropriately
922
923=== modified file 'src/logic/map_objects/tribes/soldier.cc'
924--- src/logic/map_objects/tribes/soldier.cc 2017-12-17 17:47:34 +0000
925+++ src/logic/map_objects/tribes/soldier.cc 2018-03-04 15:27:08 +0000
926@@ -622,7 +622,7 @@
927 if (!battle_) {
928 return true;
929 }
930- return !battle_->locked(dynamic_cast<Game&>(owner().egbase()));
931+ return !battle_->locked(dynamic_cast<Game&>(get_owner()->egbase()));
932 }
933
934 /**
935@@ -1345,12 +1345,12 @@
936 (immovable_dest ? immovable_dest->descr().descname().c_str() : ("no")) %
937 descr().descname().c_str())
938 .str();
939- owner().add_message(
940+ get_owner()->add_message(
941 game, std::unique_ptr<Message>(
942 new Message(Message::Type::kGameLogic, game.get_gametime(),
943 descr().descname(), "images/ui_basic/menu_help.png",
944 _("Logic error"), messagetext, get_position(), serial_)));
945- opponent.owner().add_message(
946+ opponent.get_owner()->add_message(
947 game, std::unique_ptr<Message>(new Message(
948 Message::Type::kGameLogic, game.get_gametime(), descr().descname(),
949 "images/ui_basic/menu_help.png", _("Logic error"), messagetext,
950
951=== modified file 'src/logic/map_objects/tribes/trainingsite.cc'
952--- src/logic/map_objects/tribes/trainingsite.cc 2017-11-09 17:37:13 +0000
953+++ src/logic/map_objects/tribes/trainingsite.cc 2018-03-04 15:27:08 +0000
954@@ -216,7 +216,7 @@
955 * soldier is actually stationed here, without breaking anything if he isn't.
956 */
957 void TrainingSite::SoldierControl::drop_soldier(Soldier& soldier) {
958- Game& game = dynamic_cast<Game&>(training_site_->owner().egbase());
959+ Game& game = dynamic_cast<Game&>(training_site_->get_owner()->egbase());
960
961 std::vector<Soldier*>::iterator it =
962 std::find(training_site_->soldiers_.begin(), training_site_->soldiers_.end(), &soldier);
963@@ -349,13 +349,13 @@
964 if (std::find(soldiers_.begin(), soldiers_.end(), soldier) == soldiers_.end())
965 soldiers_.push_back(soldier);
966
967- if (upcast(Game, game, &owner().egbase()))
968+ if (upcast(Game, game, &get_owner()->egbase()))
969 schedule_act(*game, 100);
970 }
971 }
972
973 void TrainingSite::remove_worker(Worker& w) {
974- upcast(Game, game, &owner().egbase());
975+ upcast(Game, game, &get_owner()->egbase());
976
977 if (upcast(Soldier, soldier, &w)) {
978 std::vector<Soldier*>::iterator const it =
979
980=== modified file 'src/logic/map_objects/tribes/warehouse.cc'
981--- src/logic/map_objects/tribes/warehouse.cc 2017-08-30 12:06:20 +0000
982+++ src/logic/map_objects/tribes/warehouse.cc 2018-03-04 15:27:08 +0000
983@@ -78,19 +78,19 @@
984 if (!warehouse_->descr().get_conquers())
985 return;
986
987- Player& owner = warehouse_->owner();
988- Game& game = dynamic_cast<Game&>(owner.egbase());
989+ Player* owner = warehouse_->get_owner();
990+ Game& game = dynamic_cast<Game&>(owner->egbase());
991 const Map& map = game.map();
992- if (enemy.get_owner() == &owner || enemy.get_battle() ||
993+ if (enemy.get_owner() == owner || enemy.get_battle() ||
994 warehouse_->descr().get_conquers() <=
995 map.calc_distance(enemy.get_position(), warehouse_->get_position()))
996 return;
997
998 if (map.find_bobs(Area<FCoords>(map.get_fcoords(warehouse_->base_flag().get_position()), 2),
999- nullptr, FindBobEnemySoldier(&owner)))
1000+ nullptr, FindBobEnemySoldier(owner)))
1001 return;
1002
1003- DescriptionIndex const soldier_index = owner.tribe().soldier();
1004+ DescriptionIndex const soldier_index = owner->tribe().soldier();
1005 Requirements noreq;
1006
1007 if (!warehouse_->count_workers(game, soldier_index, noreq, Match::kCompatible))
1008@@ -102,9 +102,9 @@
1009 }
1010
1011 AttackTarget::AttackResult Warehouse::AttackTarget::attack(Soldier* enemy) const {
1012- Player& owner = warehouse_->owner();
1013- Game& game = dynamic_cast<Game&>(owner.egbase());
1014- DescriptionIndex const soldier_index = owner.tribe().soldier();
1015+ Player* owner = warehouse_->get_owner();
1016+ Game& game = dynamic_cast<Game&>(owner->egbase());
1017+ DescriptionIndex const soldier_index = owner->tribe().soldier();
1018 Requirements noreq;
1019
1020 if (warehouse_->count_workers(game, soldier_index, noreq, Match::kCompatible)) {
1021@@ -495,24 +495,24 @@
1022 bool Warehouse::init(EditorGameBase& egbase) {
1023 Building::init(egbase);
1024
1025- Player& player = owner();
1026+ Player* player = get_owner();
1027
1028- init_containers(player);
1029+ init_containers(*player);
1030
1031 // Even though technically, a warehouse might be completely empty,
1032 // we let warehouse see always for simplicity's sake (since there's
1033 // almost always going to be a carrier inside, that shouldn't hurt).
1034 if (upcast(Game, game, &egbase)) {
1035- player.see_area(
1036+ player->see_area(
1037 Area<FCoords>(egbase.map().get_fcoords(get_position()), descr().vision_range()));
1038
1039 {
1040 uint32_t const act_time = schedule_act(*game, WORKER_WITHOUT_COST_SPAWN_INTERVAL);
1041 const std::vector<DescriptionIndex>& worker_types_without_cost =
1042- owner().tribe().worker_types_without_cost();
1043+ player->tribe().worker_types_without_cost();
1044
1045 for (size_t i = 0; i < worker_types_without_cost.size(); ++i) {
1046- if (owner().is_worker_type_allowed(worker_types_without_cost.at(i))) {
1047+ if (player->is_worker_type_allowed(worker_types_without_cost.at(i))) {
1048 next_worker_without_cost_spawn_[i] = act_time;
1049 }
1050 }
1051@@ -525,7 +525,7 @@
1052 next_stock_remove_act_ = schedule_act(*game, 4000);
1053
1054 log("Message: adding %s for player %i at (%d, %d)\n", to_string(descr().type()).c_str(),
1055- player.player_number(), position_.x, position_.y);
1056+ player->player_number(), position_.x, position_.y);
1057
1058 if (descr().get_isport()) {
1059 send_message(*game, Message::Type::kSeafaring, descr().descname(), descr().icon_filename(),
1060@@ -542,7 +542,7 @@
1061 if (uint32_t const conquer_radius = descr().get_conquers()) {
1062 egbase.conquer_area(
1063 PlayerArea<Area<FCoords>>(
1064- player.player_number(),
1065+ player->player_number(),
1066 Area<FCoords>(egbase.map().get_fcoords(get_position()), conquer_radius)),
1067 true);
1068 }
1069@@ -560,7 +560,7 @@
1070 return true;
1071 }
1072
1073-void Warehouse::init_containers(Player& player) {
1074+void Warehouse::init_containers(const Player& player) {
1075 DescriptionIndex const nr_wares = player.egbase().tribes().nrwares();
1076 DescriptionIndex const nr_workers = player.egbase().tribes().nrworkers();
1077 supply_->set_nrwares(nr_wares);
1078@@ -676,8 +676,7 @@
1079 defeating_player_);
1080
1081 // Unsee the area that we started seeing in init()
1082- Player& player = owner();
1083- player.unsee_area(Area<FCoords>(map.get_fcoords(get_position()), descr().vision_range()));
1084+ get_owner()->unsee_area(Area<FCoords>(map.get_fcoords(get_position()), descr().vision_range()));
1085
1086 Building::cleanup(egbase);
1087 }
1088@@ -917,7 +916,7 @@
1089 // NOTE: This code lies about the TrainingAttributes of the new worker
1090 supply_->remove_workers(worker_id, 1);
1091 const WorkerDescr& workerdescr = *game.tribes().get_worker_descr(worker_id);
1092- return workerdescr.create(game, owner(), this, position_);
1093+ return workerdescr.create(game, get_owner(), this, position_);
1094 }
1095 }
1096
1097@@ -934,7 +933,7 @@
1098
1099 void Warehouse::incorporate_worker(EditorGameBase& egbase, Worker* w) {
1100 assert(w != nullptr);
1101- assert(w->get_owner() == &owner());
1102+ assert(w->get_owner() == get_owner());
1103
1104 if (WareInstance* ware = w->fetch_carried_ware(egbase))
1105 incorporate_ware(egbase, ware);
1106@@ -1091,12 +1090,12 @@
1107 if (owner().tribe().has_ware(id_ware)) {
1108 remove_wares(id_ware, buildcost.second);
1109 // Update statistics accordingly
1110- owner().ware_consumed(id_ware, buildcost.second);
1111+ get_owner()->ware_consumed(id_ware, buildcost.second);
1112 } else
1113 remove_workers(owner().tribe().safe_worker_index(input), buildcost.second);
1114 }
1115
1116- incorporate_worker(game, &w_desc.create(game, owner(), this, position_));
1117+ incorporate_worker(game, &w_desc.create(game, get_owner(), this, position_));
1118
1119 // Update PlannedWorkers::amount here if appropriate, because this function
1120 // may have been called directly by the Economy.
1121
1122=== modified file 'src/logic/map_objects/tribes/warehouse.h'
1123--- src/logic/map_objects/tribes/warehouse.h 2017-11-26 14:44:23 +0000
1124+++ src/logic/map_objects/tribes/warehouse.h 2018-03-04 15:27:08 +0000
1125@@ -253,7 +253,7 @@
1126 void init_portdock(EditorGameBase& egbase);
1127
1128 /// Initializes the container sizes for the owner's tribe.
1129- void init_containers(Player& owner);
1130+ void init_containers(const Player& owner);
1131
1132 /**
1133 * Plan to produce a certain worker type in this warehouse. This means
1134
1135=== modified file 'src/logic/map_objects/tribes/worker.cc'
1136--- src/logic/map_objects/tribes/worker.cc 2018-01-29 18:10:59 +0000
1137+++ src/logic/map_objects/tribes/worker.cc 2018-03-04 15:27:08 +0000
1138@@ -994,7 +994,7 @@
1139
1140 // We should add a message to the player's message queue - but only,
1141 // if there is not already a similar one in list.
1142- owner().add_message_with_timeout(game,
1143+ get_owner()->add_message_with_timeout(game,
1144 std::unique_ptr<Message>(new Message(
1145 message_type, game.get_gametime(), rdescr->descname(),
1146 ri.descr().representative_image_filename(),
1147@@ -1049,7 +1049,7 @@
1148 }
1149
1150 // Update consumption statistic
1151- owner().ware_consumed(wareindex, 1);
1152+ get_owner()->ware_consumed(wareindex, 1);
1153
1154 ware = fetch_carried_ware(game);
1155 ware->remove(game);
1156@@ -1143,7 +1143,7 @@
1157 // Interrupt whatever we've been doing.
1158 set_economy(nullptr);
1159
1160- EditorGameBase& egbase = owner().egbase();
1161+ EditorGameBase& egbase = get_owner()->egbase();
1162 if (upcast(Game, game, &egbase)) {
1163 send_signal(*game, "location");
1164 }
1165@@ -1165,7 +1165,7 @@
1166
1167 economy_ = economy;
1168
1169- if (WareInstance* const ware = get_carried_ware(owner().egbase()))
1170+ if (WareInstance* const ware = get_carried_ware(get_owner()->egbase()))
1171 ware->set_economy(economy_);
1172 if (supply_)
1173 supply_->set_economy(economy_);
1174@@ -1868,7 +1868,7 @@
1175 descr().descname().c_str())
1176 .str();
1177
1178- owner().add_message(
1179+ get_owner()->add_message(
1180 game, std::unique_ptr<Message>(new Message(
1181 Message::Type::kGameLogic, game.get_gametime(), _("Worker"),
1182 "images/ui_basic/menu_help.png", _("Worker got lost!"), message, get_position())),
1183@@ -2397,7 +2397,7 @@
1184 }
1185 bool accept(const BaseImmovable& imm) const {
1186 if (upcast(Flag const, flag, &imm))
1187- if (&flag->owner() == &owner_)
1188+ if (flag->get_owner() == &owner_)
1189 if (flag->economy().warehouses().size())
1190 return true;
1191 return false;
1192@@ -2416,7 +2416,7 @@
1193 const Map& map = game.map();
1194 PlayerImmovable const* location = get_location(game);
1195
1196- if (location && &location->owner() == &owner()) {
1197+ if (location && location->get_owner() == get_owner()) {
1198 molog("[fugitive]: we are on location\n");
1199
1200 if (dynamic_cast<Warehouse const*>(location))
1201@@ -2428,7 +2428,7 @@
1202
1203 // check whether we're on a flag and it's time to return home
1204 if (upcast(Flag, flag, map[get_position()].get_immovable())) {
1205- if (&flag->owner() == &owner() && flag->economy().warehouses().size()) {
1206+ if (flag->get_owner() == get_owner() && flag->economy().warehouses().size()) {
1207 set_location(flag);
1208 return pop_task(game);
1209 }
1210@@ -2703,11 +2703,11 @@
1211 upcast(Flag, aflag, vu.object);
1212 Building* a_building = aflag->get_building();
1213 // Assuming that this always succeeds.
1214- if (upcast(MilitarySite const, ms, a_building)) {
1215+ if (a_building->descr().type() == MapObjectType::MILITARYSITE) {
1216 // This would be safe even if this assert failed: Own militarysites are always visible.
1217 // However: There would be something wrong with FindForeignMilitarySite or associated
1218 // code. Hence, let's keep the assert.
1219- assert(&ms->owner() != &player);
1220+ assert(a_building->get_owner() != &player);
1221 const Coords buildingpos = a_building->get_positions(game)[0];
1222 // Check the visibility: only invisible ones interest the scout.
1223 MapIndex mx = map.get_index(buildingpos, map.get_width());
1224
1225=== modified file 'src/logic/map_objects/tribes/worker.h'
1226--- src/logic/map_objects/tribes/worker.h 2018-01-27 14:18:07 +0000
1227+++ src/logic/map_objects/tribes/worker.h 2018-03-04 15:27:08 +0000
1228@@ -76,11 +76,7 @@
1229 explicit Worker(const WorkerDescr&);
1230 ~Worker() override;
1231
1232- Player& owner() const {
1233- assert(get_owner());
1234- return *get_owner();
1235- }
1236- PlayerImmovable* get_location(EditorGameBase& egbase) {
1237+ PlayerImmovable* get_location(const EditorGameBase& egbase) const {
1238 return location_.get(egbase);
1239 }
1240 OPtr<PlayerImmovable> get_location() const {
1241
1242=== modified file 'src/logic/map_objects/tribes/worker_descr.cc'
1243--- src/logic/map_objects/tribes/worker_descr.cc 2017-11-12 16:30:35 +0000
1244+++ src/logic/map_objects/tribes/worker_descr.cc 2018-03-04 15:27:08 +0000
1245@@ -146,11 +146,11 @@
1246 * Custom creation routing that accounts for the location.
1247 */
1248 Worker& WorkerDescr::create(EditorGameBase& egbase,
1249- Player& owner,
1250+ Player* owner,
1251 PlayerImmovable* const location,
1252 Coords const coords) const {
1253 Worker& worker = dynamic_cast<Worker&>(create_object());
1254- worker.set_owner(&owner);
1255+ worker.set_owner(owner);
1256 worker.set_location(location);
1257 worker.set_position(egbase, coords);
1258 worker.init(egbase);
1259
1260=== modified file 'src/logic/map_objects/tribes/worker_descr.h'
1261--- src/logic/map_objects/tribes/worker_descr.h 2017-11-12 14:54:46 +0000
1262+++ src/logic/map_objects/tribes/worker_descr.h 2018-03-04 15:27:08 +0000
1263@@ -106,7 +106,7 @@
1264 // The buildings where this worker can work
1265 const std::set<DescriptionIndex>& employers() const;
1266
1267- Worker& create(EditorGameBase&, Player&, PlayerImmovable*, Coords) const;
1268+ Worker& create(EditorGameBase&, Player*, PlayerImmovable*, Coords) const;
1269
1270 uint32_t movecaps() const override;
1271
1272
1273=== modified file 'src/logic/map_objects/world/critter.cc'
1274--- src/logic/map_objects/world/critter.cc 2017-01-25 18:55:59 +0000
1275+++ src/logic/map_objects/world/critter.cc 2018-03-04 15:27:08 +0000
1276@@ -299,20 +299,20 @@
1277 uint8_t const packet_version = fr.unsigned_8();
1278 // Supporting older versions for map loading
1279 if (1 <= packet_version && packet_version <= kCurrentPacketVersion) {
1280- const std::string owner = fr.c_string();
1281+ const std::string critter_owner = fr.c_string();
1282 std::string critter_name = fr.c_string();
1283 const CritterDescr* descr = nullptr;
1284
1285- if (owner == "world") {
1286+ if (critter_owner == "world") {
1287 critter_name = lookup_table.lookup_critter(critter_name);
1288 descr = egbase.world().get_critter_descr(critter_name);
1289 } else {
1290 throw GameDataError(
1291- "Tribes don't have critters %s/%s", owner.c_str(), critter_name.c_str());
1292+ "Tribes don't have critters %s/%s", critter_owner.c_str(), critter_name.c_str());
1293 }
1294
1295 if (!descr)
1296- throw GameDataError("undefined critter %s/%s", owner.c_str(), critter_name.c_str());
1297+ throw GameDataError("undefined critter %s/%s", critter_owner.c_str(), critter_name.c_str());
1298
1299 loader->init(egbase, mol, descr->create_object());
1300 loader->load(fr);
1301@@ -330,10 +330,10 @@
1302 fw.unsigned_8(HeaderCritter);
1303 fw.unsigned_8(kCurrentPacketVersion);
1304
1305- const std::string owner = descr().get_owner_type() == MapObjectDescr::OwnerType::kTribe ?
1306+ const std::string save_owner = descr().get_owner_type() == MapObjectDescr::OwnerType::kTribe ?
1307 "" : // Tribes don't have critters
1308 "world";
1309- fw.c_string(owner);
1310+ fw.c_string(save_owner);
1311 fw.c_string(descr().name());
1312
1313 Bob::save(egbase, mos, fw);
1314
1315=== modified file 'src/logic/player.cc'
1316--- src/logic/player.cc 2017-12-19 14:35:00 +0000
1317+++ src/logic/player.cc 2018-03-04 15:27:08 +0000
1318@@ -324,7 +324,7 @@
1319 }
1320
1321 MessageId Player::add_message(Game& game, std::unique_ptr<Message> new_message, bool const popup) {
1322- MessageId id = messages().add_message(std::move(new_message));
1323+ MessageId id = get_messages()->add_message(std::move(new_message));
1324 const Message* message = messages()[id];
1325
1326 // MapObject connection
1327@@ -410,7 +410,7 @@
1328 int32_t buildcaps = get_buildcaps(egbase().map().get_fcoords(c));
1329
1330 if (buildcaps & BUILDCAPS_FLAG)
1331- return new Flag(egbase(), *this, c);
1332+ return new Flag(egbase(), this, c);
1333 return nullptr;
1334 }
1335
1336@@ -419,7 +419,7 @@
1337 const Map& map = egbase().map();
1338 if (BaseImmovable* const immovable = c.field->get_immovable()) {
1339 if (upcast(Flag, existing_flag, immovable)) {
1340- if (&existing_flag->owner() == this)
1341+ if (existing_flag->get_owner() == this)
1342 return *existing_flag;
1343 } else if (!dynamic_cast<Road const*>(immovable)) // A road is OK.
1344 immovable->remove(egbase()); // Make room for the flag.
1345@@ -433,7 +433,7 @@
1346 // Make sure that the player owns the area around.
1347 egbase().conquer_area_no_building(
1348 PlayerArea<Area<FCoords>>(player_number(), Area<FCoords>(c, 1)));
1349- return *new Flag(egbase(), *this, c);
1350+ return *new Flag(egbase(), this, c);
1351 }
1352
1353 /*
1354@@ -508,7 +508,7 @@
1355 map.get_brn(map.get_fcoords(location), &flag_loc);
1356 force_flag(flag_loc);
1357
1358- return descr->create(egbase(), *this, map.get_fcoords(location), false, false, former_buildings);
1359+ return descr->create(egbase(), this, map.get_fcoords(location), false, false, former_buildings);
1360 }
1361
1362 Building& Player::force_csite(Coords const location,
1363@@ -574,7 +574,7 @@
1364 if (constructionsite)
1365 return &egbase().warp_constructionsite(c, player_number_, idx, false, former_buildings);
1366 else {
1367- return &descr->create(egbase(), *this, c, false, false, former_buildings);
1368+ return &descr->create(egbase(), this, c, false, false, former_buildings);
1369 }
1370 }
1371
1372@@ -669,13 +669,13 @@
1373 }
1374
1375 void Player::start_stop_building(PlayerImmovable& imm) {
1376- if (&imm.owner() == this)
1377+ if (imm.get_owner() == this)
1378 if (upcast(ProductionSite, productionsite, &imm))
1379 productionsite->set_stopped(!productionsite->is_stopped());
1380 }
1381
1382 void Player::start_or_cancel_expedition(Warehouse& wh) {
1383- if (&wh.owner() == this)
1384+ if (wh.get_owner() == this)
1385 if (PortDock* pd = wh.get_portdock()) {
1386 if (pd->expedition_started()) {
1387 upcast(Game, game, &egbase());
1388@@ -687,7 +687,7 @@
1389
1390 void Player::military_site_set_soldier_preference(PlayerImmovable& imm,
1391 SoldierPreference soldier_preference) {
1392- if (&imm.owner() == this)
1393+ if (imm.get_owner() == this)
1394 if (upcast(MilitarySite, milsite, &imm))
1395 milsite->set_soldier_preference(soldier_preference);
1396 }
1397@@ -709,7 +709,7 @@
1398 }
1399 void Player::enhance_or_dismantle(Building* building,
1400 DescriptionIndex const index_of_new_building) {
1401- if (&building->owner() == this && (index_of_new_building == INVALID_INDEX ||
1402+ if (building->get_owner() == this && (index_of_new_building == INVALID_INDEX ||
1403 building->descr().enhancement() == index_of_new_building)) {
1404 Building::FormerBuildings former_buildings = building->get_former_buildings();
1405 const Coords position = building->get_position();
1406@@ -758,7 +758,7 @@
1407 ===============
1408 */
1409 void Player::flagaction(Flag& flag) {
1410- if (&flag.owner() == this) { // Additional security check.
1411+ if (flag.get_owner() == this) { // Additional security check.
1412 flag.add_flag_job(dynamic_cast<Game&>(egbase()), tribe().geologist(), "expedition");
1413 }
1414 }
1415@@ -835,7 +835,7 @@
1416 ===========
1417 */
1418 void Player::drop_soldier(PlayerImmovable& imm, Soldier& soldier) {
1419- if (&imm.owner() != this)
1420+ if (imm.get_owner() != this)
1421 return;
1422 if (soldier.descr().type() != MapObjectType::SOLDIER)
1423 return;
1424
1425=== modified file 'src/logic/player.h'
1426--- src/logic/player.h 2018-02-03 21:18:36 +0000
1427+++ src/logic/player.h 2018-03-04 15:27:08 +0000
1428@@ -88,8 +88,8 @@
1429 const MessageQueue& messages() const {
1430 return messages_;
1431 }
1432- MessageQueue& messages() {
1433- return messages_;
1434+ MessageQueue* get_messages() {
1435+ return &messages_;
1436 }
1437
1438 /// Adds the message to the queue.
1439@@ -108,7 +108,7 @@
1440 void message_object_removed(MessageId mid) const;
1441
1442 void set_message_status(const MessageId& id, Message::Status const status) {
1443- messages().set_message_status(id, status);
1444+ get_messages()->set_message_status(id, status);
1445 }
1446
1447 const EditorGameBase& egbase() const {
1448
1449=== modified file 'src/logic/playercommand.cc'
1450--- src/logic/playercommand.cc 2017-11-01 18:44:34 +0000
1451+++ src/logic/playercommand.cc 2018-03-04 15:27:08 +0000
1452@@ -222,7 +222,7 @@
1453
1454 void CmdBulldoze::execute(Game& game) {
1455 if (upcast(PlayerImmovable, pimm, game.objects().get_object(serial)))
1456- game.player(sender()).bulldoze(*pimm, recurse);
1457+ game.get_player(sender())->bulldoze(*pimm, recurse);
1458 }
1459
1460 void CmdBulldoze::serialize(StreamWrite& ser) {
1461@@ -269,7 +269,7 @@
1462 void CmdBuild::execute(Game& game) {
1463 // Empty former vector since its a new csite.
1464 Building::FormerBuildings former_buildings;
1465- game.player(sender()).build(coords, bi, true, former_buildings);
1466+ game.get_player(sender())->build(coords, bi, true, former_buildings);
1467 }
1468
1469 void CmdBuild::serialize(StreamWrite& ser) {
1470@@ -313,7 +313,7 @@
1471 }
1472
1473 void CmdBuildFlag::execute(Game& game) {
1474- game.player(sender()).build_flag(coords);
1475+ game.get_player(sender())->build_flag(coords);
1476 }
1477
1478 void CmdBuildFlag::serialize(StreamWrite& ser) {
1479@@ -383,7 +383,7 @@
1480 path->append(game.map(), steps[i]);
1481 }
1482
1483- game.player(sender()).build_road(*path);
1484+ game.get_player(sender())->build_road(*path);
1485 }
1486
1487 void CmdBuildRoad::serialize(StreamWrite& ser) {
1488@@ -437,10 +437,10 @@
1489 }
1490
1491 void CmdFlagAction::execute(Game& game) {
1492- Player& player = game.player(sender());
1493+ Player* player = game.get_player(sender());
1494 if (upcast(Flag, flag, game.objects().get_object(serial)))
1495- if (&flag->owner() == &player)
1496- player.flagaction(*flag);
1497+ if (flag->get_owner() == player)
1498+ player->flagaction(*flag);
1499 }
1500
1501 void CmdFlagAction::serialize(StreamWrite& ser) {
1502@@ -487,7 +487,7 @@
1503
1504 void CmdStartStopBuilding::execute(Game& game) {
1505 if (upcast(Building, building, game.objects().get_object(serial)))
1506- game.player(sender()).start_stop_building(*building);
1507+ game.get_player(sender())->start_stop_building(*building);
1508 }
1509
1510 void CmdStartStopBuilding::serialize(StreamWrite& ser) {
1511@@ -537,7 +537,7 @@
1512
1513 void CmdMilitarySiteSetSoldierPreference::execute(Game& game) {
1514 if (upcast(MilitarySite, building, game.objects().get_object(serial)))
1515- game.player(sender()).military_site_set_soldier_preference(*building, preference);
1516+ game.get_player(sender())->military_site_set_soldier_preference(*building, preference);
1517 }
1518
1519 constexpr uint16_t kCurrentPacketVersionSoldierPreference = 1;
1520@@ -583,7 +583,7 @@
1521
1522 void CmdStartOrCancelExpedition::execute(Game& game) {
1523 if (upcast(Warehouse, warehouse, game.objects().get_object(serial)))
1524- game.player(sender()).start_or_cancel_expedition(*warehouse);
1525+ game.get_player(sender())->start_or_cancel_expedition(*warehouse);
1526 }
1527
1528 void CmdStartOrCancelExpedition::serialize(StreamWrite& ser) {
1529@@ -627,7 +627,7 @@
1530
1531 void CmdEnhanceBuilding::execute(Game& game) {
1532 if (upcast(Building, building, game.objects().get_object(serial)))
1533- game.player(sender()).enhance_building(building, bi);
1534+ game.get_player(sender())->enhance_building(building, bi);
1535 }
1536
1537 void CmdEnhanceBuilding::serialize(StreamWrite& ser) {
1538@@ -674,7 +674,7 @@
1539
1540 void CmdDismantleBuilding::execute(Game& game) {
1541 if (upcast(Building, building, game.objects().get_object(serial)))
1542- game.player(sender()).dismantle_building(building);
1543+ game.get_player(sender())->dismantle_building(building);
1544 }
1545
1546 void CmdDismantleBuilding::serialize(StreamWrite& ser) {
1547@@ -1228,9 +1228,9 @@
1548 }
1549
1550 void CmdSetWareTargetQuantity::execute(Game& game) {
1551- Player& player = game.player(sender());
1552- if (economy() < player.get_nr_economies() && game.tribes().ware_exists(ware_type())) {
1553- player.get_economy_by_number(economy())->set_ware_target_quantity(
1554+ Player* player = game.get_player(sender());
1555+ if (economy() < player->get_nr_economies() && game.tribes().ware_exists(ware_type())) {
1556+ player->get_economy_by_number(economy())->set_ware_target_quantity(
1557 ware_type(), permanent_, duetime());
1558 }
1559 }
1560@@ -1278,11 +1278,11 @@
1561 }
1562
1563 void CmdResetWareTargetQuantity::execute(Game& game) {
1564- Player& player = game.player(sender());
1565- const TribeDescr& tribe = player.tribe();
1566- if (economy() < player.get_nr_economies() && game.tribes().ware_exists(ware_type())) {
1567+ Player* player = game.get_player(sender());
1568+ const TribeDescr& tribe = player->tribe();
1569+ if (economy() < player->get_nr_economies() && game.tribes().ware_exists(ware_type())) {
1570 const int count = tribe.get_ware_descr(ware_type())->default_target_quantity(tribe.name());
1571- player.get_economy_by_number(economy())->set_ware_target_quantity(
1572+ player->get_economy_by_number(economy())->set_ware_target_quantity(
1573 ware_type(), count, duetime());
1574 }
1575 }
1576@@ -1327,9 +1327,9 @@
1577 }
1578
1579 void CmdSetWorkerTargetQuantity::execute(Game& game) {
1580- Player& player = game.player(sender());
1581- if (economy() < player.get_nr_economies() && game.tribes().worker_exists(ware_type())) {
1582- player.get_economy_by_number(economy())->set_worker_target_quantity(
1583+ Player* player = game.get_player(sender());
1584+ if (economy() < player->get_nr_economies() && game.tribes().worker_exists(ware_type())) {
1585+ player->get_economy_by_number(economy())->set_worker_target_quantity(
1586 ware_type(), permanent_, duetime());
1587 }
1588 }
1589@@ -1377,11 +1377,11 @@
1590 }
1591
1592 void CmdResetWorkerTargetQuantity::execute(Game& game) {
1593- Player& player = game.player(sender());
1594- const TribeDescr& tribe = player.tribe();
1595- if (economy() < player.get_nr_economies() && game.tribes().ware_exists(ware_type())) {
1596+ Player* player = game.get_player(sender());
1597+ const TribeDescr& tribe = player->tribe();
1598+ if (economy() < player->get_nr_economies() && game.tribes().ware_exists(ware_type())) {
1599 const int count = tribe.get_ware_descr(ware_type())->default_target_quantity(tribe.name());
1600- player.get_economy_by_number(economy())->set_worker_target_quantity(
1601+ player->get_economy_by_number(economy())->set_worker_target_quantity(
1602 ware_type(), count, duetime());
1603 }
1604 }
1605@@ -1430,7 +1430,7 @@
1606
1607 void CmdChangeTrainingOptions::execute(Game& game) {
1608 if (upcast(TrainingSite, trainingsite, game.objects().get_object(serial)))
1609- game.player(sender()).change_training_options(*trainingsite, attribute, value);
1610+ game.get_player(sender())->change_training_options(*trainingsite, attribute, value);
1611 }
1612
1613 void CmdChangeTrainingOptions::serialize(StreamWrite& ser) {
1614@@ -1483,7 +1483,7 @@
1615 void CmdDropSoldier::execute(Game& game) {
1616 if (upcast(PlayerImmovable, player_imm, game.objects().get_object(serial)))
1617 if (upcast(Soldier, s, game.objects().get_object(soldier)))
1618- game.player(sender()).drop_soldier(*player_imm, *s);
1619+ game.get_player(sender())->drop_soldier(*player_imm, *s);
1620 }
1621
1622 void CmdDropSoldier::serialize(StreamWrite& ser) {
1623@@ -1534,7 +1534,7 @@
1624
1625 void CmdChangeSoldierCapacity::execute(Game& game) {
1626 if (upcast(Building, building, game.objects().get_object(serial))) {
1627- if (&building->owner() == game.get_player(sender()) &&
1628+ if (building->get_owner() == game.get_player(sender()) &&
1629 building->soldier_control() != nullptr) {
1630 SoldierControl* soldier_control = building->mutable_soldier_control();
1631 Widelands::Quantity const old_capacity = soldier_control->soldier_capacity();
1632@@ -1598,17 +1598,17 @@
1633 }
1634
1635 void CmdEnemyFlagAction::execute(Game& game) {
1636- Player& player = game.player(sender());
1637+ Player* player = game.get_player(sender());
1638
1639 if (upcast(Flag, flag, game.objects().get_object(serial))) {
1640 log("Cmd_EnemyFlagAction::execute player(%u): flag->owner(%d) "
1641 "number=%u\n",
1642- player.player_number(), flag->owner().player_number(), number);
1643+ player->player_number(), flag->owner().player_number(), number);
1644
1645 if (const Building* const building = flag->get_building()) {
1646- if (player.is_hostile(flag->owner()) &&
1647- 1 < player.vision(Map::get_index(building->get_position(), game.map().get_width())))
1648- player.enemyflagaction(*flag, sender(), number);
1649+ if (player->is_hostile(flag->owner()) &&
1650+ 1 < player->vision(Map::get_index(building->get_position(), game.map().get_width())))
1651+ player->enemyflagaction(*flag, sender(), number);
1652 else
1653 log("Cmd_EnemyFlagAction::execute: ERROR: wrong player target not "
1654 "seen or not hostile.\n");
1655@@ -1695,7 +1695,7 @@
1656 /*** struct Cmd_MessageSetStatusRead ***/
1657
1658 void CmdMessageSetStatusRead::execute(Game& game) {
1659- game.player(sender()).messages().set_message_status(message_id(), Message::Status::kRead);
1660+ game.get_player(sender())->get_messages()->set_message_status(message_id(), Message::Status::kRead);
1661 }
1662
1663 void CmdMessageSetStatusRead::serialize(StreamWrite& ser) {
1664@@ -1707,7 +1707,7 @@
1665 /*** struct Cmd_MessageSetStatusArchived ***/
1666
1667 void CmdMessageSetStatusArchived::execute(Game& game) {
1668- game.player(sender()).messages().set_message_status(message_id(), Message::Status::kArchived);
1669+ game.get_player(sender())->get_messages()->set_message_status(message_id(), Message::Status::kArchived);
1670 }
1671
1672 void CmdMessageSetStatusArchived::serialize(StreamWrite& ser) {
1673@@ -1738,7 +1738,7 @@
1674 // Sanitize data that could have come from the network
1675 if (Player* plr = game.get_player(sender())) {
1676 if (upcast(Warehouse, warehouse, game.objects().get_object(warehouse_))) {
1677- if (&warehouse->owner() != plr) {
1678+ if (warehouse->get_owner() != plr) {
1679 log("Cmd_SetStockPolicy: sender %u, but warehouse owner %u\n", sender(),
1680 warehouse->owner().player_number());
1681 return;
1682@@ -1834,7 +1834,7 @@
1683 log("CmdProposeTrade: receiver vanished or is not a market.\n");
1684 return;
1685 }
1686- if (&initiator->owner() == &receiver->owner()) {
1687+ if (initiator->get_owner() == receiver->get_owner()) {
1688 log("CmdProposeTrade: Sending and receiving player are the same.\n");
1689 return;
1690 }
1691
1692=== modified file 'src/logic/playersmanager.h'
1693--- src/logic/playersmanager.h 2017-06-24 08:47:46 +0000
1694+++ src/logic/playersmanager.h 2018-03-04 15:27:08 +0000
1695@@ -73,7 +73,7 @@
1696 assert(n <= kMaxPlayers);
1697 return players_[n - 1];
1698 }
1699- Player& player(int32_t n) const {
1700+ const Player& player(int32_t n) const {
1701 assert(1 <= n);
1702 assert(n <= kMaxPlayers);
1703 return *players_[n - 1];
1704
1705=== modified file 'src/map_io/map_buildingdata_packet.cc'
1706--- src/map_io/map_buildingdata_packet.cc 2017-12-17 17:47:34 +0000
1707+++ src/map_io/map_buildingdata_packet.cc 2018-03-04 15:27:08 +0000
1708@@ -314,9 +314,9 @@
1709 try {
1710 uint16_t const packet_version = fr.unsigned_16();
1711 if (packet_version >= 6) {
1712- Player& player = warehouse.owner();
1713- warehouse.init_containers(player);
1714- const TribeDescr& tribe = player.tribe();
1715+ Player* player = warehouse.get_owner();
1716+ warehouse.init_containers(*player);
1717+ const TribeDescr& tribe = player->tribe();
1718
1719 while (fr.unsigned_8()) {
1720 const DescriptionIndex& id = tribe.ware_index(fr.c_string());
1721@@ -441,14 +441,14 @@
1722 // Add to map of military influence.
1723 Area<FCoords> a(map.get_fcoords(warehouse.get_position()), conquer_radius);
1724 const Field& first_map_field = map[0];
1725- Player::Field* const player_fields = player.fields_;
1726+ Player::Field* const player_fields = player->fields_;
1727 MapRegion<Area<FCoords>> mr(map, a);
1728 do
1729 player_fields[mr.location().field - &first_map_field].military_influence +=
1730 map.calc_influence(mr.location(), Area<>(a, a.radius));
1731 while (mr.advance(map));
1732 }
1733- player.see_area(Area<FCoords>(
1734+ player->see_area(Area<FCoords>(
1735 map.get_fcoords(warehouse.get_position()), warehouse.descr().vision_range()));
1736 warehouse.next_military_act_ = game.get_gametime();
1737 } else {
1738
1739=== modified file 'src/map_io/map_flag_packet.cc'
1740--- src/map_io/map_flag_packet.cc 2017-01-25 18:55:59 +0000
1741+++ src/map_io/map_flag_packet.cc 2018-03-04 15:27:08 +0000
1742@@ -100,7 +100,7 @@
1743 // since we have to read the data packets. We delete this
1744 // object later again, if it is not wanted.
1745 mol.register_object<Flag>(
1746- serial, *new Flag(dynamic_cast<Game&>(egbase), egbase.player(owner), fc));
1747+ serial, *new Flag(dynamic_cast<Game&>(egbase), egbase.get_player(owner), fc));
1748 } catch (const WException& e) {
1749 throw GameDataError(
1750 "%u (at (%i, %i), owned by player %u): %s", serial, fc.x, fc.y, owner, e.what());
1751
1752=== modified file 'src/map_io/map_players_messages_packet.cc'
1753--- src/map_io/map_players_messages_packet.cc 2017-07-05 19:30:41 +0000
1754+++ src/map_io/map_players_messages_packet.cc 2018-03-04 15:27:08 +0000
1755@@ -59,11 +59,11 @@
1756 }
1757 uint32_t packet_version = prof.get_safe_section("global").get_positive("packet_version");
1758 if (1 <= packet_version && packet_version <= kCurrentPacketVersion) {
1759- MessageQueue& messages = player->messages();
1760+ MessageQueue* messages = player->get_messages();
1761
1762 {
1763- const auto begin = messages.begin();
1764- if (begin != messages.end()) {
1765+ const auto begin = messages->begin();
1766+ if (begin != messages->end()) {
1767 log("ERROR: The message queue for player %u contains a message "
1768 "before any messages have been loaded into it. This is a bug "
1769 "in the savegame loading code. It created a new message and "
1770@@ -79,7 +79,7 @@
1771 p, static_cast<int>(begin->second->type()), begin->second->title().c_str(),
1772 begin->second->sent(), begin->second->position().x, begin->second->position().y,
1773 static_cast<int>(begin->second->status()), begin->second->body().c_str());
1774- messages.clear();
1775+ messages->clear();
1776 }
1777 }
1778
1779@@ -120,13 +120,13 @@
1780 // Compatibility code needed for map loading.
1781 if (packet_version == 1) {
1782 const std::string name = s->get_name();
1783- messages.add_message(std::unique_ptr<Message>(new Message(
1784+ messages->add_message(std::unique_ptr<Message>(new Message(
1785 static_cast<Message::Type>(s->get_natural("type")), sent, name,
1786 "images/wui/fieldaction/menu_build_flag.png", name, s->get_safe_string("body"),
1787 get_coords("position", extent, Coords::null(), s), serial, status)));
1788 } else {
1789
1790- messages.add_message(std::unique_ptr<Message>(new Message(
1791+ messages->add_message(std::unique_ptr<Message>(new Message(
1792 static_cast<Message::Type>(s->get_natural("type")), sent, s->get_name(),
1793 s->get_safe_string("icon"), s->get_safe_string("heading"),
1794 s->get_safe_string("body"), get_coords("position", extent, Coords::null(), s),
1795
1796=== modified file 'src/map_io/map_roaddata_packet.cc'
1797--- src/map_io/map_roaddata_packet.cc 2017-08-20 08:34:02 +0000
1798+++ src/map_io/map_roaddata_packet.cc 2018-03-04 15:27:08 +0000
1799@@ -71,9 +71,8 @@
1800 if (!(0 < player_index && player_index <= nr_players)) {
1801 throw GameDataError("Invalid player number: %i.", player_index);
1802 }
1803- Player& plr = egbase.player(player_index);
1804
1805- road.set_owner(&plr);
1806+ road.set_owner(egbase.get_player(player_index));
1807 road.busyness_ = fr.unsigned_32();
1808 road.busyness_last_update_ = fr.unsigned_32();
1809 road.type_ = fr.unsigned_32();
1810@@ -107,7 +106,7 @@
1811 p.append(map, read_direction_8(&fr));
1812 } catch (const WException& e) {
1813 throw GameDataError(
1814- "step #%lu: %s", static_cast<long unsigned int>(nr_steps - i), e.what());
1815+ "step #%" PRIuS ": %s", nr_steps - i, e.what());
1816 }
1817 road.set_path(egbase, p);
1818
1819
1820=== modified file 'src/network/netclient.cc'
1821--- src/network/netclient.cc 2017-12-17 14:45:23 +0000
1822+++ src/network/netclient.cc 2018-03-04 15:27:08 +0000
1823@@ -99,7 +99,7 @@
1824 }
1825 if (written < packet.get_size()) {
1826 throw wexception(
1827- "[NetClient] Unable to send complete packet to relay (only %lu bytes of %lu)", written,
1828+ "[NetClient] Unable to send complete packet to relay (only %" PRIuS " bytes of %" PRIuS ")", written,
1829 packet.get_size());
1830 }
1831 }
1832
1833=== modified file 'src/network/netclientproxy.cc'
1834--- src/network/netclientproxy.cc 2017-12-17 14:45:23 +0000
1835+++ src/network/netclientproxy.cc 2018-03-04 15:27:08 +0000
1836@@ -58,7 +58,7 @@
1837 conn_->send("client");
1838
1839 // Wait 10 seconds for an answer
1840- uint32_t endtime = time(nullptr) + 10;
1841+ time_t endtime = time(nullptr) + 10;
1842 while (!NetRelayConnection::Peeker(conn_.get()).cmd()) {
1843 if (time(nullptr) > endtime) {
1844 // No message received in time
1845
1846=== modified file 'src/network/nethost.cc'
1847--- src/network/nethost.cc 2017-12-17 14:45:23 +0000
1848+++ src/network/nethost.cc 2018-03-04 15:27:08 +0000
1849@@ -189,7 +189,7 @@
1850 }
1851 if (written < packet.get_size()) {
1852 throw wexception(
1853- "[NetHost] Unable to send complete packet to relay (only %lu bytes of %lu)", written,
1854+ "[NetHost] Unable to send complete packet to relay (only %" PRIuS " bytes of %" PRIuS ")", written,
1855 packet.get_size());
1856 }
1857 }
1858
1859=== modified file 'src/network/nethostproxy.cc'
1860--- src/network/nethostproxy.cc 2017-12-17 14:45:23 +0000
1861+++ src/network/nethostproxy.cc 2018-03-04 15:27:08 +0000
1862@@ -143,7 +143,7 @@
1863 conn_->send(password);
1864
1865 // Wait 10 seconds for an answer
1866- uint32_t endtime = time(nullptr) + 10;
1867+ time_t endtime = time(nullptr) + 10;
1868 while (!NetRelayConnection::Peeker(conn_.get()).cmd()) {
1869 if (time(nullptr) > endtime) {
1870 // No message received in time
1871
1872=== modified file 'src/network/netrelayconnection.cc'
1873--- src/network/netrelayconnection.cc 2018-02-04 11:41:45 +0000
1874+++ src/network/netrelayconnection.cc 2018-03-04 15:27:08 +0000
1875@@ -252,7 +252,7 @@
1876 }
1877 if (written < str.length() + 1) {
1878 throw wexception(
1879- "[NetRelayConnection] Unable to send complete string to relay (only %lu bytes of %lu)",
1880+ "[NetRelayConnection] Unable to send complete string to relay (only %" PRIuS " bytes of %" PRIuS ")",
1881 written, str.length() + 1);
1882 }
1883 if (ec) {
1884@@ -280,7 +280,7 @@
1885 }
1886 if (written < packet.get_size()) {
1887 throw wexception(
1888- "[NetRelayConnection] Unable to send complete packet to relay (only %lu bytes of %lu)",
1889+ "[NetRelayConnection] Unable to send complete packet to relay (only %" PRIuS " bytes of %" PRIuS ")",
1890 written, packet.get_size());
1891 }
1892 }
1893
1894=== modified file 'src/scripting/lua_game.cc'
1895--- src/scripting/lua_game.cc 2017-12-19 17:04:30 +0000
1896+++ src/scripting/lua_game.cc 2018-03-04 15:27:08 +0000
1897@@ -1228,7 +1228,7 @@
1898 else
1899 report_error(L, "Invalid message status <%s>!", s.c_str());
1900
1901- get_plr(L, get_game(L)).messages().set_message_status(message_id_, status);
1902+ get_plr(L, get_game(L)).get_messages()->set_message_status(message_id_, status);
1903
1904 return 0;
1905 }
1906
1907=== modified file 'src/scripting/lua_map.cc'
1908--- src/scripting/lua_map.cc 2018-01-23 00:23:13 +0000
1909+++ src/scripting/lua_map.cc 2018-03-04 15:27:08 +0000
1910@@ -585,7 +585,7 @@
1911 } else if (d > 0) {
1912 for (; d; --d) {
1913 Soldier& soldier = dynamic_cast<Soldier&>(
1914- soldier_descr.create(egbase, *owner, nullptr, building_position));
1915+ soldier_descr.create(egbase, owner, nullptr, building_position));
1916 soldier.set_level(sp.first.health, sp.first.attack, sp.first.defense, sp.first.evade);
1917 if (sc->incorporate_soldier(egbase, soldier)) {
1918 soldier.remove(egbase);
1919@@ -4327,7 +4327,7 @@
1920 for (Path::StepVector::size_type i = 0; i < idle_index; ++i)
1921 egbase.map().get_neighbour(idle_position, path[i], &idle_position);
1922
1923- Carrier& carrier = dynamic_cast<Carrier&>(wdes->create(egbase, r.owner(), &r, idle_position));
1924+ Carrier& carrier = dynamic_cast<Carrier&>(wdes->create(egbase, r.get_owner(), &r, idle_position));
1925
1926 if (upcast(Game, game, &egbase)) {
1927 carrier.start_task_road(*game);
1928
1929=== modified file 'src/ui_basic/fileview_panel.cc'
1930--- src/ui_basic/fileview_panel.cc 2017-12-28 14:57:00 +0000
1931+++ src/ui_basic/fileview_panel.cc 2018-03-04 15:27:08 +0000
1932@@ -23,6 +23,7 @@
1933
1934 #include <boost/format.hpp>
1935
1936+#include "base/macros.h"
1937 #include "scripting/lua_interface.h"
1938 #include "scripting/lua_table.h"
1939
1940@@ -63,7 +64,7 @@
1941 }
1942
1943 textviews_.push_back(std::unique_ptr<UI::MultilineTextarea>(std::move(textarea)));
1944- add((boost::format("about_%lu") % index).str(), title, boxes_.at(index).get(), "");
1945+ add((boost::format("about_%" PRIuS) % index).str(), title, boxes_.at(index).get(), "");
1946
1947 assert(boxes_.size() == textviews_.size());
1948 assert(tabs().size() == textviews_.size());
1949
1950=== modified file 'src/wui/game_message_menu.cc'
1951--- src/wui/game_message_menu.cc 2018-02-23 13:38:35 +0000
1952+++ src/wui/game_message_menu.cc 2018-03-04 15:27:08 +0000
1953@@ -163,7 +163,7 @@
1954 * If both are identical, sort by time sent.
1955 */
1956 bool GameMessageMenu::compare_title(uint32_t a, uint32_t b) {
1957- MessageQueue& mq = iplayer().player().messages();
1958+ const MessageQueue& mq = iplayer().player().messages();
1959 const Message* msga = mq[MessageId((*list)[a])];
1960 const Message* msgb = mq[MessageId((*list)[b])];
1961
1962@@ -181,7 +181,7 @@
1963 * If both are identical, sort by time sent.
1964 */
1965 bool GameMessageMenu::compare_status(uint32_t a, uint32_t b) {
1966- MessageQueue& mq = iplayer().player().messages();
1967+ const MessageQueue& mq = iplayer().player().messages();
1968 const Message* msga = mq[MessageId((*list)[a])];
1969 const Message* msgb = mq[MessageId((*list)[b])];
1970
1971@@ -199,7 +199,7 @@
1972 * If both are identical, sort by time sent.
1973 */
1974 bool GameMessageMenu::compare_type(uint32_t a, uint32_t b) {
1975- MessageQueue& mq = iplayer().player().messages();
1976+ const MessageQueue& mq = iplayer().player().messages();
1977 const Message* msga = mq[MessageId((*list)[a])];
1978 const Message* msgb = mq[MessageId((*list)[b])];
1979
1980@@ -218,7 +218,7 @@
1981 * When comparing messages by time sent, older messages come before others.
1982 */
1983 bool GameMessageMenu::compare_time_sent(uint32_t a, uint32_t b) {
1984- MessageQueue& mq = iplayer().player().messages();
1985+ const MessageQueue& mq = iplayer().player().messages();
1986 const Message* msga = mq[MessageId((*list)[a])];
1987 const Message* msgb = mq[MessageId((*list)[b])];
1988
1989@@ -252,7 +252,7 @@
1990 }
1991
1992 void GameMessageMenu::think() {
1993- MessageQueue& mq = iplayer().player().messages();
1994+ const MessageQueue& mq = iplayer().player().messages();
1995 size_t no_selections = list->selections().size();
1996 size_t list_size = list->size();
1997
1998@@ -310,8 +310,8 @@
1999 * Something has been selected
2000 */
2001 void GameMessageMenu::selected(uint32_t const t) {
2002- Widelands::Player& player = iplayer().player();
2003- MessageQueue& mq = player.messages();
2004+ const Widelands::Player& player = iplayer().player();
2005+ const MessageQueue& mq = player.messages();
2006 if (t != UI::Table<uintptr_t>::no_selection_index()) {
2007 MessageId const id = MessageId((*list)[t]);
2008 if (Message const* const message = mq[id]) {
2009
2010=== modified file 'src/wui/interactive_player.cc'
2011--- src/wui/interactive_player.cc 2018-01-10 16:29:00 +0000
2012+++ src/wui/interactive_player.cc 2018-03-04 15:27:08 +0000
2013@@ -302,7 +302,7 @@
2014 f->roads = player_field.roads;
2015 f->vision = player_field.vision;
2016 if (player_field.vision == 1) {
2017- f->owner = player_field.owner != 0 ? &gbase.player(player_field.owner) : nullptr;
2018+ f->owner = player_field.owner != 0 ? gbase.get_player(player_field.owner) : nullptr;
2019 f->is_border = player_field.border;
2020 }
2021 }
2022
2023=== modified file 'src/wui/interactive_player.h'
2024--- src/wui/interactive_player.h 2017-09-01 14:12:58 +0000
2025+++ src/wui/interactive_player.h 2018-03-04 15:27:08 +0000
2026@@ -57,7 +57,7 @@
2027
2028 bool handle_key(bool down, SDL_Keysym) override;
2029
2030- Widelands::Player& player() const {
2031+ const Widelands::Player& player() const {
2032 return game().player(player_number_);
2033 }
2034 Widelands::Player* get_player() const override {

Subscribers

People subscribed via source and target branches

to status/vote changes: