~qcumber-some/widelands/spice-up-cmake

« back to all changes in this revision

Viewing changes to src/map_io/widelands_map_waredata_data_packet.cc

  • Committer: Jens Beyer (Qcumber-some)
  • Date: 2010-05-28 14:51:37 UTC
  • mfrom: (5149.1.226 trunk)
  • Revision ID: qcumber-some@buerotiger.de-20100528145137-0pyil9qw7szyztsw
MergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
211
211
        (FileSystem & fs, Editor_Game_Base & egbase, Map_Map_Object_Saver & mos)
212
212
throw (_wexception)
213
213
{
214
 
        FileWrite fw;
215
 
 
216
 
        fw.Unsigned16(CURRENT_PACKET_VERSION);
217
 
 
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);
229
 
                        }
230
 
 
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))
234
 
                                if
235
 
                                        (WareInstance const * const ware =
236
 
                                                worker->get_carried_item(egbase))
237
 
                                {
238
 
                                        assert(mos.is_object_known(*ware));
239
 
                                        write_ware(fw, egbase, mos, *ware);
240
 
                                }
241
 
        }
242
 
 
243
 
        fw.Write(fs, "binary/ware_data");
244
 
}
245
 
 
246
 
/*
247
 
 * Write this ware instances data to disk
248
 
 */
249
 
void Map_Waredata_Data_Packet::write_ware
250
 
        (FileWrite            & fw,
251
 
         Editor_Game_Base     & egbase,
252
 
         Map_Map_Object_Saver & mos,
253
 
         WareInstance   const & ware)
254
 
{
255
 
        fw.Unsigned32(mos.get_object_file_index(ware));
256
 
 
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));
260
 
        } else
261
 
                fw.Unsigned32(0);
262
 
 
263
 
        fw.CString(ware.descr().name());
264
 
 
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));
268
 
        } else
269
 
                fw.Unsigned32(0);
270
 
 
271
 
        mos.mark_object_as_saved(ware);
 
214
        throw wexception("Map_Waredata_Data_Packet::Write is obsolete");
272
215
}
273
216
 
274
217
}