use super::types::LinkType;
#[derive(Debug, Clone, Copy)]
pub struct LinkDefaults {
pub lanes: i32,
pub free_speed: f64,
pub capacity: i32,
pub one_way: bool,
}
pub fn get_link_defaults(link_type: LinkType) -> LinkDefaults {
match link_type {
LinkType::Motorway => LinkDefaults {
lanes: 4,
free_speed: 120.0,
capacity: 2300,
one_way: false,
},
LinkType::Trunk => LinkDefaults {
lanes: 3,
free_speed: 100.0,
capacity: 2200,
one_way: false,
},
LinkType::Primary => LinkDefaults {
lanes: 3,
free_speed: 80.0,
capacity: 1800,
one_way: false,
},
LinkType::Secondary => LinkDefaults {
lanes: 2,
free_speed: 60.0,
capacity: 1600,
one_way: false,
},
LinkType::Tertiary => LinkDefaults {
lanes: 2,
free_speed: 40.0,
capacity: 1200,
one_way: false,
},
LinkType::Residential => LinkDefaults {
lanes: 1,
free_speed: 30.0,
capacity: 1000,
one_way: false,
},
LinkType::LivingStreet => LinkDefaults {
lanes: 1,
free_speed: 15.0,
capacity: 800,
one_way: false,
},
LinkType::Service => LinkDefaults {
lanes: 1,
free_speed: 30.0,
capacity: 800,
one_way: false,
},
LinkType::Cycleway => LinkDefaults {
lanes: 1,
free_speed: 5.0,
capacity: 800,
one_way: true,
},
LinkType::Footway => LinkDefaults {
lanes: 1,
free_speed: 5.0,
capacity: 800,
one_way: true,
},
LinkType::Track => LinkDefaults {
lanes: 1,
free_speed: 30.0,
capacity: 800,
one_way: true,
},
LinkType::Unclassified => LinkDefaults {
lanes: 1,
free_speed: 30.0,
capacity: 800,
one_way: false,
},
LinkType::Connector => LinkDefaults {
lanes: 2,
free_speed: 120.0,
capacity: 9999,
one_way: false,
},
LinkType::Railway => LinkDefaults {
lanes: 1,
free_speed: 50.0,
capacity: 1000,
one_way: true,
},
LinkType::Aeroway => LinkDefaults {
lanes: 1,
free_speed: 50.0,
capacity: 1000,
one_way: true,
},
LinkType::Undefined => LinkDefaults {
lanes: 1,
free_speed: 30.0,
capacity: 800,
one_way: false,
},
}
}