diff options
author | Bad Diode <bd@badd10de.dev> | 2023-05-30 14:39:30 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-05-30 14:39:30 +0200 |
commit | d813b06a015bd678af7d8262b26373759bf2aacb (patch) | |
tree | 44378d9b77dbf75c7ea83c706452c7f0a2762817 | |
parent | b4593763ec78f14b9c6fb309f595740264969806 (diff) | |
download | stepper-d813b06a015bd678af7d8262b26373759bf2aacb.tar.gz stepper-d813b06a015bd678af7d8262b26373759bf2aacb.zip |
Add settings button and navigation
-rw-r--r-- | src/drawing.c | 18 | ||||
-rw-r--r-- | src/globals.c | 19 | ||||
-rw-r--r-- | src/sequencer.c | 23 |
3 files changed, 38 insertions, 22 deletions
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) { | |||
123 | x1 = x0 + PLAY_STOP_W; | 123 | x1 = x0 + PLAY_STOP_W; |
124 | y = PLAY_START_Y + PLAY_STOP_H + 2; | 124 | y = PLAY_START_Y + PLAY_STOP_H + 2; |
125 | } break; | 125 | } break; |
126 | case R_COL_SETTINGS: { | ||
127 | x0 = SETTINGS_START_X + 2; | ||
128 | x1 = x0 + R_COL_W - 4; | ||
129 | y = SETTINGS_START_Y + PLAY_STOP_H + 2; | ||
130 | } break; | ||
126 | case R_COL_BANK_A: { | 131 | case R_COL_BANK_A: { |
127 | x0 = BANK_START_X; | 132 | x0 = BANK_START_X; |
128 | x1 = x0 + PAT_W; | 133 | x1 = x0 + PAT_W; |
@@ -250,12 +255,25 @@ draw_play() { | |||
250 | } | 255 | } |
251 | 256 | ||
252 | void | 257 | void |
258 | draw_settings() { | ||
259 | size_t x = SETTINGS_START_X; | ||
260 | size_t y = SETTINGS_START_Y; | ||
261 | draw_rect(x + 2, y, x + R_COL_W - 2, y + PLAY_STOP_H, COL_OFF); | ||
262 | draw_line(x + 6, y + 4, x + 9, y + 4, COL_OFF); | ||
263 | draw_line(x + 6, y + 6, x + 9, y + 6, COL_OFF); | ||
264 | draw_line(x + 15, y + 4, x + 18, y + 4, COL_OFF); | ||
265 | draw_line(x + 15, y + 6, x + 18, y + 6, COL_OFF); | ||
266 | draw_line(x + 9, y + 5, x + 15, y + 5, COL_OFF); | ||
267 | } | ||
268 | |||
269 | void | ||
253 | draw_stop() { | 270 | draw_stop() { |
254 | size_t x = STOP_START_X; | 271 | size_t x = STOP_START_X; |
255 | size_t y = STOP_START_Y; | 272 | size_t y = STOP_START_Y; |
256 | size_t x_btn = x + PLAY_STOP_W / 2 - 2; | 273 | size_t x_btn = x + PLAY_STOP_W / 2 - 2; |
257 | draw_rect(x, y, x + PLAY_STOP_W, y + PLAY_STOP_H, COL_ACC_1); | 274 | draw_rect(x, y, x + PLAY_STOP_W, y + PLAY_STOP_H, COL_ACC_1); |
258 | draw_filled_rect(x_btn, y + 3, x_btn + 4, y + 7, COL_ACC_1); | 275 | draw_filled_rect(x_btn, y + 3, x_btn + 4, y + 7, COL_ACC_1); |
276 | draw_settings(); | ||
259 | } | 277 | } |
260 | 278 | ||
261 | void | 279 | 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; | |||
46 | #define PIANO_W 170 | 46 | #define PIANO_W 170 |
47 | #define PIANO_H 20 | 47 | #define PIANO_H 20 |
48 | #define PIANO_START_X 30 | 48 | #define PIANO_START_X 30 |
49 | #define PIANO_START_Y 67 | 49 | #define PIANO_START_Y 69 |
50 | #define PIANO_NOTE_W 2 | 50 | #define PIANO_NOTE_W 2 |
51 | 51 | ||
52 | #define PARAMS_W 170 | 52 | #define PARAMS_W 170 |
@@ -68,6 +68,8 @@ bool clear_screen = true; | |||
68 | #define BPM_START_Y (TRIG_START_Y + TRIG_H + 8) | 68 | #define BPM_START_Y (TRIG_START_Y + TRIG_H + 8) |
69 | #define BPM_H 22 | 69 | #define BPM_H 22 |
70 | 70 | ||
71 | #define SETTINGS_START_X (R_SIDEBAR_X) | ||
72 | #define SETTINGS_START_Y (TRIG_START_Y - 7) | ||
71 | #define PLAY_START_X (R_SIDEBAR_X) | 73 | #define PLAY_START_X (R_SIDEBAR_X) |
72 | #define PLAY_START_Y (TRIG_START_Y + 12) | 74 | #define PLAY_START_Y (TRIG_START_Y + 12) |
73 | #define STOP_START_X (R_SIDEBAR_X + 14) | 75 | #define STOP_START_X (R_SIDEBAR_X + 14) |
@@ -81,13 +83,14 @@ bool clear_screen = true; | |||
81 | #define SEQ_N_CHANNELS 4 | 83 | #define SEQ_N_CHANNELS 4 |
82 | 84 | ||
83 | enum RIGHT_COL_LOC { | 85 | enum RIGHT_COL_LOC { |
84 | R_COL_BPM = 0, | 86 | R_COL_BPM = 0, |
85 | R_COL_PLAY = 1, | 87 | R_COL_PLAY = 1, |
86 | R_COL_STOP = 2, | 88 | R_COL_STOP = 2, |
87 | R_COL_BANK_D = 3, | 89 | R_COL_SETTINGS = 3, |
88 | R_COL_BANK_C = 4, | 90 | R_COL_BANK_D = 4, |
89 | R_COL_BANK_B = 5, | 91 | R_COL_BANK_C = 5, |
90 | R_COL_BANK_A = 6, | 92 | R_COL_BANK_B = 6, |
93 | R_COL_BANK_A = 7, | ||
91 | }; | 94 | }; |
92 | 95 | ||
93 | // Input handling works using a FSM. The input handler is switched to whichever | 96 | // 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) { | |||
370 | if (right_col_selection_loc == R_COL_STOP) { | 370 | if (right_col_selection_loc == R_COL_STOP) { |
371 | right_col_selection_loc = R_COL_PLAY; | 371 | right_col_selection_loc = R_COL_PLAY; |
372 | } else { | 372 | } else { |
373 | input_handler = handle_trigger_selection; | 373 | if (right_col_selection_loc == R_COL_BPM) { |
374 | switch (right_col_selection_loc) { | 374 | trig_selection_loc = 15; |
375 | case R_COL_BPM: { trig_selection_loc = 15; } break; | 375 | } else { |
376 | default: { trig_selection_loc = 7; } break; | 376 | trig_selection_loc = 7; |
377 | } | 377 | } |
378 | input_handler = handle_trigger_selection; | ||
378 | redraw_params = true; | 379 | redraw_params = true; |
379 | } | 380 | } |
380 | } else if (key_tap(KEY_RIGHT)) { | 381 | } else if (key_tap(KEY_RIGHT)) { |
@@ -382,20 +383,13 @@ handle_right_col_selection(void) { | |||
382 | right_col_selection_loc = R_COL_STOP; | 383 | right_col_selection_loc = R_COL_STOP; |
383 | } else { | 384 | } else { |
384 | input_handler = handle_pattern_selection; | 385 | input_handler = handle_pattern_selection; |
385 | switch (right_col_selection_loc) { | ||
386 | case R_COL_BANK_A: { pattern_selection_loc = 0; } break; | ||
387 | case R_COL_BANK_B: { pattern_selection_loc = 1; } break; | ||
388 | case R_COL_BANK_C: { pattern_selection_loc = 2; } break; | ||
389 | case R_COL_BANK_D: { pattern_selection_loc = 3; } break; | ||
390 | case R_COL_STOP: { pattern_selection_loc = 5; } break; | ||
391 | default: { pattern_selection_loc = 6; } break; | ||
392 | } | ||
393 | redraw_trigs = true; | 386 | redraw_trigs = true; |
394 | } | 387 | } |
395 | } else if (key_tap(KEY_UP)) { | 388 | } else if (key_tap(KEY_UP)) { |
396 | switch (right_col_selection_loc) { | 389 | switch (right_col_selection_loc) { |
397 | case R_COL_PLAY: | 390 | case R_COL_PLAY: |
398 | case R_COL_STOP: { right_col_selection_loc = R_COL_BANK_D; } break; | 391 | case R_COL_STOP: { right_col_selection_loc = R_COL_SETTINGS; } break; |
392 | case R_COL_SETTINGS: { right_col_selection_loc = R_COL_BANK_D; } break; | ||
399 | case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break; | 393 | case R_COL_BPM: { right_col_selection_loc = R_COL_PLAY; } break; |
400 | case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break; | 394 | case R_COL_BANK_A: { right_col_selection_loc = R_COL_BPM; } break; |
401 | default: { right_col_selection_loc++; } break; | 395 | default: { right_col_selection_loc++; } break; |
@@ -405,7 +399,8 @@ handle_right_col_selection(void) { | |||
405 | case R_COL_PLAY: | 399 | case R_COL_PLAY: |
406 | case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break; | 400 | case R_COL_STOP: { right_col_selection_loc = R_COL_BPM; } break; |
407 | case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break; | 401 | case R_COL_BPM: { right_col_selection_loc = R_COL_BANK_A; } break; |
408 | case R_COL_BANK_D: { right_col_selection_loc = R_COL_PLAY; } break; | 402 | case R_COL_BANK_D: { right_col_selection_loc = R_COL_SETTINGS; } break; |
403 | case R_COL_SETTINGS: { right_col_selection_loc = R_COL_PLAY; } break; | ||
409 | default: { right_col_selection_loc--; } break; | 404 | default: { right_col_selection_loc--; } break; |
410 | } | 405 | } |
411 | } else if (key_tap(KEY_L)) { | 406 | } else if (key_tap(KEY_L)) { |