X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=11c62850528e43933c780f2b0f0f56f2b39d62f5;hb=6df84aae03094174b7418a8c1cce7657d3378d59;hp=adbda0da2bd2ee927b9dd54fc5f3d26353361997;hpb=0918c3eb2f6219a8cc72aa85bd9c4889788dd474;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index adbda0da..11c62850 100644 --- a/src/screens.c +++ b/src/screens.c @@ -58,6 +58,17 @@ void DrawMainMenu() int i; char *name_text = (!options.network && setup.team_mode ? "Team:" : "Name:"); + /* needed if last screen was the playing screen, invoked from level editor */ + if (level_editor_test_game) + { + game_status = LEVELED; + DrawLevelEd(); + return; + } + + /* needed if last screen was the level editor */ + UnmapLevelEditorGadgets(); + FadeSounds(); GetPlayerConfig(); LoadLevel(level_nr); @@ -169,7 +180,8 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) if (new_level_nr > leveldir[leveldir_nr].levels - 1) new_level_nr = leveldir[leveldir_nr].levels - 1; - if (old_level_nr == new_level_nr || !DelayReached(&level_delay, 150)) + if (old_level_nr == new_level_nr || + !DelayReached(&level_delay, GADGET_FRAME_DELAY)) goto out; level_nr = new_level_nr; @@ -374,8 +386,8 @@ static int helpscreen_action[] = GFX_DIAMANT,1,10, HA_NEXT, GFX_LIFE,1,100, HA_NEXT, GFX_LIFE_ASYNC,1,100, HA_NEXT, - GFX_SIEB_LEER,4,2, HA_NEXT, - GFX_SIEB2_LEER,4,2, HA_NEXT, + GFX_SIEB_INAKTIV,4,2, HA_NEXT, + GFX_SIEB2_INAKTIV,4,2, HA_NEXT, GFX_AUSGANG_ZU,1,100, GFX_AUSGANG_ACT,4,2, GFX_AUSGANG_AUF+0,4,2, GFX_AUSGANG_AUF+3,1,2, GFX_AUSGANG_AUF+2,1,2, GFX_AUSGANG_AUF+1,1,2, HA_NEXT, @@ -804,6 +816,7 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) static unsigned long choose_delay = 0; static int redraw = TRUE; int x = (mx + 32 - SX) / 32, y = (my + 32 - SY) / 32; + int step = (button == 1 ? 1 : button == 2 ? 5 : 10); int num_page_entries; if (num_leveldirs <= MAX_LEVEL_SERIES_ON_SCREEN) @@ -849,9 +862,15 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) if (x == 1 && y == 2) { if (first_entry > 0 && - (dy || DelayReached(&choose_delay, 150))) + (dy || DelayReached(&choose_delay, GADGET_FRAME_DELAY))) { +#if 0 first_entry--; +#else + first_entry -= step; + if (first_entry < 0) + first_entry = 0; +#endif drawChooseLevelList(first_entry, num_page_entries); drawChooseLevelInfo(first_entry); DrawGraphic(0, choice - 1, GFX_KUGEL_ROT); @@ -861,9 +880,15 @@ void HandleChooseLevel(int mx, int my, int dx, int dy, int button) else if (x == 1 && y > num_page_entries + 2) { if (first_entry + num_page_entries < num_leveldirs && - (dy || DelayReached(&choose_delay, 150))) + (dy || DelayReached(&choose_delay, GADGET_FRAME_DELAY))) { +#if 0 first_entry++; +#else + first_entry += step; + if (first_entry + num_page_entries > num_leveldirs) + first_entry = num_leveldirs - num_page_entries; +#endif drawChooseLevelList(first_entry, num_page_entries); drawChooseLevelInfo(first_entry + num_page_entries - 1); DrawGraphic(0, choice - 1, GFX_KUGEL_ROT); @@ -1120,12 +1145,18 @@ void HandleSetupScreen(int mx, int my, int dx, int dy, int button) } else if (y==7) { +#if 0 if (setup.double_buffering) DrawText(SX+14*32, SY+yy*32,"off",FS_BIG,FC_BLUE); else DrawText(SX+14*32, SY+yy*32,"on ",FS_BIG,FC_YELLOW); setup.double_buffering = !setup.double_buffering; setup.direct_draw = !setup.double_buffering; +#else + DrawText(SX+14*32, SY+yy*32,"on ",FS_BIG,FC_YELLOW); + setup.double_buffering = TRUE; + setup.direct_draw = !setup.double_buffering; +#endif } else if (y==8) { @@ -1391,7 +1422,7 @@ void HandleSetupInputScreen(int mx, int my, int dx, int dy, int button) { static unsigned long delay = 0; - if (!DelayReached(&delay, 150)) + if (!DelayReached(&delay, GADGET_FRAME_DELAY)) goto out; player_nr = (player_nr + (x == 11 ? -1 : +1) + MAX_PLAYERS) % MAX_PLAYERS;