X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fscreens.c;h=01b8031bf94a452bfb95135a732dab3d5236609d;hp=17513d2c834a326dca593d8901b601484ec8b8ac;hb=b641818c787e48bbf03ce2a0cd5b542c4c21e523;hpb=bbea8429d449be9badea09afeb8ab7b4e4a42877 diff --git a/src/screens.c b/src/screens.c index 17513d2c..01b8031b 100644 --- a/src/screens.c +++ b/src/screens.c @@ -4,7 +4,7 @@ // (c) 1995-2014 by Artsoft Entertainment // Holger Schemel // info@artsoft.org -// http://www.artsoft.org/ +// https://www.artsoft.org/ // ---------------------------------------------------------------------------- // screens.c // ============================================================================ @@ -44,54 +44,56 @@ // (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 -#define SETUP_MODE_GRAPHICS 3 -#define SETUP_MODE_SOUND 4 -#define SETUP_MODE_ARTWORK 5 -#define SETUP_MODE_INPUT 6 -#define SETUP_MODE_TOUCH 7 -#define SETUP_MODE_SHORTCUTS 8 -#define SETUP_MODE_SHORTCUTS_1 9 -#define SETUP_MODE_SHORTCUTS_2 10 -#define SETUP_MODE_SHORTCUTS_3 11 -#define SETUP_MODE_SHORTCUTS_4 12 -#define SETUP_MODE_SHORTCUTS_5 13 +#define SETUP_MODE_ENGINES 2 +#define SETUP_MODE_EDITOR 3 +#define SETUP_MODE_GRAPHICS 4 +#define SETUP_MODE_SOUND 5 +#define SETUP_MODE_ARTWORK 6 +#define SETUP_MODE_INPUT 7 +#define SETUP_MODE_TOUCH 8 +#define SETUP_MODE_SHORTCUTS 9 +#define SETUP_MODE_SHORTCUTS_1 10 +#define SETUP_MODE_SHORTCUTS_2 11 +#define SETUP_MODE_SHORTCUTS_3 12 +#define SETUP_MODE_SHORTCUTS_4 13 +#define SETUP_MODE_SHORTCUTS_5 14 // sub-screens on the setup screen (generic) -#define SETUP_MODE_CHOOSE_ARTWORK 14 -#define SETUP_MODE_CHOOSE_OTHER 15 +#define SETUP_MODE_CHOOSE_ARTWORK 15 +#define SETUP_MODE_CHOOSE_OTHER 16 // sub-screens on the setup screen (specific) -#define SETUP_MODE_CHOOSE_GAME_SPEED 16 -#define SETUP_MODE_CHOOSE_SCROLL_DELAY 17 -#define SETUP_MODE_CHOOSE_SNAPSHOT_MODE 18 -#define SETUP_MODE_CHOOSE_WINDOW_SIZE 19 -#define SETUP_MODE_CHOOSE_SCALING_TYPE 20 -#define SETUP_MODE_CHOOSE_RENDERING 21 -#define SETUP_MODE_CHOOSE_VSYNC 22 -#define SETUP_MODE_CHOOSE_GRAPHICS 23 -#define SETUP_MODE_CHOOSE_SOUNDS 24 -#define SETUP_MODE_CHOOSE_MUSIC 25 -#define SETUP_MODE_CHOOSE_VOLUME_SIMPLE 26 -#define SETUP_MODE_CHOOSE_VOLUME_LOOPS 27 -#define SETUP_MODE_CHOOSE_VOLUME_MUSIC 28 -#define SETUP_MODE_CHOOSE_TOUCH_CONTROL 29 -#define SETUP_MODE_CHOOSE_MOVE_DISTANCE 30 -#define SETUP_MODE_CHOOSE_DROP_DISTANCE 31 -#define SETUP_MODE_CHOOSE_TRANSPARENCY 32 -#define SETUP_MODE_CHOOSE_GRID_XSIZE_0 33 -#define SETUP_MODE_CHOOSE_GRID_YSIZE_0 34 -#define SETUP_MODE_CHOOSE_GRID_XSIZE_1 35 -#define SETUP_MODE_CHOOSE_GRID_YSIZE_1 36 -#define SETUP_MODE_CONFIG_VIRT_BUTTONS 37 - -#define MAX_SETUP_MODES 38 +#define SETUP_MODE_CHOOSE_GAME_SPEED 17 +#define SETUP_MODE_CHOOSE_SCROLL_DELAY 18 +#define SETUP_MODE_CHOOSE_SNAPSHOT_MODE 19 +#define SETUP_MODE_CHOOSE_WINDOW_SIZE 20 +#define SETUP_MODE_CHOOSE_SCALING_TYPE 21 +#define SETUP_MODE_CHOOSE_RENDERING 22 +#define SETUP_MODE_CHOOSE_VSYNC 23 +#define SETUP_MODE_CHOOSE_GRAPHICS 24 +#define SETUP_MODE_CHOOSE_SOUNDS 25 +#define SETUP_MODE_CHOOSE_MUSIC 26 +#define SETUP_MODE_CHOOSE_VOLUME_SIMPLE 27 +#define SETUP_MODE_CHOOSE_VOLUME_LOOPS 28 +#define SETUP_MODE_CHOOSE_VOLUME_MUSIC 29 +#define SETUP_MODE_CHOOSE_TOUCH_CONTROL 30 +#define SETUP_MODE_CHOOSE_MOVE_DISTANCE 31 +#define SETUP_MODE_CHOOSE_DROP_DISTANCE 32 +#define SETUP_MODE_CHOOSE_TRANSPARENCY 33 +#define SETUP_MODE_CHOOSE_GRID_XSIZE_0 34 +#define SETUP_MODE_CHOOSE_GRID_YSIZE_0 35 +#define SETUP_MODE_CHOOSE_GRID_XSIZE_1 36 +#define SETUP_MODE_CHOOSE_GRID_YSIZE_1 37 +#define SETUP_MODE_CONFIG_VIRT_BUTTONS 38 + +#define MAX_SETUP_MODES 39 #define MAX_MENU_MODES MAX(MAX_INFO_MODES, MAX_SETUP_MODES) // setup screen titles #define STR_SETUP_MAIN "Setup" #define STR_SETUP_GAME "Game & Menu" +#define STR_SETUP_ENGINES "Game Engines" #define STR_SETUP_EDITOR "Editor" #define STR_SETUP_GRAPHICS "Graphics" #define STR_SETUP_SOUND "Sound & Music" @@ -239,6 +241,7 @@ static void CustomizeKeyboard(int); static void ConfigureJoystick(int); static void ConfigureVirtualButtons(void); static void execSetupGame(void); +static void execSetupEngines(void); static void execSetupGraphics(void); static void execSetupSound(void); static void execSetupTouch(void); @@ -2425,6 +2428,9 @@ static void HandleMenuScreen(int mx, int my, int dx, int dy, int button, static int num_page_entries_all_last[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; static int choice_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; static int first_entry_stores[NUM_SPECIAL_GFX_ARGS][MAX_MENU_MODES]; + boolean has_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->mapped; + int mx_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->x; + int mx_right_border = (has_scrollbar ? mx_scrollbar : SX + SXSIZE); int *num_page_entries_last = num_page_entries_all_last[game_status]; int *choice_store = choice_stores[game_status]; int *first_entry_store = first_entry_stores[game_status]; @@ -2646,7 +2652,7 @@ static void HandleMenuScreen(int mx, int my, int dx, int dy, int button, if (!anyScrollbarGadgetActive() && IN_VIS_MENU(x, y) && - mx < screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->x && + mx < mx_right_border && y >= 0 && y < num_page_entries) { if (button) @@ -3678,7 +3684,9 @@ static void DrawInfoScreen_Version(void) } DrawTextF(xstart1, ystart, font_head, "Platform"); - DrawTextF(xstart2, ystart, font_text, PLATFORM_STRING); + DrawTextF(xstart2, ystart, font_text, "%s (%s)", + PLATFORM_STRING, + PLATFORM_XX_BIT_STRING); ystart += ystep_line; DrawTextF(xstart1, ystart, font_head, "Target"); @@ -3756,16 +3764,26 @@ static void DrawInfoScreen_Version(void) DrawTextF(xstart3, ystart, font_head, "Used"); ystart += ystep_head; - driver_name = getStringCopyNStatic(SDL_GetVideoDriver(0), driver_name_len); + driver_name = + getStringCopyNStatic(SDLGetRendererName(), driver_name_len); - DrawTextF(xstart1, ystart, font_text, "SDL_VideoDriver"); + DrawTextF(xstart1, ystart, font_text, "Render Driver"); + DrawTextF(xstart2, ystart, font_text, "%s", ARG_DEFAULT); + DrawTextF(xstart3, ystart, font_text, "%s", driver_name); + ystart += ystep_line; + + driver_name = + getStringCopyNStatic(SDL_GetCurrentVideoDriver(), driver_name_len); + + DrawTextF(xstart1, ystart, font_text, "Video Driver"); DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_videodriver); DrawTextF(xstart3, ystart, font_text, "%s", driver_name); ystart += ystep_line; - driver_name = getStringCopyNStatic(SDL_GetAudioDriver(0), driver_name_len); + driver_name = + getStringCopyNStatic(SDL_GetCurrentAudioDriver(), driver_name_len); - DrawTextF(xstart1, ystart, font_text, "SDL_AudioDriver"); + DrawTextF(xstart1, ystart, font_text, "Audio Driver"); DrawTextF(xstart2, ystart, font_text, "%s", setup.system.sdl_audiodriver); DrawTextF(xstart3, ystart, font_text, "%s", driver_name); @@ -4200,6 +4218,9 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, TreeInfo **ti_ptr) { TreeInfo *ti = *ti_ptr; + boolean has_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->mapped; + int mx_scrollbar = screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->x; + int mx_right_border = (has_scrollbar ? mx_scrollbar : SX + SXSIZE); int x = 0; int y = ti->cl_cursor; int step = (button == 1 ? 1 : button == 2 ? 5 : 10); @@ -4394,7 +4415,7 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, if (!anyScrollbarGadgetActive() && IN_VIS_MENU(x, y) && - mx < screen_gadget[SCREEN_CTRL_ID_SCROLL_VERTICAL]->x && + mx < mx_right_border && y >= 0 && y < num_page_entries) { if (button) @@ -5017,6 +5038,13 @@ static void execSetupChooseSnapshotMode(void) DrawSetupScreen(); } +static void execSetupEngines(void) +{ + setup_mode = SETUP_MODE_ENGINES; + + DrawSetupScreen(); +} + static void execSetupEditor(void) { setup_mode = SETUP_MODE_EDITOR; @@ -6194,6 +6222,7 @@ static struct { &setup.touch.grid_ysize[1], &grid_size_text[1][1] }, { &setup.internal.menu_game, execSetupGame }, + { &setup.internal.menu_engines, execSetupEngines }, { &setup.internal.menu_editor, execSetupEditor }, { &setup.internal.menu_graphics, execSetupGraphics }, { &setup.internal.menu_sound, execSetupSound }, @@ -6219,6 +6248,7 @@ void setHideRelatedSetupEntries(void) static struct TokenInfo setup_info_main[] = { { TYPE_ENTER_MENU, execSetupGame, STR_SETUP_GAME }, + { TYPE_ENTER_MENU, execSetupEngines, STR_SETUP_ENGINES }, { TYPE_ENTER_MENU, execSetupEditor, STR_SETUP_EDITOR }, { TYPE_ENTER_MENU, execSetupGraphics, STR_SETUP_GRAPHICS }, { TYPE_ENTER_MENU, execSetupSound, STR_SETUP_SOUND }, @@ -6256,7 +6286,6 @@ static struct TokenInfo setup_info_game[] = { TYPE_ENTER_LIST, execSetupChooseScrollDelay, "Scroll Delay:" }, { TYPE_STRING, &scroll_delay_text, "" }, #endif - { TYPE_SWITCH, &setup.forced_scroll_delay,"Scroll Delay in EM engine:" }, { TYPE_ENTER_LIST, execSetupChooseSnapshotMode,"Game Engine Snapshot Mode:" }, { TYPE_STRING, &snapshot_mode_text, "" }, { TYPE_SWITCH, &setup.show_snapshot_buttons,"Show Snapshot Buttons:" }, @@ -6266,6 +6295,21 @@ static struct TokenInfo setup_info_game[] = { 0, NULL, NULL } }; +static struct TokenInfo setup_info_engines[] = +{ + { TYPE_HEADLINE, NULL, "Emerald Mine" }, + { TYPE_SWITCH, &setup.forced_scroll_delay, "Scroll Delay:" }, + { TYPE_ECS_AGA, &setup.prefer_aga_graphics, "Amiga Graphics Chipset:" }, + { TYPE_SWITCH, &setup.prefer_lowpass_sounds,"Low-Pass Filter Sounds:" }, + { TYPE_EMPTY, NULL, "" }, + { TYPE_HEADLINE, NULL, "Supaplex" }, + { TYPE_SWITCH, &setup.sp_show_border_elements, "Border Elements:" }, + { TYPE_EMPTY, NULL, "" }, + { TYPE_LEAVE_MENU, execSetupMain, "Back" }, + + { 0, NULL, NULL } +}; + static struct TokenInfo setup_info_editor[] = { #if 0 @@ -6322,8 +6366,6 @@ static struct TokenInfo setup_info_graphics[] = { TYPE_SWITCH, &setup.quick_doors, "Quick Menu Doors:" }, { TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" }, { TYPE_SWITCH, &setup.toons, "Show Menu Animations:" }, - { TYPE_ECS_AGA, &setup.prefer_aga_graphics,"EMC graphics preference:" }, - { TYPE_SWITCH, &setup.sp_show_border_elements,"Supaplex Border Elements:" }, { TYPE_SWITCH, &setup.small_game_graphics, "Small Game Graphics:" }, { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execSetupMain, "Back" }, @@ -6894,6 +6936,11 @@ static void DrawSetupScreen_Generic(void) setup_info = setup_info_game; title_string = STR_SETUP_GAME; } + else if (setup_mode == SETUP_MODE_ENGINES) + { + setup_info = setup_info_engines; + title_string = STR_SETUP_ENGINES; + } else if (setup_mode == SETUP_MODE_EDITOR) { setup_info = setup_info_editor; @@ -7957,6 +8004,8 @@ static boolean ConfigureVirtualButtonsMain(void) overlay.grid_button_highlight = grid_button[step_nr]; + UnmapAllGadgets(); + FadeSetEnterMenu(); FadeOut(REDRAW_FIELD);