@@ -1355,6 +1355,15 @@ void vehicle_item_spawn::deserialize( const JsonObject &jo )
1355
1355
optional ( jo, false , " item_groups" , item_groups, string_id_reader<Item_spawn_data> {} );
1356
1356
}
1357
1357
1358
+ void vehicle_prototype::zone_def::deserialize ( const JsonObject &jo )
1359
+ {
1360
+ mandatory ( jo, false , " type" , zone_type );
1361
+ mandatory ( jo, false , " x" , pt.x () );
1362
+ mandatory ( jo, false , " y" , pt.y () );
1363
+ optional ( jo, false , " name" , name );
1364
+ optional ( jo, false , " filter" , filter );
1365
+ }
1366
+
1358
1367
void vehicle_prototype::load ( const JsonObject &jo, std::string_view )
1359
1368
{
1360
1369
vgroups[vgroup_id ( id.str () )].add_vehicle ( id, 100 );
@@ -1376,21 +1385,7 @@ void vehicle_prototype::load( const JsonObject &jo, std::string_view )
1376
1385
}
1377
1386
1378
1387
optional ( jo, was_loaded, " items" , item_spawns );
1379
-
1380
- for ( JsonObject jzi : jo.get_array ( " zones" ) ) {
1381
- zone_type_id zone_type ( jzi.get_member ( " type" ).get_string () );
1382
- std::string name;
1383
- std::string filter;
1384
- point_rel_ms pt ( jzi.get_member ( " x" ).get_int (), jzi.get_member ( " y" ).get_int () );
1385
-
1386
- if ( jzi.has_string ( " name" ) ) {
1387
- name = jzi.get_string ( " name" );
1388
- }
1389
- if ( jzi.has_string ( " filter" ) ) {
1390
- filter = jzi.get_string ( " filter" );
1391
- }
1392
- zone_defs.emplace_back ( zone_def{ zone_type, name, filter, pt } );
1393
- }
1388
+ optional ( jo, was_loaded, " zones" , zone_defs, json_read_reader<zone_def> {} );
1394
1389
}
1395
1390
1396
1391
void vehicle_prototype::save_vehicle_as_prototype ( const vehicle &veh,
0 commit comments