X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=57c7b87326383a566c1e09974e3d4d1aafa928e8;hb=f13a8935ca1a7eeb3406d02f49b2df1490504017;hp=ba066ed9bd6f740064244ccbbbf6d1f775ceded0;hpb=3ff2e8a0b5c27b99a9920bdf5ed82bc41bf40181;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index ba066ed9..57c7b873 100644 --- a/src/game.c +++ b/src/game.c @@ -2519,17 +2519,11 @@ void DisplayGameControlValues() height = graphic_info[graphic].height * size / TILESIZE; if (draw_masked) - { - SetClipOrigin(src_bitmap, src_bitmap->stored_clip_gc, - dst_x - src_x, dst_y - src_y); BlitBitmapMasked(src_bitmap, drawto, src_x, src_y, width, height, dst_x, dst_y); - } else - { BlitBitmap(src_bitmap, drawto, src_x, src_y, width, height, dst_x, dst_y); - } } } else if (type == TYPE_STRING) @@ -2581,7 +2575,7 @@ void DisplayGameControlValues() void UpdateAndDisplayGameControlValues() { - if (tape.warp_forward) + if (tape.deactivate_display) return; UpdateGameControlValues(); @@ -3915,6 +3909,14 @@ void InitGame() FadeIn(REDRAW_FIELD); +#if 1 + // full screen redraw is required at this point in the following cases: + // - special editor door undrawn when game was started from level editor + // - drawing area (playfield) was changed and has to be removed completely + redraw_mask = REDRAW_ALL; + BackToFront(); +#endif + if (!game.restart_level) { /* copy default game door content to main double buffer */ @@ -5007,7 +5009,6 @@ void DrawRelocateScreen(int old_x, int old_y, int x, int y, int move_dir, /* scroll in two steps of half tile size to make things smoother */ BlitBitmap(drawto_field, window, fx, fy, SXSIZE, SYSIZE, SX, SY); - FlushDisplay(); Delay(wait_delay_value); /* scroll second step to align at full tile size */ @@ -10831,6 +10832,9 @@ static void CheckLevelTime() DrawVideoDisplay(VIDEO_STATE_TIME_ON, TapeTime); } + if (tape.recording || tape.playing) + DrawVideoDisplay(VIDEO_STATE_FRAME_ON, FrameCounter); + UpdateAndDisplayGameControlValues(); } @@ -11074,7 +11078,8 @@ void GameActions() TapeRecordAction(tape_action); #if USE_NEW_PLAYER_ASSIGNMENTS - if (game.team_mode) + // !!! also map player actions in single player mode !!! + // if (game.team_mode) { byte mapped_action[MAX_PLAYERS]; @@ -14695,7 +14700,7 @@ boolean CheckEngineSnapshot() static struct { int graphic; - struct Rect *pos; + struct XY *pos; int gadget_id; char *infotext; } gamebutton_info[NUM_GAME_BUTTONS] = @@ -14741,7 +14746,7 @@ void CreateGameButtons() for (i = 0; i < NUM_GAME_BUTTONS; i++) { struct GraphicInfo *gfx = &graphic_info[gamebutton_info[i].graphic]; - struct Rect *pos = gamebutton_info[i].pos; + struct XY *pos = gamebutton_info[i].pos; struct GadgetInfo *gi; int button_type; boolean checked;