X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=a27dcba819af1910a6d8a9afc81a167fb7d6059b;hb=fd18ece8535cd87bd72989d7d39092d55b283939;hp=e65ee1b0bd890ed60af1f4b180ad10c291d541c3;hpb=a6e8cf77120ad2601b878278bc750fd695c6fbbd;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index e65ee1b0..a27dcba8 100644 --- a/src/screens.c +++ b/src/screens.c @@ -58,6 +58,8 @@ void DrawMainMenu() int i; char *name_text = (!options.network && setup.team_mode ? "Team:" : "Name:"); + UnmapAllGadgets(); + FadeSounds(); XAutoRepeatOn(display); /* needed if last screen was the playing screen, invoked from level editor */ @@ -68,11 +70,9 @@ void DrawMainMenu() return; } - /* unmap gadgets from last screen, map gadgets for main menu screen */ - UnmapAllGadgets(); + /* map gadgets for main menu screen */ MapTapeButtons(); - FadeSounds(); GetPlayerConfig(); LoadLevel(level_nr); @@ -816,7 +816,8 @@ static void drawChooseLevelList(int first_entry, int num_page_entries) { strncpy(buffer, leveldir[first_entry + i].name , SCR_FIELDX - 1); buffer[SCR_FIELDX - 1] = '\0'; - DrawText(SX + 32, SY + (i + 2) * 32, buffer, FS_BIG, FC_YELLOW); + DrawText(SX + 32, SY + (i + 2) * 32, buffer, + FS_BIG, leveldir[first_entry + i].color); DrawGraphic(0, i + 2, GFX_KUGEL_BLAU); } @@ -829,10 +830,17 @@ static void drawChooseLevelList(int first_entry, int num_page_entries) static void drawChooseLevelInfo(int leveldir_nr) { + int x, last_redraw_mask = redraw_mask; + XFillRectangle(display, drawto, gc, SX + 32, SY + 32, SXSIZE - 32, 32); DrawTextFCentered(40, FC_RED, "%3d levels (%s)", leveldir[leveldir_nr].levels, leveldir[leveldir_nr].readonly ? "readonly" : "writable"); + + /* let BackToFront() redraw only what is needed */ + redraw_mask = last_redraw_mask | REDRAW_TILES; + for (x=0; x