This commit is contained in:
2026-01-21 17:05:30 +01:00
commit 67322381c3
59 changed files with 10421 additions and 0 deletions

53
src/state/patterns_nav.rs Normal file
View File

@@ -0,0 +1,53 @@
#[derive(Clone, Copy, PartialEq, Eq, Default)]
pub enum PatternsColumn {
#[default]
Banks,
Patterns,
}
#[derive(Clone, Copy, Default)]
pub struct PatternsNav {
pub column: PatternsColumn,
pub bank_cursor: usize,
pub pattern_cursor: usize,
}
impl PatternsNav {
pub fn move_left(&mut self) {
self.column = PatternsColumn::Banks;
}
pub fn move_right(&mut self) {
self.column = PatternsColumn::Patterns;
}
pub fn move_up(&mut self) {
match self.column {
PatternsColumn::Banks => {
self.bank_cursor = (self.bank_cursor + 15) % 16;
}
PatternsColumn::Patterns => {
self.pattern_cursor = (self.pattern_cursor + 15) % 16;
}
}
}
pub fn move_down(&mut self) {
match self.column {
PatternsColumn::Banks => {
self.bank_cursor = (self.bank_cursor + 1) % 16;
}
PatternsColumn::Patterns => {
self.pattern_cursor = (self.pattern_cursor + 1) % 16;
}
}
}
pub fn selected_bank(&self) -> usize {
self.bank_cursor
}
pub fn selected_pattern(&self) -> usize {
self.pattern_cursor
}
}