}
}
+int GetDrawtoField(void)
+{
+ return (drawto_field == fieldbuffer ? DRAW_TO_FIELDBUFFER : DRAW_TO_BACKBUFFER);
+}
+
static void RedrawPlayfield_RND(void)
{
if (game.envelope_active)
{
boolean game_just_ended = (game_status == GAME_MODE_PLAYING &&
checkGameEnded());
+ int draw_buffer_last = GetDrawtoField();
int width = request.width;
int height = request.height;
int sx, sy;
while (result < 0)
{
+ boolean event_handled = FALSE;
+
if (game_just_ended)
{
- // the MM game engine does not use a special (scrollable) field buffer
- if (level.game_engine_type != GAME_ENGINE_TYPE_MM)
- SetDrawtoField(DRAW_TO_FIELDBUFFER);
+ SetDrawtoField(draw_buffer_last);
HandleGameActions();
while (NextValidEvent(&event))
{
+ event_handled = TRUE;
+
switch (event.type)
{
case EVENT_BUTTONPRESS:
}
}
- if (game_just_ended)
+ if (event_handled)
{
- if (global.use_envelope_request)
+ if (game_just_ended)
{
- // copy back current state of pressed buttons inside request area
- BlitBitmap(drawto, bitmap_db_store_2, sx, sy, width, height, sx, sy);
+ if (global.use_envelope_request)
+ {
+ // copy back current state of pressed buttons inside request area
+ BlitBitmap(drawto, bitmap_db_store_2, sx, sy, width, height, sx, sy);
+ }
}
}
BackToFront();
}
+ SetDrawtoField(draw_buffer_last);
+
game.request_active = FALSE;
return result;
boolean overlay_enabled = GetOverlayEnabled();
boolean result;
+ game.request_active_or_moving = TRUE;
+
SetOverlayEnabled(FALSE);
if (global.use_envelope_request)
SetOverlayEnabled(overlay_enabled);
+ game.request_active_or_moving = FALSE;
+
return result;
}
boolean any_player_dropping)
{
if (tape.single_step && tape.recording && !tape.pausing)
- if (frame == 7 && !any_player_dropping)
+ if (frame == 7 && !any_player_dropping && FrameCounter > 6)
TapeTogglePause(TAPE_TOGGLE_AUTOMATIC);
CheckSaveEngineSnapshot_EM(action, frame, any_player_moving,