X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ftape.c;h=5e8746df2384c48d23ad92fba19010b96c4a6eeb;hp=5a879d12ac0af05f624130ea6d5adf7ed8fe4917;hb=79ee4446132fd0081c8d78c51c72d8620b5e1e2b;hpb=b5fb0b07e5ab3af54a5d541d59ae661eaee3bfae diff --git a/src/tape.c b/src/tape.c index 5a879d12..5e8746df 100644 --- a/src/tape.c +++ b/src/tape.c @@ -401,8 +401,7 @@ void DrawCompleteVideoDisplay() gfx.vxsize, gfx.vysize, gfx.vx, gfx.vy); /* draw tape buttons (forced) */ - UnmapTapeButtons(); - MapTapeButtons(); + RedrawOrRemapTapeButtons(); DrawVideoDisplay(VIDEO_ALL_OFF, 0); @@ -1290,6 +1289,34 @@ void UnmapTapeButtons() UnmapGameButtons(); } +void RedrawTapeButtons() +{ + int i; + + for (i = 0; i < NUM_TAPE_BUTTONS; i++) + RedrawGadget(tape_gadget[i]); + + if (tape.show_game_buttons) + RedrawGameButtons(); + + // RedrawGadget() may have set REDRAW_ALL if buttons are defined off-area + redraw_mask &= ~REDRAW_ALL; +} + +void RedrawOrRemapTapeButtons() +{ + if (tape_gadget[TAPE_CTRL_ID_PLAY]->mapped) + { + // tape buttons already mapped + RedrawTapeButtons(); + } + else + { + UnmapTapeButtons(); + MapTapeButtons(); + } +} + static void HandleTapeButtonsExt(int id) { if (game_status != GAME_MODE_MAIN && game_status != GAME_MODE_PLAYING)