Merge lp:~widelands-dev/widelands/elk_moose into lp:widelands
- elk_moose
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 9155 |
Proposed branch: | lp:~widelands-dev/widelands/elk_moose |
Merge into: | lp:widelands |
Diff against target: |
455 lines (+102/-30) 16 files modified
data/world/critters/moose/init.lua (+2/-2) data/world/init.lua (+1/-1) data/world/map_generation.lua (+6/-6) src/logic/map.cc (+16/-0) src/logic/map.h (+8/-0) src/logic/map_objects/world/critter.cc (+3/-2) src/logic/map_revision.h (+2/-0) src/map_io/map_bob_packet.cc (+3/-3) src/map_io/map_bob_packet.h (+1/-1) src/map_io/map_saver.cc (+1/-1) src/map_io/map_version_packet.cc (+12/-5) src/map_io/map_version_packet.h (+17/-2) src/map_io/widelands_map_loader.cc (+5/-1) src/map_io/world_legacy_lookup_table.cc (+23/-5) src/map_io/world_legacy_lookup_table.h (+1/-1) src/website/map_info.cc (+1/-0) |
To merge this branch: | bzr merge lp:~widelands-dev/widelands/elk_moose |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Klaus Halfmann | testing | Approve | |
Review via email:
|
Commit message
Rename "elk" to "moose" and add map compatibility code
- Add support for critter renamings depending on packet version to WorldLegacyLook
- New map version property "needs_
Description of the change

Klaus Halfmann (klaus-halfmann) wrote : | # |

Klaus Halfmann (klaus-halfmann) wrote : | # |
I expect some followup change on the website then.
Widelands will always read older Maps.
Did another review with a look into the complete code.
(We need some Widelands historian for all this legacy :-)
A bit more documentation would help.

Klaus Halfmann (klaus-halfmann) wrote : | # |
I openend some buitin and a new Map,
how can I see this new value in a map?
I am missing some info about wl_map_info / wl_map_object_info

Klaus Halfmann (klaus-halfmann) wrote : | # |
OTOH the code is OK for me, anything more I can / must do?

GunChleoc (gunchleoc) wrote : | # |
I have added comments.
If you run ./wl_map_info without parameters, it will give you command line help. It results in a JSON file for the website.

Klaus Halfmann (klaus-halfmann) wrote : | # |
Ahh, the json file is created in thee same dir as the wmf file, e.g.
{
"name": "CrossriverA",
"author": "Hasi50",
"description": "A nice River flows through this land and water can be found there. Metal in the hills nearby, but you are not alone",
"hint": "",
"width": 64,
"height": 64,
"nr_players": 2,
"needs_
"world_name": "",
"minimap": "/Users/
}
A map saved with the new version
{
"name": "27 zu 3 Inseln",
"author": "Björn alias the-x",
"description": "Starting with 27 Islands falling together when you find Ways to pass through the rocks to 3 huge Island. Are you unstoppable to manage all 3 Islands under your control? Tipps: Start to find your dream Island real fast and you wont find Iron on your main Island.",
"hint": "",
"width": 144,
"height": 144,
"nr_players": 4,
"needs_
"world_name": "",
"minimap": "/Users/
}
Trunk gives me:
Exception: map objects: [../src/
UnhandledVersio
Packet Name: Critter
Saved Version: 2
Current Version: 1.
Fine

GunChleoc (gunchleoc) wrote : | # |
Thanks for the review & testing!
@bunnybot merge

bunnybot (widelandsofficial) wrote : | # |
Continuous integration builds have changed state:
Travis build 5218. State: errored. Details: https:/
Appveyor build 4997. State: success. Details: https:/

bunnybot (widelandsofficial) wrote : | # |
Refusing to merge, since Travis is not green. Use @bunnybot merge force for merging anyways.
Travis build 5218. State: errored. Details: https:/

Klaus Halfmann (klaus-halfmann) wrote : | # |
Travis:
1 x curl: (6) Could not resolve host: deb.debian.org
Error: An exception occurred within a child process:
DownloadError: Failed to download resource "isl"
3 x Loading savegame: inputqueues ...
No output has been received in the last 10m0s
-> Adressed elsewhere
All other Builds are fine
@bunnybot merge force

bunnybot (widelandsofficial) wrote : | # |
Error merging this proposal:
Output:
stdout:
stderr:
Unable to obtain lock held by <email address hidden> on taotie (process #21580), acquired 37 hours, 41 minutes ago.
See "bzr help break-lock" for more.
bzr: ERROR: Could not acquire lock "(remote lock)": bzr+ssh:

GunChleoc (gunchleoc) wrote : | # |
@bunnybot merge force
Preview Diff
1 | === renamed directory 'data/world/critters/elk' => 'data/world/critters/moose' |
2 | === modified file 'data/world/critters/moose/init.lua' |
3 | --- data/world/critters/elk/init.lua 2019-04-21 14:57:55 +0000 |
4 | +++ data/world/critters/moose/init.lua 2019-06-22 16:21:53 +0000 |
5 | @@ -15,8 +15,8 @@ |
6 | add_directional_animation(animations, "walk", dirname, "walk", {21, 34}, 20) |
7 | |
8 | world:new_critter_type{ |
9 | - name = "elk", |
10 | - descname = _ "Elk", |
11 | + name = "moose", |
12 | + descname = _ "Moose", |
13 | editor_category = "critters_herbivores", |
14 | attributes = { "eatable" }, |
15 | programs = { |
16 | |
17 | === modified file 'data/world/init.lua' |
18 | --- data/world/init.lua 2017-09-03 10:56:44 +0000 |
19 | +++ data/world/init.lua 2019-06-22 16:21:53 +0000 |
20 | @@ -288,7 +288,7 @@ |
21 | include "world/critters/deer/init.lua" |
22 | include "world/critters/reindeer/init.lua" |
23 | include "world/critters/stag/init.lua" |
24 | - include "world/critters/elk/init.lua" |
25 | + include "world/critters/moose/init.lua" |
26 | |
27 | -- Carnivores |
28 | world:new_editor_critter_category { |
29 | |
30 | === modified file 'data/world/map_generation.lua' |
31 | --- data/world/map_generation.lua 2017-02-12 09:10:57 +0000 |
32 | +++ data/world/map_generation.lua 2019-06-22 16:21:53 +0000 |
33 | @@ -77,17 +77,17 @@ |
34 | "alder_summer_old", "birch_summer_old", "beech_summer_old", |
35 | "larch_summer_old", "rowan_summer_old" |
36 | }, |
37 | - critters = { "brownbear", "chamois", "elk", "lynx", "reindeer", "stag", "wildboar", "wolf" }, |
38 | + critters = { "brownbear", "chamois", "moose", "lynx", "reindeer", "stag", "wildboar", "wolf" }, |
39 | }, |
40 | { |
41 | name = "bushes", |
42 | immovables = { "bush1", "bush2", "bush3", "bush4", "bush5" }, |
43 | - critters = { "bunny", "elk", "fox", "lynx", "marten", "sheep", "sheep", "wildboar", "wisent", "wolf", "wolf" }, |
44 | + critters = { "bunny", "moose", "fox", "lynx", "marten", "sheep", "sheep", "wildboar", "wisent", "wolf", "wolf" }, |
45 | }, |
46 | { |
47 | name = "grasses", |
48 | immovables = { "grass1", "grass2", "grass3" }, |
49 | - critters = { "bunny", "elk", "fox", "lynx", "marten", "sheep", "sheep", "wolf" }, |
50 | + critters = { "bunny", "moose", "fox", "lynx", "marten", "sheep", "sheep", "wolf" }, |
51 | }, |
52 | { |
53 | name = "standing_stones", |
54 | @@ -614,13 +614,13 @@ |
55 | "birch_summer_old", "beech_summer_old", |
56 | "larch_summer_old", "rowan_summer_old", |
57 | }, |
58 | - critters = { "deer", "elk", "lynx", "reindeer", "wolf" }, |
59 | + critters = { "deer", "moose", "lynx", "reindeer", "wolf" }, |
60 | }, |
61 | { |
62 | name = "bushes", |
63 | immovables = { "bush1", "bush2", "bush3", "bush4", "bush5" }, |
64 | critters = { |
65 | - "wisent", "wolf", "bunny", "elk", "fox", "lynx", |
66 | + "wisent", "wolf", "bunny", "moose", "fox", "lynx", |
67 | "wolf", "marten", "sheep" |
68 | }, |
69 | }, |
70 | @@ -628,7 +628,7 @@ |
71 | name = "grasses", |
72 | immovables = { "grass1", "grass2", "grass3" }, |
73 | critters = { |
74 | - "wisent", "wolf", "bunny", "elk", "fox", "lynx", |
75 | + "wisent", "wolf", "bunny", "moose", "fox", "lynx", |
76 | "wolf", "marten", "sheep" |
77 | }, |
78 | }, |
79 | |
80 | === modified file 'src/logic/map.cc' |
81 | --- src/logic/map.cc 2019-05-16 09:15:03 +0000 |
82 | +++ src/logic/map.cc 2019-06-22 16:21:53 +0000 |
83 | @@ -714,6 +714,22 @@ |
84 | pathfieldmgr_->set_size(field_size); |
85 | } |
86 | |
87 | +int Map::needs_widelands_version_after() const { |
88 | + return map_version_.needs_widelands_version_after; |
89 | +} |
90 | + |
91 | +void Map::calculate_needs_widelands_version_after(bool is_post_one_world) { |
92 | + if (map_version_.needs_widelands_version_after == 0) { |
93 | + if (nrplayers_ > 8) { |
94 | + // We introduced support for 16 players after Build 19 |
95 | + map_version_.needs_widelands_version_after = 19; |
96 | + } else if (is_post_one_world) { |
97 | + // We merged the worlds in the engine after Build 18 |
98 | + map_version_.needs_widelands_version_after = 18; |
99 | + } |
100 | + } |
101 | +} |
102 | + |
103 | /* |
104 | * The scenario get/set functions |
105 | */ |
106 | |
107 | === modified file 'src/logic/map.h' |
108 | --- src/logic/map.h 2019-05-16 09:15:03 +0000 |
109 | +++ src/logic/map.h 2019-06-22 16:21:53 +0000 |
110 | @@ -289,6 +289,9 @@ |
111 | return height_; |
112 | } |
113 | |
114 | + // Map compatibility information for the website |
115 | + int needs_widelands_version_after() const; |
116 | + |
117 | // The next few functions are only valid when the map is loaded as a |
118 | // scenario. |
119 | const std::string& get_scenario_player_tribe(PlayerNumber) const; |
120 | @@ -518,6 +521,11 @@ |
121 | std::map<Coords, FieldData> |
122 | resize(EditorGameBase& egbase, const Coords coords, int32_t w, int32_t h); |
123 | |
124 | +protected: |
125 | + /// Calculate map compatibility information for the website if it wasn't defined in the map packet. |
126 | + /// If is_post_one_world is true, this map wasn't created for a specific world (Widelands versions up to Build 18). |
127 | + void calculate_needs_widelands_version_after(bool is_post_one_world); |
128 | + |
129 | private: |
130 | void recalc_border(const FCoords&); |
131 | void recalc_brightness(const FCoords&); |
132 | |
133 | === modified file 'src/logic/map_objects/world/critter.cc' |
134 | --- src/logic/map_objects/world/critter.cc 2019-05-25 08:51:42 +0000 |
135 | +++ src/logic/map_objects/world/critter.cc 2019-06-22 16:21:53 +0000 |
136 | @@ -268,7 +268,8 @@ |
137 | ============================== |
138 | */ |
139 | |
140 | -constexpr uint8_t kCurrentPacketVersion = 1; |
141 | +// We need to bump this packet version every time we rename a critter, so that the world legacy lookup table will work. |
142 | +constexpr uint8_t kCurrentPacketVersion = 2; |
143 | |
144 | Critter::Loader::Loader() { |
145 | } |
146 | @@ -303,7 +304,7 @@ |
147 | const CritterDescr* descr = nullptr; |
148 | |
149 | if (critter_owner == "world") { |
150 | - critter_name = lookup_table.lookup_critter(critter_name); |
151 | + critter_name = lookup_table.lookup_critter(critter_name, packet_version); |
152 | descr = egbase.world().get_critter_descr(critter_name); |
153 | } else { |
154 | throw GameDataError( |
155 | |
156 | === modified file 'src/logic/map_revision.h' |
157 | --- src/logic/map_revision.h 2019-02-23 11:00:49 +0000 |
158 | +++ src/logic/map_revision.h 2019-06-22 16:21:53 +0000 |
159 | @@ -37,6 +37,8 @@ |
160 | int32_t map_version_major; |
161 | int32_t map_version_minor; |
162 | uint32_t map_version_timestamp; |
163 | + // Map compatibility information for the website |
164 | + int needs_widelands_version_after; |
165 | |
166 | MapVersion(); |
167 | }; |
168 | |
169 | === modified file 'src/map_io/map_bob_packet.cc' |
170 | --- src/map_io/map_bob_packet.cc 2019-02-23 11:00:49 +0000 |
171 | +++ src/map_io/map_bob_packet.cc 2019-06-22 16:21:53 +0000 |
172 | @@ -36,7 +36,7 @@ |
173 | EditorGameBase& egbase, |
174 | MapObjectLoader&, |
175 | const Coords& coords, |
176 | - const WorldLegacyLookupTable& lookup_table) { |
177 | + const WorldLegacyLookupTable& lookup_table, uint16_t packet_version) { |
178 | const std::string owner = fr.c_string(); |
179 | char const* const read_name = fr.c_string(); |
180 | uint8_t subtype = fr.unsigned_8(); |
181 | @@ -47,7 +47,7 @@ |
182 | throw GameDataError("unknown legacy bob %s/%s", owner.c_str(), read_name); |
183 | } |
184 | |
185 | - const std::string name = lookup_table.lookup_critter(read_name); |
186 | + const std::string name = lookup_table.lookup_critter(read_name, packet_version); |
187 | try { |
188 | const World& world = egbase.world(); |
189 | DescriptionIndex const idx = world.get_critter(name.c_str()); |
190 | @@ -84,7 +84,7 @@ |
191 | for (uint16_t x = 0; x < map->get_width(); ++x) { |
192 | uint32_t const nr_bobs = fr.unsigned_32(); |
193 | for (uint32_t i = 0; i < nr_bobs; ++i) |
194 | - read_bob(fr, egbase, mol, Coords(x, y), lookup_table); |
195 | + read_bob(fr, egbase, mol, Coords(x, y), lookup_table, packet_version); |
196 | } |
197 | } |
198 | else { |
199 | |
200 | === modified file 'src/map_io/map_bob_packet.h' |
201 | --- src/map_io/map_bob_packet.h 2019-02-23 11:00:49 +0000 |
202 | +++ src/map_io/map_bob_packet.h 2019-06-22 16:21:53 +0000 |
203 | @@ -42,7 +42,7 @@ |
204 | EditorGameBase&, |
205 | MapObjectLoader&, |
206 | const Coords&, |
207 | - const WorldLegacyLookupTable& lookup_table); |
208 | + const WorldLegacyLookupTable& lookup_table, uint16_t packet_version); |
209 | }; |
210 | } // namespace Widelands |
211 | |
212 | |
213 | === modified file 'src/map_io/map_saver.cc' |
214 | --- src/map_io/map_saver.cc 2019-03-09 10:01:09 +0000 |
215 | +++ src/map_io/map_saver.cc 2019-06-22 16:21:53 +0000 |
216 | @@ -156,7 +156,7 @@ |
217 | log("Writing Map Version ... "); |
218 | { |
219 | MapVersionPacket p; |
220 | - p.write(fs_, egbase_, *mos_); |
221 | + p.write(fs_, egbase_); |
222 | } |
223 | log("took %ums\n ", timer.ms_since_last_query()); |
224 | |
225 | |
226 | === modified file 'src/map_io/map_version_packet.cc' |
227 | --- src/map_io/map_version_packet.cc 2019-02-23 11:00:49 +0000 |
228 | +++ src/map_io/map_version_packet.cc 2019-06-22 16:21:53 +0000 |
229 | @@ -30,11 +30,17 @@ |
230 | namespace Widelands { |
231 | |
232 | constexpr uint16_t kCurrentPacketVersion = 1; |
233 | +// Map compatibility information for the website |
234 | +constexpr int kCurrentNeedsWidelandsVersionAfter = 20; |
235 | |
236 | void MapVersionPacket::read(FileSystem& fs, |
237 | EditorGameBase& egbase, |
238 | - bool const skip, |
239 | - MapObjectLoader&) { |
240 | + bool const skip, bool is_post_one_world) { |
241 | + |
242 | + pre_read(fs, egbase.mutable_map(), skip, is_post_one_world); |
243 | +} |
244 | + |
245 | +void MapVersionPacket::pre_read(FileSystem& fs, Map* map, bool skip, bool is_post_one_world) { |
246 | if (skip) |
247 | return; |
248 | |
249 | @@ -42,7 +48,6 @@ |
250 | try { |
251 | prof.read("version", nullptr, fs); |
252 | } catch (...) { |
253 | - Map* map = egbase.mutable_map(); |
254 | map->map_version_.map_version_timestamp = 0; |
255 | map->map_version_.map_creator_version = "unknown"; |
256 | return; |
257 | @@ -55,7 +60,6 @@ |
258 | if ((packet_version == kCurrentPacketVersion) || |
259 | (packet_version > kCurrentPacketVersion && |
260 | forward_compatibility <= kCurrentPacketVersion)) { |
261 | - Map* map = egbase.mutable_map(); |
262 | map->map_version_.map_source_url = globv.get_safe_string("map_source_url"); |
263 | map->map_version_.map_source_release = globv.get_safe_string("map_release"); |
264 | map->map_version_.map_creator_version = globv.get_safe_string("map_creator_version"); |
265 | @@ -63,6 +67,8 @@ |
266 | map->map_version_.map_version_minor = globv.get_safe_int("map_version_minor"); |
267 | uint32_t ts = static_cast<uint32_t>(globv.get_safe_int("map_version_timestamp")); |
268 | map->map_version_.map_version_timestamp = ts; |
269 | + map->map_version_.needs_widelands_version_after = globv.get_int("needs_widelands_version_after", 0); |
270 | + map->calculate_needs_widelands_version_after(is_post_one_world); |
271 | } else { |
272 | throw UnhandledVersionError("MapVersionPacket", packet_version, kCurrentPacketVersion); |
273 | } |
274 | @@ -71,7 +77,7 @@ |
275 | } |
276 | } |
277 | |
278 | -void MapVersionPacket::write(FileSystem& fs, EditorGameBase& egbase, MapObjectSaver&) { |
279 | +void MapVersionPacket::write(FileSystem& fs, EditorGameBase& egbase) { |
280 | Profile prof; |
281 | Section& globs = prof.create_section("global"); |
282 | |
283 | @@ -117,6 +123,7 @@ |
284 | globs.set_int("map_version_timestamp", static_cast<uint32_t>(time(nullptr))); |
285 | globs.set_int("packet_version", kCurrentPacketVersion); |
286 | globs.set_int("packet_compatibility", kCurrentPacketVersion); |
287 | + globs.set_int("needs_widelands_version_after", kCurrentNeedsWidelandsVersionAfter); |
288 | |
289 | prof.write("version", false, fs); |
290 | } |
291 | |
292 | === modified file 'src/map_io/map_version_packet.h' |
293 | --- src/map_io/map_version_packet.h 2019-02-23 11:00:49 +0000 |
294 | +++ src/map_io/map_version_packet.h 2019-06-22 16:21:53 +0000 |
295 | @@ -20,11 +20,26 @@ |
296 | #ifndef WL_MAP_IO_MAP_VERSION_PACKET_H |
297 | #define WL_MAP_IO_MAP_VERSION_PACKET_H |
298 | |
299 | -#include "map_io/map_data_packet.h" |
300 | +class FileSystem; |
301 | + |
302 | +namespace Widelands { |
303 | + |
304 | +class EditorGameBase; |
305 | +class Map; |
306 | +class MapObjectLoader; |
307 | +struct MapObjectSaver; |
308 | |
309 | /* |
310 | * This packet contains the version information of the map. |
311 | */ |
312 | -MAP_DATA_PACKET(MapVersionPacket) |
313 | +class MapVersionPacket { |
314 | +public: |
315 | + void read(FileSystem&, EditorGameBase&, bool skip, bool is_post_one_world); |
316 | + void write(FileSystem&, EditorGameBase&); |
317 | + |
318 | + void pre_read(FileSystem&, Map*, bool skip, bool is_post_one_world); |
319 | +}; |
320 | + |
321 | +} // namespace Widelands |
322 | |
323 | #endif // end of include guard: WL_MAP_IO_MAP_VERSION_PACKET_H |
324 | |
325 | === modified file 'src/map_io/widelands_map_loader.cc' |
326 | --- src/map_io/widelands_map_loader.cc 2019-05-26 03:14:41 +0000 |
327 | +++ src/map_io/widelands_map_loader.cc 2019-06-22 16:21:53 +0000 |
328 | @@ -82,6 +82,10 @@ |
329 | mp.pre_read(*fs_, &map_); |
330 | old_world_name_ = mp.old_world_name(); |
331 | } |
332 | + { |
333 | + MapVersionPacket version_packet; |
334 | + version_packet.pre_read(*fs_, &map_, false, old_world_name_.empty()); |
335 | + } |
336 | |
337 | { |
338 | MapPlayerNamesAndTribesPacket p; |
339 | @@ -198,7 +202,7 @@ |
340 | log("Reading Map Version Data ... "); |
341 | { |
342 | MapVersionPacket p; |
343 | - p.read(*fs_, egbase, is_game, *mol_); |
344 | + p.read(*fs_, egbase, is_game, old_world_name_.empty()); |
345 | } |
346 | log("took %ums\n ", timer.ms_since_last_query()); |
347 | |
348 | |
349 | === modified file 'src/map_io/world_legacy_lookup_table.cc' |
350 | --- src/map_io/world_legacy_lookup_table.cc 2019-02-23 11:00:49 +0000 |
351 | +++ src/map_io/world_legacy_lookup_table.cc 2019-06-22 16:21:53 +0000 |
352 | @@ -33,16 +33,24 @@ |
353 | // Implements OneWorldLegacyLookupTable. |
354 | std::string lookup_resource(const std::string& resource) const override; |
355 | std::string lookup_terrain(const std::string& terrain) const override; |
356 | - std::string lookup_critter(const std::string& critter) const override; |
357 | + std::string lookup_critter(const std::string& critter, uint16_t packet_version) const override; |
358 | std::string lookup_immovable(const std::string& immovable) const override; |
359 | |
360 | private: |
361 | + // Old name, <packet version when it got changed, new name> |
362 | + const std::map<std::string, std::map<uint16_t, std::string>> critters_; |
363 | const std::map<std::string, std::string> immovables_; |
364 | const std::map<std::string, std::string> resources_; |
365 | const std::map<std::string, std::string> terrains_; |
366 | }; |
367 | |
368 | PostOneWorldLegacyLookupTable::PostOneWorldLegacyLookupTable() : |
369 | +critters_ |
370 | +{ |
371 | + // We need to bump the packet version in Critter every time we rename a critter. |
372 | + // Also, don't forget to edit the OneWorldLegacyLookupTable! You can look up which world had which units in Build 18. |
373 | + {"elk", {{2, "moose"}}}, |
374 | +}, |
375 | immovables_ |
376 | { |
377 | {"blackland_stones1", "blackland_rocks1"}, |
378 | @@ -113,8 +121,16 @@ |
379 | return i->second; |
380 | } |
381 | |
382 | -std::string PostOneWorldLegacyLookupTable::lookup_critter(const std::string& critter) const { |
383 | - return critter; |
384 | +std::string PostOneWorldLegacyLookupTable::lookup_critter(const std::string& critter, uint16_t packet_version) const { |
385 | + std::string result = critter; |
386 | + if (critters_.count(critter) == 1) { |
387 | + for (const auto& candidate : critters_.at(result)) { |
388 | + if (candidate.first >= packet_version) { |
389 | + result = candidate.second; |
390 | + } |
391 | + } |
392 | + } |
393 | + return result; |
394 | } |
395 | |
396 | std::string PostOneWorldLegacyLookupTable::lookup_immovable(const std::string& immovable) const { |
397 | @@ -132,7 +148,7 @@ |
398 | // Implements OneWorldLegacyLookupTable. |
399 | std::string lookup_resource(const std::string& resource) const override; |
400 | std::string lookup_terrain(const std::string& terrain) const override; |
401 | - std::string lookup_critter(const std::string& critter) const override; |
402 | + std::string lookup_critter(const std::string& critter, uint16_t packet_version) const override; |
403 | std::string lookup_immovable(const std::string& immovable) const override; |
404 | |
405 | private: |
406 | @@ -205,6 +221,7 @@ |
407 | std::make_pair("greenland", |
408 | std::map<std::string, std::string>{ |
409 | {"deer", "stag"}, |
410 | + {"elk", "moose"}, |
411 | }), |
412 | std::make_pair("blackland", |
413 | std::map<std::string, std::string>{ |
414 | @@ -213,6 +230,7 @@ |
415 | std::make_pair("winterland", |
416 | std::map<std::string, std::string>{ |
417 | {"deer", "stag"}, |
418 | + {"elk", "moose"}, |
419 | }), |
420 | std::make_pair("desert", |
421 | std::map<std::string, std::string>{ |
422 | @@ -418,7 +436,7 @@ |
423 | return terrain; |
424 | } |
425 | |
426 | -std::string OneWorldLegacyLookupTable::lookup_critter(const std::string& critter) const { |
427 | +std::string OneWorldLegacyLookupTable::lookup_critter(const std::string& critter, uint16_t) const { |
428 | const std::map<std::string, std::string>& world_critters = critters_.at(old_world_name_); |
429 | const auto& i = world_critters.find(critter); |
430 | if (i != world_critters.end()) { |
431 | |
432 | === modified file 'src/map_io/world_legacy_lookup_table.h' |
433 | --- src/map_io/world_legacy_lookup_table.h 2019-02-23 11:00:49 +0000 |
434 | +++ src/map_io/world_legacy_lookup_table.h 2019-06-22 16:21:53 +0000 |
435 | @@ -38,7 +38,7 @@ |
436 | virtual std::string lookup_terrain(const std::string& terrain) const = 0; |
437 | |
438 | /// Looks up the new name for the 'critter'. |
439 | - virtual std::string lookup_critter(const std::string& critter) const = 0; |
440 | + virtual std::string lookup_critter(const std::string& critter, uint16_t packet_version) const = 0; |
441 | |
442 | /// Looks up the new name for the 'immovable'. |
443 | virtual std::string lookup_immovable(const std::string& immovable) const = 0; |
444 | |
445 | === modified file 'src/website/map_info.cc' |
446 | --- src/website/map_info.cc 2019-02-23 11:00:49 +0000 |
447 | +++ src/website/map_info.cc 2019-06-22 16:21:53 +0000 |
448 | @@ -92,6 +92,7 @@ |
449 | json->add_int("width", map->get_width()); |
450 | json->add_int("height", map->get_height()); |
451 | json->add_int("nr_players", map->get_nrplayers()); |
452 | + json->add_int("needs_widelands_version_after", map->needs_widelands_version_after()); |
453 | |
454 | const std::string world_name = |
455 | static_cast<Widelands::WidelandsMapLoader*>(ml.get())->old_world_name(); |
Some questions inline Code otherwise LGTM.
Will commpile this and the read that code again.