diff --git a/abstio/src/abst_data.rs b/abstio/src/abst_data.rs index 1ef2123385..cfc03e0c0f 100644 --- a/abstio/src/abst_data.rs +++ b/abstio/src/abst_data.rs @@ -54,16 +54,16 @@ impl Manifest { } let parts = path.split("/").collect::>(); - let mut city = format!("{}/{}", parts[2], parts[3]); + let mut data_pack = format!("{}/{}", parts[2], parts[3]); if Manifest::is_file_part_of_huge_seattle(path) { - city = "us/huge_seattle".to_string(); + data_pack = "us/huge_seattle".to_string(); } if parts[1] == "input" { - if data_packs.input.contains(&city) { + if data_packs.input.contains(&data_pack) { continue; } } else if parts[1] == "system" { - if data_packs.runtime.contains(&city) { + if data_packs.runtime.contains(&data_pack) { continue; } } else { @@ -82,7 +82,10 @@ impl Manifest { /// "us/huge_seattle" pack has the rest. This returns true for files belonging to /// "us/huge_seattle". pub fn is_file_part_of_huge_seattle(path: &str) -> bool { - let path = path.strip_prefix(&crate::path("")).unwrap_or(path); + let path = path + .strip_prefix(&crate::path("")) + .or_else(|| path.strip_prefix("data/")) + .unwrap_or_else(|| path); let name = if let Some(x) = path.strip_prefix("system/us/seattle/maps/") { x.strip_suffix(".bin").unwrap() } else if let Some(x) = path.strip_prefix("system/us/seattle/scenarios/") { @@ -110,11 +113,7 @@ impl Manifest { { return None; } - if Manifest::is_file_part_of_huge_seattle(path) { - return Some(CityName::new("us", "huge_seattle")); - } else { - return Some(CityName::new(parts[2], parts[3])); - } + return Some(CityName::new(parts[2], parts[3])); } None } diff --git a/map_gui/src/tools/updater.rs b/map_gui/src/tools/updater.rs index 2ee7a60a8c..2e41071a47 100644 --- a/map_gui/src/tools/updater.rs +++ b/map_gui/src/tools/updater.rs @@ -3,7 +3,7 @@ use std::fs::File; use futures_channel::mpsc; -use abstio::{CityName, DataPacks, Manifest, MapName}; +use abstio::{DataPacks, Manifest, MapName}; use widgetry::{EventCtx, Key, Transition}; use crate::load::FutureLoader; @@ -16,13 +16,12 @@ const NEXT_RELEASE: &str = "0.2.41"; // For each city, how many total bytes do the runtime files cost to download? /// How many bytes to download for a city? -fn size_of_city(city: &CityName) -> u64 { +fn size_of_city(map: &MapName) -> u64 { let mut data_packs = DataPacks { runtime: BTreeSet::new(), input: BTreeSet::new(), }; - // TODO huge_seattle breaks here... - data_packs.runtime.insert(city.to_path()); + data_packs.runtime.insert(map.to_data_pack_name()); let mut manifest = Manifest::load().filter(data_packs); // Don't download files that already exist abstutil::retain_btreemap(&mut manifest.entries, |path, _| { @@ -58,7 +57,7 @@ pub fn prompt_to_download_missing_data( ctx, format!( "Missing data. Download {} for {}?", - prettyprint_bytes(size_of_city(&map_name.city)), + prettyprint_bytes(size_of_city(&map_name)), map_name.city.describe() ), vec![