Skip to content

Commit b4627d1

Browse files
committed
Vehicle prototype zone def optional/mandatory
1 parent 0a86175 commit b4627d1

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

src/veh_type.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,6 +1355,15 @@ void vehicle_item_spawn::deserialize( const JsonObject &jo )
13551355
optional( jo, false, "item_groups", item_groups, string_id_reader<Item_spawn_data> {} );
13561356
}
13571357

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+
13581367
void vehicle_prototype::load( const JsonObject &jo, std::string_view )
13591368
{
13601369
vgroups[vgroup_id( id.str() )].add_vehicle( id, 100 );
@@ -1376,21 +1385,7 @@ void vehicle_prototype::load( const JsonObject &jo, std::string_view )
13761385
}
13771386

13781387
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> {} );
13941389
}
13951390

13961391
void vehicle_prototype::save_vehicle_as_prototype( const vehicle &veh,

src/veh_type.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,11 @@ struct vehicle_prototype {
541541
std::string name;
542542
std::string filter;
543543
point_rel_ms pt;
544+
545+
void deserialize( const JsonObject &jo );
546+
bool operator==( const zone_def &other ) const {
547+
return zone_type == other.zone_type && name == other.name && filter == other.name && pt == other.pt;
548+
}
544549
};
545550

546551
vproto_id id;

tests/vehicle_export_test.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include <set>
21
#include <sstream>
32
#include <string>
43
#include <utility>
@@ -20,11 +19,6 @@
2019

2120
static const vproto_id vehicle_prototype_veh_export_test( "veh_export_test" );
2221

23-
static bool operator==( const vehicle_prototype::zone_def &l, const vehicle_prototype::zone_def &r )
24-
{
25-
return l.filter == r.filter && l.name == r.name && l.pt == r.pt && l.zone_type == r.zone_type;
26-
}
27-
2822
static bool operator==( const vehicle_item_spawn &l, const vehicle_item_spawn &r )
2923
{
3024
return l.pos == r.pos && l.chance == r.chance &&

0 commit comments

Comments
 (0)