X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=7f694d98cede87b8a6dd47ce02fd04a8418466d3;hb=68a192ca5b9f81833abb24501e22a590678f68b9;hp=3c9d2386f165c1d4166f1f00360ff314ea245db9;hpb=b06464b4dc26c0e31ef0bca48b31a4dfbdd549e6;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 3c9d2386..7f694d98 100644 --- a/src/screens.c +++ b/src/screens.c @@ -38,6 +38,8 @@ #define MAX_INFO_MODES 8 /* screens on the setup screen */ +/* (must match GFX_SPECIAL_ARG_SETUP_* values as defined in src/main.h) */ +/* (should also match corresponding entries in src/conf_gfx.c) */ #define SETUP_MODE_MAIN 0 #define SETUP_MODE_GAME 1 #define SETUP_MODE_EDITOR 2 @@ -1416,7 +1418,7 @@ void DrawMainMenuExt(int fade_mask, boolean do_fading) InitializeMainControls(); DrawCursorAndText_Main(-1, FALSE); - DrawPreviewLevel(TRUE); + DrawPreviewLevelInitial(); HandleMainMenu(0, 0, 0, 0, MB_MENU_INITIALIZE); @@ -1755,13 +1757,13 @@ void HandleMainMenu_SelectLevel(int step, int direction) mci->pos_text->font); LoadLevel(level_nr); - DrawPreviewLevel(TRUE); + DrawPreviewLevelInitial(); TapeErase(); LoadTape(level_nr); DrawCompleteVideoDisplay(); - /* needed because DrawPreviewLevel() takes some time */ + /* needed because DrawPreviewLevelInitial() takes some time */ BackToFront(); SyncDisplay(); } @@ -1924,11 +1926,13 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) } } +#if 0 if (game_status == GAME_MODE_MAIN) { - DrawPreviewLevel(FALSE); + DrawPreviewLevelAnimation(); DoAnimation(); } +#endif } @@ -2990,19 +2994,17 @@ void DrawInfoScreen_Version() int ystart1 = mSY - SY + 100; int ystart2 = mSY - SY + 150; int ybottom = mSY - SY + SYSIZE - 20; - int xstart1 = mSX + 2 * xstep; - int xstart2 = mSX + 19 * xstep; + int xstart1 = mSX - SX + 2 * xstep; + int xstart2 = mSX - SX + 18 * xstep; #if defined(TARGET_SDL) - int xstart3 = mSX + 29 * xstep; + int xstart3 = mSX - SX + 28 * xstep; SDL_version sdl_version_compiled; -#if defined(TARGET_SDL2) - SDL_version sdl_version_linked_ext; -#endif const SDL_version *sdl_version_linked; + int driver_name_len = 10; #if defined(TARGET_SDL2) + SDL_version sdl_version_linked_ext; const char *driver_name = NULL; #else - int driver_name_len = 8; char driver_name[driver_name_len]; #endif #endif @@ -3110,7 +3112,7 @@ void DrawInfoScreen_Version() DrawTextF(xstart3, ystart2, font_header, "Used"); #if defined(TARGET_SDL2) - driver_name = SDL_GetVideoDriver(0); + driver_name = getStringCopyNStatic(SDL_GetVideoDriver(0), driver_name_len); #else SDL_VideoDriverName(driver_name, driver_name_len); #endif @@ -3121,7 +3123,7 @@ void DrawInfoScreen_Version() DrawTextF(xstart3, ystart2, font_text, "%s", driver_name); #if defined(TARGET_SDL2) - driver_name = SDL_GetAudioDriver(0); + driver_name = getStringCopyNStatic(SDL_GetAudioDriver(0), driver_name_len); #else SDL_AudioDriverName(driver_name, driver_name_len); #endif @@ -3303,7 +3305,9 @@ void HandleInfoScreen(int mx, int my, int dx, int dy, int button) else HandleInfoScreen_Main(mx, my, dx, dy, button); +#if 0 DoAnimation(); +#endif } @@ -3787,7 +3791,11 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, } else { +#if 1 + FadeSetEnterMenu(); +#else FadeSetEnterScreen(); +#endif node_cursor->cl_first = ti->cl_first; node_cursor->cl_cursor = ti->cl_cursor; @@ -3845,7 +3853,9 @@ void HandleChooseLevelSet(int mx, int my, int dx, int dy, int button) { HandleChooseTree(mx, my, dx, dy, button, &leveldir_current); +#if 0 DoAnimation(); +#endif } void DrawChooseLevelNr() @@ -3916,7 +3926,9 @@ void HandleChooseLevelNr(int mx, int my, int dx, int dy, int button) HandleChooseTree(mx, my, dx, dy, button, &leveldir_current); #endif +#if 0 DoAnimation(); +#endif } void DrawHallOfFame(int highlight_position) @@ -4062,7 +4074,9 @@ void HandleHallOfFame(int mx, int my, int dx, int dy, int button) if (game_status == GAME_MODE_SCORES) PlayMenuSoundIfLoop(); +#if 0 DoAnimation(); +#endif } @@ -4159,7 +4173,92 @@ static void execSetupEditor() DrawSetupScreen(); } -static void execSetupGraphics() +static void execSetupGraphics_setWindowSizes(boolean update_list) +{ + if (window_sizes != NULL && update_list) + { + freeTreeInfo(window_sizes); + + window_sizes = NULL; + } + + if (window_sizes == NULL) + { + boolean current_window_size_found = FALSE; + int i; + + for (i = 0; window_sizes_list[i].value != -1; i++) + { + TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED); + char identifier[32], name[32]; + int value = window_sizes_list[i].value; + char *text = window_sizes_list[i].text; + + ti->node_top = &window_sizes; + ti->sort_priority = value; + + sprintf(identifier, "%d", value); + sprintf(name, "%s", text); + + setString(&ti->identifier, identifier); + setString(&ti->name, name); + setString(&ti->name_sorting, name); + setString(&ti->infotext, "Window Scaling"); + + pushTreeInfo(&window_sizes, ti); + + if (value == setup.window_scaling_percent) + current_window_size_found = TRUE; + } + + if (!current_window_size_found) + { + // add entry for non-preset window scaling value + + TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED); + char identifier[32], name[32]; + int value = setup.window_scaling_percent; + + ti->node_top = &window_sizes; + ti->sort_priority = value; + + sprintf(identifier, "%d", value); + sprintf(name, "%d %% (Current)", value); + + setString(&ti->identifier, identifier); + setString(&ti->name, name); + setString(&ti->name_sorting, name); + setString(&ti->infotext, "Window Scaling"); + + pushTreeInfo(&window_sizes, ti); + } + + /* sort window size values to start with lowest window size value */ + sortTreeInfo(&window_sizes); + + /* set current window size value to configured window size value */ + window_size_current = + getTreeInfoFromIdentifier(window_sizes, + i_to_a(setup.window_scaling_percent)); + + /* if that fails, set current window size to reliable default value */ + if (window_size_current == NULL) + window_size_current = + getTreeInfoFromIdentifier(window_sizes, + i_to_a(STD_WINDOW_SCALING_PERCENT)); + + /* if that also fails, set current window size to first available value */ + if (window_size_current == NULL) + window_size_current = window_sizes; + } + + setup.window_scaling_percent = atoi(window_size_current->identifier); + + /* needed for displaying window size text instead of identifier */ + window_size_text = window_size_current->name; +} + +static void execSetupGraphics_setScreenModes() { // if (screen_modes == NULL && video.fullscreen_available) if (screen_modes == NULL && video.fullscreen_modes != NULL) @@ -4218,57 +4317,10 @@ static void execSetupGraphics() /* needed for displaying screen mode name instead of identifier */ screen_mode_text = screen_mode_current->name; } +} - if (window_sizes == NULL) - { - int i; - - for (i = 0; window_sizes_list[i].value != -1; i++) - { - TreeInfo *ti = newTreeInfo_setDefaults(TREE_TYPE_UNDEFINED); - char identifier[32], name[32]; - int value = window_sizes_list[i].value; - char *text = window_sizes_list[i].text; - - ti->node_top = &window_sizes; - ti->sort_priority = value; - - sprintf(identifier, "%d", value); - sprintf(name, "%s", text); - - setString(&ti->identifier, identifier); - setString(&ti->name, name); - setString(&ti->name_sorting, name); - setString(&ti->infotext, "Window Scaling"); - - pushTreeInfo(&window_sizes, ti); - } - - /* sort window size values to start with lowest window size value */ - sortTreeInfo(&window_sizes); - - /* set current window size value to configured window size value */ - window_size_current = - getTreeInfoFromIdentifier(window_sizes, - i_to_a(setup.window_scaling_percent)); - - /* if that fails, set current window size to reliable default value */ - if (window_size_current == NULL) - window_size_current = - getTreeInfoFromIdentifier(window_sizes, - i_to_a(STD_WINDOW_SCALING_PERCENT)); - - /* if that also fails, set current window size to first available value */ - if (window_size_current == NULL) - window_size_current = window_sizes; - } - - setup.window_scaling_percent = atoi(window_size_current->identifier); - - /* needed for displaying window size text instead of identifier */ - window_size_text = window_size_current->name; - -#if 1 +static void execSetupGraphics_setScrollDelays() +{ if (scroll_delays == NULL) { int i; @@ -4315,7 +4367,17 @@ static void execSetupGraphics() /* needed for displaying scroll delay text instead of identifier */ scroll_delay_text = scroll_delay_current->name; -#endif +} + +static void execSetupGraphics() +{ + // update "setup.window_scaling_percent" from list selection + execSetupGraphics_setWindowSizes(FALSE); + // maybe remove non-preset value (if standard value was selected) + execSetupGraphics_setWindowSizes(TRUE); + + execSetupGraphics_setScreenModes(); + execSetupGraphics_setScrollDelays(); setup_mode = SETUP_MODE_GRAPHICS; @@ -6088,8 +6150,19 @@ void DrawSetupScreen() void RedrawSetupScreenAfterFullscreenToggle() { +#if 1 + if (setup_mode == SETUP_MODE_GRAPHICS || + setup_mode == SETUP_MODE_CHOOSE_WINDOW_SIZE) + { + // update "setup.window_scaling_percent" from list selection + execSetupGraphics_setWindowSizes(TRUE); + + DrawSetupScreen(); + } +#else if (setup_mode == SETUP_MODE_GRAPHICS) DrawSetupScreen(); +#endif } void HandleSetupScreen(int mx, int my, int dx, int dy, int button) @@ -6119,7 +6192,9 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) else HandleSetupScreen_Generic(mx, my, dx, dy, button); +#if 0 DoAnimation(); +#endif } void HandleGameActions()