From d813b06a015bd678af7d8262b26373759bf2aacb Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 30 May 2023 14:39:30 +0200 Subject: Add settings button and navigation --- src/drawing.c | 18 ++++++++++++++++++ src/globals.c | 19 +++++++++++-------- src/sequencer.c | 23 +++++++++-------------- 3 files changed, 38 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/drawing.c b/src/drawing.c index 1652c17..a9322dd 100644 --- a/src/drawing.c +++ b/src/drawing.c @@ -123,6 +123,11 @@ draw_right_col_cursor(int i, u8 clr) { x1 = x0 + PLAY_STOP_W; y = PLAY_START_Y + PLAY_STOP_H + 2; } break; + case R_COL_SETTINGS: { + x0 = SETTINGS_START_X + 2; + x1 = x0 + R_COL_W - 4; + y = SETTINGS_START_Y + PLAY_STOP_H + 2; + } break; case R_COL_BANK_A: { x0 = BANK_START_X; x1 = x0 + PAT_W; @@ -249,6 +254,18 @@ draw_play() { } } +void +draw_settings() { + size_t x = SETTINGS_START_X; + size_t y = SETTINGS_START_Y; + draw_rect(x + 2, y, x + R_COL_W - 2, y + PLAY_STOP_H, COL_OFF); + draw_line(x + 6, y + 4, x + 9, y + 4, COL_OFF); + draw_line(x + 6, y + 6, x + 9, y + 6, COL_OFF); + draw_line(x + 15, y + 4, x + 18, y + 4, COL_OFF); + draw_line(x + 15, y + 6, x + 18, y + 6, COL_OFF); + draw_line(x + 9, y + 5, x + 15, y + 5, COL_OFF); +} + void draw_stop() { size_t x = STOP_START_X; @@ -256,6 +273,7 @@ draw_stop() { size_t x_btn = x + PLAY_STOP_W / 2 - 2; draw_rect(x, y, x + PLAY_STOP_W, y + PLAY_STOP_H, COL_ACC_1); draw_filled_rect(x_btn, y + 3, x_btn + 4, y + 7, COL_ACC_1); + draw_settings(); } void diff --git a/src/globals.c b/src/globals.c index f62962a..5580681 100644 --- a/src/globals.c +++ b/src/globals.c @@ -46,7 +46,7 @@ bool clear_screen = true; #define PIANO_W 170 #define PIANO_H 20 #define PIANO_START_X 30 -#define PIANO_START_Y 67 +#define PIANO_START_Y 69 #define PIANO_NOTE_W 2 #define PARAMS_W 170 @@ -68,6 +68,8 @@ bool clear_screen = true; #define BPM_START_Y (TRIG_START_Y + TRIG_H + 8) #define BPM_H 22 +#define SETTINGS_START_X (R_SIDEBAR_X) +#define SETTINGS_START_Y (TRIG_START_Y - 7) #define PLAY_START_X (R_SIDEBAR_X) #define PLAY_START_Y (TRIG_START_Y + 12) #define STOP_START_X (R_SIDEBAR_X + 14) @@ -81,13 +83,14 @@ bool clear_screen = true; #define SEQ_N_CHANNELS 4 enum RIGHT_COL_LOC { - R_COL_BPM = 0, - R_COL_PLAY = 1, - R_COL_STOP = 2, - R_COL_BANK_D = 3, - R_COL_BANK_C = 4, - R_COL_BANK_B = 5, - R_COL_BANK_A = 6, + R_COL_BPM = 0, + R_COL_PLAY = 1, + R_COL_STOP = 2, + R_COL_SETTINGS = 3, + R_COL_BANK_D = 4, + R_COL_BANK_C = 5, + R_COL_BANK_B = 6, + R_COL_BANK_A = 7, }; // Input handling works using a FSM. The input handler is switched to whichever diff --git a/src/sequencer.c b/src/sequencer.c index b2a8468..0efd50c 100644 --- a/src/sequencer.c +++ b/src/sequencer.c @@ -370,11 +370,12 @@ handle_right_col_selection(void) { if (right_col_selection_loc == R_COL_STOP) { right_col_selection_loc = R_COL_PLAY; } else { - input_handler = handle_trigger_selection; - switch (right_col_selection_loc) { - case R_COL_BPM: { trig_selection_loc = 15; } break; - default: { trig_selection_loc = 7; } break; + if (right_col_selection_loc == R_COL_BPM) { + trig_selection_loc = 15; + } else { + trig_selection_loc = 7; } + input_handler = handle_trigger_selection; redraw_params = true; } } else if (key_tap(KEY_RIGHT)) { @@ -382,20 +383,13 @@ handle_right_col_selection(void) { right_col_selection_loc = R_COL_STOP; } else { input_handler = handle_pattern_selection; - switch (right_col_selection_loc) { - case R_COL_BANK_A: { pattern_selection_loc = 0; } break; - case R_COL_BANK_B: { pattern_selection_loc = 1; } break; - case R_COL_BANK_C: { pattern_selection_loc = 2; } break; - case R_COL_BANK_D: { pattern_selection_loc = 3; } break; - case R_COL_STOP: { pattern_selection_loc = 5; } break; - default: { pattern_selection_loc = 6; } break; - } redraw_trigs = true; } } else if (key_tap(KEY_UP)) { switch (right_col_selection_loc) { case R_COL_PLAY: - case R_COL_STOP: { right_col_selection_loc = R_COL_BANK_D; } break; + case R_COL_STOP: { right_col_selection_loc = R_COL_SETTINGS; } break; + case R_COL_SETTINGS: { right_col_selection_loc = R_COL_BANK_D; } break; case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break; case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break; default: { right_col_selection_loc++; } break; @@ -405,7 +399,8 @@ handle_right_col_selection(void) { case R_COL_PLAY: case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break; case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break; - case R_COL_BANK_D: { right_col_selection_loc = R_COL_PLAY; } break; + case R_COL_BANK_D: { right_col_selection_loc = R_COL_SETTINGS; } break; + case R_COL_SETTINGS: { right_col_selection_loc = R_COL_PLAY; } break; default: { right_col_selection_loc--; } break; } } else if (key_tap(KEY_L)) { -- cgit v1.2.1