1use super::qua::QuaverMap;
2use std::collections::HashMap;
3use std::io::Read;
4use zip;
5
6#[derive(Debug)]
7pub struct QuaverMapset {
8 pub maps: HashMap<String, QuaverMap>,
9}
10
11impl QuaverMapset {
12 pub fn from_path(path: &str) -> Self {
13 let mut self_ = Self {
14 maps: HashMap::new(),
15 };
16
17 let qp_file = std::fs::File::open(path).unwrap();
18
19 let zip = zip::ZipArchive::new(&qp_file).unwrap();
20
21 for name in zip.file_names() {
22 if name.contains(".qua") {
23 let mut contents = String::new();
24 let mut zip = zip::ZipArchive::new(&qp_file).unwrap();
25 let mut qua_file = zip.by_name(name).unwrap();
26 qua_file.read_to_string(&mut contents).unwrap();
27 self_
28 .maps
29 .insert(name.replace(".qua", ""), QuaverMap::from_string(&contents));
30 }
31 }
32
33 self_
34 }
35}