Some kind of refactoring
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use crate::model::{PatternSpeed, Project};
|
||||
use crate::model::{Bank, Pattern, PatternSpeed, Project};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct PatternEdit {
|
||||
@@ -90,3 +90,38 @@ pub fn get_step_script(
|
||||
.step(step)
|
||||
.map(|s| s.script.clone())
|
||||
}
|
||||
|
||||
pub fn delete_step(project: &mut Project, bank: usize, pattern: usize, step: usize) -> PatternEdit {
|
||||
let pat = project.pattern_at_mut(bank, pattern);
|
||||
for s in &mut pat.steps {
|
||||
if s.source == Some(step) {
|
||||
s.source = None;
|
||||
s.script.clear();
|
||||
s.command = None;
|
||||
}
|
||||
}
|
||||
|
||||
set_step_script(project, bank, pattern, step, String::new());
|
||||
if let Some(s) = project.pattern_at_mut(bank, pattern).step_mut(step) {
|
||||
s.command = None;
|
||||
s.source = None;
|
||||
}
|
||||
PatternEdit::new(bank, pattern)
|
||||
}
|
||||
|
||||
pub fn delete_steps(project: &mut Project, bank: usize, pattern: usize, steps: &[usize]) -> PatternEdit {
|
||||
for &step in steps {
|
||||
delete_step(project, bank, pattern, step);
|
||||
}
|
||||
PatternEdit::new(bank, pattern)
|
||||
}
|
||||
|
||||
pub fn reset_pattern(project: &mut Project, bank: usize, pattern: usize) -> PatternEdit {
|
||||
project.banks[bank].patterns[pattern] = Pattern::default();
|
||||
PatternEdit::new(bank, pattern)
|
||||
}
|
||||
|
||||
pub fn reset_bank(project: &mut Project, bank: usize) -> usize {
|
||||
project.banks[bank] = Bank::default();
|
||||
project.banks[bank].patterns.len()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user