1use super::note::Note;
2use crate::NbsFormat;
3use std::collections::HashMap;
4
5#[derive(Debug)]
7pub struct Layer {
8 pub name: String,
10 pub locked: Option<bool>,
12 pub volume: i8,
14 pub stereo: Option<i8>,
16 pub notes: HashMap<i16, Note>,
17}
18
19impl Layer {
20 pub fn new() -> Self {
22 Layer {
23 name: String::new(),
24 locked: None,
25 volume: 100,
26 stereo: None,
27 notes: HashMap::new(),
28 }
29 }
30
31 pub fn from_format(format: NbsFormat) -> Self {
33 let mut layer = Layer::new();
34 layer.name = String::new();
35 if format.version() >= 4 {
36 layer.locked = Some(false);
37 }
38 layer.volume = 100;
39 if format.version() >= 2 {
40 layer.stereo = Some(100);
41 }
42 layer
43 }
44}