pub struct MapEdits {
pub edits_name: String,
pub commands: Vec<EditCmd>,
pub merge_zones: bool,
pub changed_roads: BTreeSet<RoadID>,
pub original_intersections: BTreeMap<IntersectionID, EditIntersection>,
pub original_crosswalks: BTreeMap<IntersectionID, EditCrosswalks>,
pub changed_routes: BTreeSet<TransitRouteID>,
pub proposal_description: Vec<String>,
pub proposal_link: Option<String>,
}
Expand description
Represents changes to a map. Note this isn’t serializable – that’s what PermanentMapEdits
does.
Fields
edits_name: String
commands: Vec<EditCmd>
A stack, oldest edit is first. The same intersection may be edited multiple times in this stack, until compress() happens.
merge_zones: bool
If false, adjacent roads with the same AccessRestrictions will not be merged into the same Zone; every Road will be its own Zone. This is used to experiment with a per-road cap. Note this is a map-wide setting.
changed_roads: BTreeSet<RoadID>
Derived from commands, kept up to date by update_derived
original_intersections: BTreeMap<IntersectionID, EditIntersection>
original_crosswalks: BTreeMap<IntersectionID, EditCrosswalks>
changed_routes: BTreeSet<TransitRouteID>
proposal_description: Vec<String>
Some edits are included in the game by default, in data/system/proposals, as “community proposals.” They require a description and may have a link to a write-up.
proposal_link: Option<String>
Implementations
sourceimpl MapEdits
impl MapEdits
sourcepub fn to_permanent(&self, map: &Map) -> PermanentMapEdits
pub fn to_permanent(&self, map: &Map) -> PermanentMapEdits
Encode the edits in a permanent format, referring to more-stable OSM IDs.
sourceimpl MapEdits
impl MapEdits
pub(crate) fn new() -> MapEdits
sourcepub fn load_from_file(
map: &Map,
path: String,
timer: &mut Timer<'_>
) -> Result<MapEdits>
pub fn load_from_file(
map: &Map,
path: String,
timer: &mut Timer<'_>
) -> Result<MapEdits>
Load map edits from a JSON file. Strip out any commands that’re broken because they don’t match the current map. If the resulting edits are totally empty, consider that a failure – the edits likely don’t cover this map at all.
sourcepub fn load_from_bytes(map: &Map, bytes: Vec<u8>) -> Result<MapEdits>
pub fn load_from_bytes(map: &Map, bytes: Vec<u8>) -> Result<MapEdits>
Load map edits from the given JSON bytes. Strip out any commands that’re broken because they don’t match the current map. If the resulting edits are totally empty, consider that a failure – the edits likely don’t cover this map at all.
fn save(&self, map: &Map)
fn update_derived(&mut self, map: &Map)
sourcepub fn changed_lanes(&self, map: &Map) -> (BTreeSet<LaneID>, BTreeSet<RoadID>)
pub fn changed_lanes(&self, map: &Map) -> (BTreeSet<LaneID>, BTreeSet<RoadID>)
Pick apart changed_roads and figure out if an entire road was edited, or just a few lanes. Doesn’t return deleted lanes.
sourcepub fn get_checksum(&self, map: &Map) -> String
pub fn get_checksum(&self, map: &Map) -> String
Produces an md5sum of the contents of the edits.