+ while (!DelayReached(&wait_frame_delay, wait_frame_delay_value))
+ BackToFront();
+
+ ClearEventQueue();
+ }
+}
+
+void DrawSetupScreen(void)
+{
+ align_xoffset = 0;
+ align_yoffset = 0;
+
+ if (setup_mode == SETUP_MODE_INPUT)
+ DrawSetupScreen_Input();
+ else if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
+ DrawChooseTree(&game_speed_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
+ DrawChooseTree(&scroll_delay_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SNAPSHOT_MODE)
+ DrawChooseTree(&snapshot_mode_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
+ DrawChooseTree(&window_size_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCALING_TYPE)
+ DrawChooseTree(&scaling_type_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_RENDERING)
+ DrawChooseTree(&rendering_mode_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VSYNC)
+ DrawChooseTree(&vsync_mode_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRAPHICS)
+ DrawChooseTree(&artwork.gfx_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SOUNDS)
+ DrawChooseTree(&artwork.snd_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_MUSIC)
+ DrawChooseTree(&artwork.mus_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_SIMPLE)
+ DrawChooseTree(&volume_simple_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_LOOPS)
+ DrawChooseTree(&volume_loops_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_MUSIC)
+ DrawChooseTree(&volume_music_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_TOUCH_CONTROL)
+ DrawChooseTree(&touch_control_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_MOVE_DISTANCE)
+ DrawChooseTree(&move_distance_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_DROP_DISTANCE)
+ DrawChooseTree(&drop_distance_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_TRANSPARENCY)
+ DrawChooseTree(&transparency_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_XSIZE_0)
+ DrawChooseTree(&grid_size_current[0][0]);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_YSIZE_0)
+ DrawChooseTree(&grid_size_current[0][1]);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_XSIZE_1)
+ DrawChooseTree(&grid_size_current[1][0]);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_YSIZE_1)
+ DrawChooseTree(&grid_size_current[1][1]);
+ else
+ DrawSetupScreen_Generic();
+
+ PlayMenuSoundsAndMusic();
+}
+
+void RedrawSetupScreenAfterFullscreenToggle(void)
+{
+ if (setup_mode == SETUP_MODE_GRAPHICS ||
+ setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
+ {
+ // update list selection from "setup.window_scaling_percent"
+ execSetupGraphics_setWindowSizes(TRUE);
+
+ DrawSetupScreen();
+ }
+}
+
+void RedrawSetupScreenAfterScreenRotation(int nr)
+{
+ int x, y;
+
+ if (setup_mode == SETUP_MODE_TOUCH)
+ {
+ // update virtual button settings (depending on screen orientation)
+ DrawSetupScreen();
+ }
+ else if (setup_mode == SETUP_MODE_CONFIG_VIRT_BUTTONS)
+ {
+ // save already configured virtual buttons
+ for (x = 0; x < MAX_GRID_XSIZE; x++)
+ for (y = 0; y < MAX_GRID_YSIZE; y++)
+ setup.touch.grid_button[nr][x][y] = overlay.grid_button[x][y];
+ }
+}
+
+void HandleSetupScreen(int mx, int my, int dx, int dy, int button)
+{
+ if (setup_mode == SETUP_MODE_INPUT)
+ HandleSetupScreen_Input(mx, my, dx, dy, button);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GAME_SPEED)
+ HandleChooseTree(mx, my, dx, dy, button, &game_speed_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCROLL_DELAY)
+ HandleChooseTree(mx, my, dx, dy, button, &scroll_delay_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SNAPSHOT_MODE)
+ HandleChooseTree(mx, my, dx, dy, button, &snapshot_mode_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE)
+ HandleChooseTree(mx, my, dx, dy, button, &window_size_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SCALING_TYPE)
+ HandleChooseTree(mx, my, dx, dy, button, &scaling_type_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_RENDERING)
+ HandleChooseTree(mx, my, dx, dy, button, &rendering_mode_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VSYNC)
+ HandleChooseTree(mx, my, dx, dy, button, &vsync_mode_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRAPHICS)
+ HandleChooseTree(mx, my, dx, dy, button, &artwork.gfx_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_SOUNDS)
+ HandleChooseTree(mx, my, dx, dy, button, &artwork.snd_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_MUSIC)
+ HandleChooseTree(mx, my, dx, dy, button, &artwork.mus_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_SIMPLE)
+ HandleChooseTree(mx, my, dx, dy, button, &volume_simple_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_LOOPS)
+ HandleChooseTree(mx, my, dx, dy, button, &volume_loops_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_VOLUME_MUSIC)
+ HandleChooseTree(mx, my, dx, dy, button, &volume_music_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_TOUCH_CONTROL)
+ HandleChooseTree(mx, my, dx, dy, button, &touch_control_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_MOVE_DISTANCE)
+ HandleChooseTree(mx, my, dx, dy, button, &move_distance_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_DROP_DISTANCE)
+ HandleChooseTree(mx, my, dx, dy, button, &drop_distance_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_TRANSPARENCY)
+ HandleChooseTree(mx, my, dx, dy, button, &transparency_current);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_XSIZE_0)
+ HandleChooseTree(mx, my, dx, dy, button, &grid_size_current[0][0]);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_YSIZE_0)
+ HandleChooseTree(mx, my, dx, dy, button, &grid_size_current[0][1]);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_XSIZE_1)
+ HandleChooseTree(mx, my, dx, dy, button, &grid_size_current[1][0]);
+ else if (setup_mode == SETUP_MODE_CHOOSE_GRID_YSIZE_1)
+ HandleChooseTree(mx, my, dx, dy, button, &grid_size_current[1][1]);
+ else
+ HandleSetupScreen_Generic(mx, my, dx, dy, button);
+}
+
+void HandleGameActions(void)
+{
+ if (setup.ask_on_game_over)
+ CheckGameOver();
+
+ if (game.restart_game_message != NULL)
+ {
+ RequestRestartGame(game.restart_game_message);
+
+ return;