X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=6dc458835bef9177d46d3f1caaf9d5d476228eed;hb=ec942b1c9df306ed468fdc42ba3b5f7f0d9b330f;hp=0743c5147429bda0140b4b3050a4ac8b4bc72bba;hpb=6d7ebf6db8a9a57f2e3e398da1d2f7d8d084523f;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 0743c514..6dc45883 100644 --- a/src/screens.c +++ b/src/screens.c @@ -201,40 +201,6 @@ static void drawChooseTreeCursor(int ypos, int color) game_status = last_game_status; /* restore current game status */ } -static void PlayMenuSound() -{ - int sound = menu.sound[game_status]; - - if (sound == SND_UNDEFINED) - return; - - if (sound_info[sound].loop) - PlaySoundLoop(sound); - else - PlaySound(sound); -} - -static void PlayMenuSoundIfLoop() -{ - int sound = menu.sound[game_status]; - - if (sound == SND_UNDEFINED) - return; - - if (sound_info[sound].loop) - PlaySoundLoop(sound); -} - -static void PlayMenuMusic() -{ - int music = menu.music[game_status]; - - if (music == MUS_UNDEFINED) - return; - - PlayMusic(music); -} - void DrawHeadline() { DrawTextSCentered(MENU_TITLE1_YPOS, FONT_TITLE_1, PROGRAM_TITLE_STRING); @@ -299,12 +265,14 @@ void DrawTitleScreenImage(int nr) if (width > WIN_XSIZE) { + /* image width too large for window => center image horizontally */ src_x = (width - WIN_XSIZE) / 2; width = WIN_XSIZE; } if (height > WIN_YSIZE) { + /* image height too large for window => center image vertically */ src_y = (height - WIN_YSIZE) / 2; height = WIN_YSIZE; } @@ -312,11 +280,7 @@ void DrawTitleScreenImage(int nr) dst_x = (WIN_XSIZE - width) / 2; dst_y = (WIN_YSIZE - height) / 2; -#if 1 ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE); -#else - DrawBackground(0, 0, WIN_XSIZE, WIN_YSIZE); -#endif if (DrawingOnBackground(dst_x, dst_y)) BlitBitmapMasked(bitmap, drawto, src_x, src_y, width, height, dst_x, dst_y); @@ -332,24 +296,15 @@ void DrawTitleScreen() SetMainBackgroundImage(IMG_BACKGROUND_TITLE); -#if 0 - CloseDoor(DOOR_CLOSE_1); -#endif - - HandleTitleScreen(0, 0, 0, 0, MB_MENU_INITIALIZE); - PlayMenuSound(); PlayMenuMusic(); -#if 1 - FadeIn(1000); -#else - FadeToFront(); -#endif + HandleTitleScreen(0, 0, 0, 0, MB_MENU_INITIALIZE); + StopAnimation(); } -void DrawMainMenu() +static void DrawMainMenuExt(int fade_delay) { static LevelDirTree *leveldir_last_valid = NULL; boolean levelset_has_changed = FALSE; @@ -373,6 +328,10 @@ void DrawMainMenu() audio.sound_deactivated = FALSE; +#if 1 + GetPlayerConfig(); +#endif + /* needed if last screen was the playing screen, invoked from level editor */ if (level_editor_test_game) { @@ -405,7 +364,9 @@ void DrawMainMenu() SetDrawtoField(DRAW_BACKBUFFER); #endif - if (levelset_has_changed && graphic_info[IMG_TITLESCREEN_1].bitmap != NULL) + if (setup.show_titlescreen && + levelset_has_changed && + graphic_info[IMG_TITLESCREEN_1].bitmap != NULL) { game_status = GAME_MODE_TITLE; DrawTitleScreen(); @@ -422,7 +383,9 @@ void DrawMainMenu() if (setup.handicap && level_nr > leveldir_current->handicap_level) level_nr = leveldir_current->handicap_level; +#if 0 GetPlayerConfig(); +#endif LoadLevel(level_nr); SetMainBackgroundImage(IMG_BACKGROUND_MAIN); @@ -526,8 +489,10 @@ void DrawMainMenu() DrawTextSCentered(326, FONT_TITLE_2, "A Game by Artsoft Entertainment"); +#if 0 FadeToFront(); InitAnimation(); +#endif HandleMainMenu(0, 0, 0, 0, MB_MENU_INITIALIZE); @@ -539,12 +504,30 @@ void DrawMainMenu() PlayMenuSound(); PlayMenuMusic(); +#if 1 OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2); +#else + if (fade_delay > 0) + OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW); + else + OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2); +#endif #if 1 /* map gadgets for main menu screen */ MapTapeButtons(); #endif + +#if 1 + FadeIn(fade_delay); + + InitAnimation(); +#endif +} + +void DrawMainMenu() +{ + DrawMainMenuExt(FALSE); } #if 0 @@ -582,9 +565,10 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) { static int title_nr = 0; boolean return_to_main_menu = FALSE; + boolean use_fading_main_menu = TRUE; boolean use_cross_fading = TRUE; - int fade_delay = 1000; - int post_delay = 500; + int fade_delay = 500; + int post_delay = fade_delay / 2; if (button == MB_MENU_INITIALIZE) { @@ -592,21 +576,21 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) DrawTitleScreenImage(title_nr); + FadeIn(fade_delay); + return; } else if (button == MB_MENU_LEAVE) { return_to_main_menu = TRUE; + use_fading_main_menu = FALSE; } else if (button == MB_MENU_CHOICE) { title_nr++; if (!use_cross_fading) - { - FadeOut(fade_delay); - Delay(post_delay); - } + FadeOut(fade_delay, post_delay); if (title_nr < MAX_NUM_TITLE_SCREENS && graphic_info[IMG_TITLESCREEN_1 + title_nr].bitmap != NULL) @@ -621,14 +605,15 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) drawto = drawto_last; if (use_cross_fading) - FadeCross(bitmap_db_title, fade_delay); + FadeCross(fade_delay); else FadeIn(fade_delay); } else { - FadeOut(fade_delay); - Delay(post_delay); + FadeSoundsAndMusic(); + + FadeOut(fade_delay, post_delay); return_to_main_menu = TRUE; } @@ -638,8 +623,12 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button) { RedrawBackground(); +#if 1 + OpenDoor(DOOR_CLOSE_1 | DOOR_OPEN_2 | DOOR_NO_DELAY | DOOR_FORCE_REDRAW); +#endif + game_status = GAME_MODE_MAIN; - DrawMainMenu(); + DrawMainMenuExt(use_fading_main_menu ? fade_delay : 0); } } @@ -2321,7 +2310,8 @@ static struct TokenInfo setup_info_graphics[] = #endif { TYPE_SWITCH, &setup.quick_switch, "Quick Player Focus Switch:" }, { TYPE_SWITCH, &setup.quick_doors, "Quick Menu Doors:" }, - { TYPE_SWITCH, &setup.toons, "Toons:" }, + { TYPE_SWITCH, &setup.show_titlescreen,"Show Title Screens:" }, + { TYPE_SWITCH, &setup.toons, "Show Toons:" }, { TYPE_ECS_AGA, &setup.prefer_aga_graphics,"EMC graphics preference:" }, { TYPE_EMPTY, NULL, "" }, { TYPE_LEAVE_MENU, execSetupMain, "Back" },