pub struct MapEdits {
pub edits_name: String,
pub commands: Vec<EditCmd>,
pub original_roads: BTreeMap<RoadID, EditRoad>,
pub original_intersections: BTreeMap<IntersectionID, EditIntersection>,
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 object may be edited multiple times in this stack, until compress() happens.
original_roads: BTreeMap<RoadID, EditRoad>
Derived from commands, kept up to date by update_derived
original_intersections: BTreeMap<IntersectionID, EditIntersection>
§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§
source§impl 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.
source§impl 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.
sourcepub fn get_title(&self) -> &str
pub fn get_title(&self) -> &str
Get the human-friendly of these edits. If they have a description, the first line is the title. Otherwise we use the filename.