diff --git a/src/main.c b/src/main.c index f0abc74..49b1c8c 100644 --- a/src/main.c +++ b/src/main.c @@ -97,9 +97,10 @@ uint8_t menu_background_color[3] = {0, 255, 255}; char menu_background_color_index; // 1 or -1, is used to cycle between the colors of the menu menu_window_state menu_active_window; -uint8_t menu_selected_window; // 0 is how to play, 1 is ship color select, 2 is game -uint8_t menu_left_right_pressed; // 0 is none, 1 is left, 2 is right -uint8_t last_menu_left_right_pressed; // what we pressed last update loop +uint8_t menu_selected_window; // 0 is how to play, 1 is ship color select, 2 is game +uint8_t menu_left_right_pressed; // 0 is none, 1 is left, 2 is right +uint8_t last_menu_left_right_pressed; // what we pressed last update loop +uint8_t menu_needs_to_switch; timing_timer menu_selected_window_input_delay_timer = {0, 300, 0}; // 0 as starting time, 300 ms timeout, not elapsed /** @@ -140,6 +141,7 @@ void init_variables() menu_selected_window = MENU_WINDOW_TUTORIAL; menu_left_right_pressed = MENU_LEFT_RIGHT_NONE; last_menu_left_right_pressed = MENU_LEFT_RIGHT_NONE; + menu_needs_to_switch = 0; } // ################################################################ @@ -440,20 +442,28 @@ void update_menu() { if (menu_left_right_pressed == MENU_LEFT_RIGHT_LEFT) // left { - menu_selected_window -= 1; - if (menu_selected_window == 255) - menu_selected_window = MENU_WINDOW_START; - menu_left_right_pressed = MENU_LEFT_RIGHT_NONE; - menu_selected_window_input_delay_timer.elapsed = 0; + menu_needs_to_switch = !menu_needs_to_switch; + if (menu_needs_to_switch) + { + menu_selected_window -= 1; + if (menu_selected_window == 255) + menu_selected_window = MENU_WINDOW_START; + menu_left_right_pressed = MENU_LEFT_RIGHT_NONE; + menu_selected_window_input_delay_timer.elapsed = 0; + } } if (menu_left_right_pressed == MENU_LEFT_RIGHT_RIGHT) // right { - menu_selected_window += 1; - if (menu_selected_window == 3) - menu_selected_window = MENU_WINDOW_TUTORIAL; - menu_left_right_pressed = MENU_LEFT_RIGHT_NONE; - menu_selected_window_input_delay_timer.elapsed = 0; + menu_needs_to_switch = !menu_needs_to_switch; + if (menu_needs_to_switch) + { + menu_selected_window += 1; + if (menu_selected_window == 3) + menu_selected_window = MENU_WINDOW_TUTORIAL; + menu_left_right_pressed = MENU_LEFT_RIGHT_NONE; + menu_selected_window_input_delay_timer.elapsed = 0; + } } } } @@ -600,13 +610,12 @@ void update() if (pad.buttons & SCE_CTRL_CROSS) cross_pressed = 1; -//TODO check on button release? + //TODO check on button release? if (pad.buttons & SCE_CTRL_LEFT) menu_left_right_pressed = MENU_LEFT_RIGHT_LEFT; if (pad.buttons & SCE_CTRL_RIGHT) menu_left_right_pressed = MENU_LEFT_RIGHT_RIGHT; - ctrl_input_get_leftstick(&pad, &left_stick); // ctrl_input_get_rightstick(&pad, &right_stick); @@ -638,7 +647,6 @@ void update() // ------------------------ DRAW FUNCTIONS ------------------ // ################################################################ - void draw_start() { unsigned int text_color;