Init
This commit is contained in:
53
src/state/patterns_nav.rs
Normal file
53
src/state/patterns_nav.rs
Normal 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user