int bootmgr_touch_exit_ums(void) { bootmgr_toggle_ums(); bootmgr_phase = BOOTMGR_MAIN; bootmgr_erase_text(24); bootmgr_erase_fill(24); return TCALL_DELETE; }
void bootmgr_select(int8_t line) { bootmgr_line *ln = NULL; if(selected != -1 && (ln = _bootmgr_get_line(selected))) ln->color = WHITE; ln = _bootmgr_get_line(line); if(ln) ln->color = BLACK; if(line == -1) bootmgr_erase_fill(BOOTMGR_FILL_SELECT); else bootmgr_print_fill(0, line*ISO_CHAR_HEIGHT, BOOTMGR_DIS_W, ISO_CHAR_HEIGHT, WHITE, BOOTMGR_FILL_SELECT); selected = line; }
void tetris_key(int key) { switch(key) { case KEY_VOLUMEDOWN: { if(state & TETRIS_PAUSED) { bootmgr_erase_text(14); bootmgr_erase_text(15); bootmgr_erase_fill(1); state &= ~(TETRIS_PAUSED); state |= TETRIS_STARTED; } else if(state & TETRIS_STARTED) { bootmgr_print_fill(11, 14*ISO_CHAR_HEIGHT, 219, 32, BLACK, 1); bootmgr_printf(10+((220 - 6*8)/2), 14, WHITE, "Paused"); bootmgr_printf(10+((220 - 25*8)/2), 15, WHITE, "Press \"VolDown\" to resume"); bootmgr_draw_fills(); bootmgr_draw_text(); fb_update(&fb); state &= ~(TETRIS_STARTED); state |= TETRIS_PAUSED; } break; } case KEY_VOLUMEUP: tetris_exit(); bootmgr_set_time_thread(1); break; case KEY_HOME: { if(!(state & TETRIS_STARTED)) { if(state & TETRIS_FINISHED) { tetris_clear(0); tetris_set_defaults(); bootmgr_erase_text(14); bootmgr_erase_fill(1); tetris_print_score(); } bootmgr_erase_text(15); state = (TETRIS_STARTED | TETRIS_SPAWN_NEW); } else { pthread_mutex_lock(tetris_draw_mutex); tetris_move_piece(TETRIS_DOWN_FAST); tetris_draw(0); pthread_mutex_unlock(tetris_draw_mutex); } break; } case KEY_BACK: { if(state & TETRIS_STARTED) { pthread_mutex_lock(tetris_draw_mutex); tetris_rotate_piece(); tetris_draw(0); pthread_mutex_unlock(tetris_draw_mutex); } break; } case KEY_MENU: case KEY_SEARCH: { if(state & TETRIS_STARTED) { pthread_mutex_lock(tetris_draw_mutex); if(tetris_can_move_piece(key == KEY_MENU ? TETRIS_LEFT : TETRIS_RIGHT)) tetris_move_piece(key == KEY_MENU ? TETRIS_LEFT : TETRIS_RIGHT); tetris_draw(0); pthread_mutex_unlock(tetris_draw_mutex); } break; } } }