211
211
(FileSystem & fs, Editor_Game_Base & egbase, Map_Map_Object_Saver & mos)
212
212
throw (_wexception)
216
fw.Unsigned16(CURRENT_PACKET_VERSION);
218
// We transverse the map and whenever we find a suitable object, we check
219
// if it has wares of some kind.
220
std::vector<uint32_t> ids;
221
Map const & map = egbase.map();
222
Field const & fields_end = map[map.max_index()];
223
for (Field const * field = &map[0]; field < &fields_end; ++field) {
224
// First, check for Flags
225
if (upcast(Flag const, fl, field->get_immovable()))
226
for (int32_t i = 0; i < fl->m_item_filled; ++i) {
227
assert(mos.is_object_known(*fl->m_items[i].item));
228
write_ware(fw, egbase, mos, *fl->m_items[i].item);
231
// Now, check for workers.
232
for (Bob const * b = field->get_first_bob(); b; b = b->get_next_bob())
233
if (upcast(Worker const, worker, b))
235
(WareInstance const * const ware =
236
worker->get_carried_item(egbase))
238
assert(mos.is_object_known(*ware));
239
write_ware(fw, egbase, mos, *ware);
243
fw.Write(fs, "binary/ware_data");
247
* Write this ware instances data to disk
249
void Map_Waredata_Data_Packet::write_ware
251
Editor_Game_Base & egbase,
252
Map_Map_Object_Saver & mos,
253
WareInstance const & ware)
255
fw.Unsigned32(mos.get_object_file_index(ware));
257
if (Map_Object const * const obj = ware.m_location.get(egbase)) {
258
assert(mos.is_object_known(*obj));
259
fw.Unsigned32(mos.get_object_file_index(*obj));
263
fw.CString(ware.descr().name());
265
if (Map_Object const * const obj = ware.m_transfer_nextstep.get(egbase)) {
266
assert(mos.is_object_known(*obj));
267
fw.Unsigned32(mos.get_object_file_index(*obj));
271
mos.mark_object_as_saved(ware);
214
throw wexception("Map_Waredata_Data_Packet::Write is obsolete");