X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=77642b69ab42b184c41f895ffdcb8df386c0b260;hb=d9ebb78b0e0290d76d3ee3d8f864ac6767cab61e;hp=b97c44a134777973bdf98284cb50733a7e7728ee;hpb=1150bdce04915bf329bd816307fb2507eba80e15;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index b97c44a1..77642b69 100644 --- a/src/screens.c +++ b/src/screens.c @@ -1,25 +1,24 @@ /*********************************************************** -* Rocks'n'Diamonds -- McDuffin Strikes Back! * +* Rocks'n'Diamonds -- McDuffin Strikes Back! * *----------------------------------------------------------* -* (c) 1995-98 Artsoft Entertainment * -* Holger Schemel * -* Oststrasse 11a * -* 33604 Bielefeld * -* phone: ++49 +521 290471 * -* email: aeglos@valinor.owl.de * +* (c) 1995-2001 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * *----------------------------------------------------------* -* screens.c * +* screens.c * ***********************************************************/ +#include "libgame/libgame.h" + #include "screens.h" #include "events.h" -#include "sound.h" #include "game.h" #include "tools.h" #include "editor.h" -#include "misc.h" #include "files.h" -#include "buttons.h" #include "tape.h" #include "joystick.h" #include "cartoons.h" @@ -63,6 +62,29 @@ void DrawHeadline() DrawTextFCentered(46, FC_RED, WINDOW_SUBTITLE_STRING); } +static void ToggleFullscreenIfNeeded() +{ + if (setup.fullscreen != video.fullscreen_enabled) + { + /* save old door content */ + BlitBitmap(backbuffer, pix[PIX_DB_DOOR], + DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1); + + /* toggle fullscreen */ + ChangeVideoModeIfNeeded(setup.fullscreen); + setup.fullscreen = video.fullscreen_enabled; + + /* redraw background to newly created backbuffer */ + BlitBitmap(pix[PIX_BACK], backbuffer, 0,0, WIN_XSIZE,WIN_YSIZE, 0,0); + + /* restore old door content */ + BlitBitmap(pix[PIX_DB_DOOR], backbuffer, + DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY); + + redraw_mask = REDRAW_ALL; + } +} + void DrawMainMenu() { static struct LevelDirInfo *leveldir_last_valid = NULL; @@ -85,7 +107,8 @@ void DrawMainMenu() UndrawSpecialEditorDoor(); /* needed if last screen was the setup screen and fullscreen state changed */ - ChangeVideoModeIfNeeded(); + ToggleFullscreenIfNeeded(); + #ifdef TARGET_SDL SetDrawtoField(DRAW_BACKBUFFER); #endif @@ -262,9 +285,9 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) level_nr = new_level_nr; - DrawTextExt(drawto, gc, SX + 11 * 32, SY + 3 * 32, + DrawTextExt(drawto, SX + 11 * 32, SY + 3 * 32, int2str(level_nr, 3), FS_BIG, font_color); - DrawTextExt(window, gc, SX + 11 * 32, SY + 3 * 32, + DrawTextExt(window, SX + 11 * 32, SY + 3 * 32, int2str(level_nr, 3), FS_BIG, font_color); LoadLevel(level_nr); @@ -563,6 +586,7 @@ static char *helpscreen_music[][3] = { "Voyager", "The Alan Parsons Project","Pyramid" }, { "Twilight Painter", "Tangerine Dream", "Heartbreakers" } }; +static int num_helpscreen_music = 7; static int helpscreen_musicpos; void DrawHelpScreenElAction(int start) @@ -617,7 +641,7 @@ void DrawHelpScreenElAction(int start) } j++; - DrawGraphicExt(drawto, gc, xstart, ystart+(i-start)*ystep, graphic+frame); + DrawGraphicExt(drawto, xstart, ystart+(i-start)*ystep, graphic+frame); i++; } @@ -677,7 +701,9 @@ void DrawHelpScreenMusicText(int num) DrawTextFCentered(ybottom, FC_BLUE, "Press any key or button for next page"); +#if 0 PlaySoundLoop(background_loop[num]); +#endif } void DrawHelpScreenCreditsText() @@ -781,17 +807,20 @@ void HandleHelpScreen(int button) DrawHelpScreenElText(helpscreen_state*MAX_HELPSCREEN_ELS); DrawHelpScreenElAction(helpscreen_state*MAX_HELPSCREEN_ELS); } - else if (helpscreen_state < num_helpscreen_els_pages + num_bg_loops - 1) + else if (helpscreen_state < + num_helpscreen_els_pages + num_helpscreen_music - 1) { helpscreen_state++; DrawHelpScreenMusicText(helpscreen_state - num_helpscreen_els_pages); } - else if (helpscreen_state == num_helpscreen_els_pages + num_bg_loops - 1) + else if (helpscreen_state == + num_helpscreen_els_pages + num_helpscreen_music - 1) { helpscreen_state++; DrawHelpScreenCreditsText(); } - else if (helpscreen_state == num_helpscreen_els_pages + num_bg_loops) + else if (helpscreen_state == + num_helpscreen_els_pages + num_helpscreen_music) { helpscreen_state++; DrawHelpScreenContactText(); @@ -842,9 +871,9 @@ void HandleTypeName(int newxpos, Key key) setup.player_name[xpos] = ascii; setup.player_name[xpos + 1] = 0; xpos++; - DrawTextExt(drawto, gc, SX + 6*32, SY + ypos*32, + DrawTextExt(drawto, SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_YELLOW); - DrawTextExt(window, gc, SX + 6*32, SY + ypos*32, + DrawTextExt(window, SX + 6*32, SY + ypos*32, setup.player_name, FS_BIG, FC_YELLOW); DrawGraphic(xpos + 6, ypos, GFX_KUGEL_ROT); } @@ -1175,6 +1204,7 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) void DrawHallOfFame(int highlight_position) { UnmapAllGadgets(); + FadeSounds(); CloseDoor(DOOR_CLOSE_2); if (highlight_position < 0) @@ -1409,7 +1439,7 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) { int yy = y-1; - if (y == 3 && sysinfo.audio_available) + if (y == 3 && audio.sound_available) { if (setup.sound) { @@ -1423,7 +1453,7 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) DrawText(SX+14*32, SY+yy*32,"on ",FS_BIG,FC_YELLOW); setup.sound = !setup.sound; } - else if (y == 4 && sysinfo.audio_loops_available) + else if (y == 4 && audio.loops_available) { if (setup.sound_loops) DrawText(SX+14*32, SY+yy*32,"off",FS_BIG,FC_BLUE); @@ -1435,7 +1465,7 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) } setup.sound_loops = !setup.sound_loops; } - else if (y == 5 && sysinfo.audio_loops_available) + else if (y == 5 && audio.loops_available) { if (setup.sound_music) DrawText(SX+14*32, SY+yy*32,"off",FS_BIG,FC_BLUE); @@ -1500,7 +1530,7 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) setup.fading = !setup.fading; } #endif - else if (y == 8 && fullscreen_available) + else if (y == 8 && video.fullscreen_available) { if (setup.fullscreen) DrawText(SX+14*32, SY+yy*32,"off",FS_BIG,FC_BLUE); @@ -2337,7 +2367,7 @@ static struct static void CreateScreenScrollbuttons() { - Bitmap gd_bitmap = pix[PIX_MORE]; + Bitmap *gd_bitmap = pix[PIX_MORE]; struct GadgetInfo *gi; unsigned long event_mask; int i; @@ -2391,7 +2421,7 @@ static void CreateScreenScrollbars() for (i=0; i