X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=8739b9f863d96cd935f51afcbe97d8c40a53d6bd;hb=33cabd20cdb4e7aa84dfd30975f1364e7b776121;hp=c754fc186f0d08505356b474feb65032b98e6512;hpb=2176d1de29652bc9e8db1baa283fdc1c4e99e674;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index c754fc18..8739b9f8 100644 --- a/src/game.c +++ b/src/game.c @@ -19,6 +19,7 @@ #include "files.h" #include "tape.h" #include "network.h" +#include "anim.h" /* DEBUG SETTINGS */ @@ -4894,6 +4895,7 @@ static void setScreenCenteredToAllPlayers(int *sx, int *sy) void DrawRelocateScreen(int old_x, int old_y, int x, int y, int move_dir, boolean center_screen, boolean quick_relocation) { + unsigned int frame_delay_value_old = GetVideoFrameDelay(); boolean ffwd_delay = (tape.playing && tape.fast_forward); boolean no_delay = (tape.warp_forward); int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay); @@ -4961,6 +4963,8 @@ void DrawRelocateScreen(int old_x, int old_y, int x, int y, int move_dir, ScrollScreen(NULL, SCROLL_GO_ON); /* scroll last frame to full tile */ + SetVideoFrameDelay(wait_delay_value); + while (scroll_x != new_scroll_x || scroll_y != new_scroll_y) { int dx = 0, dy = 0; @@ -4983,16 +4987,15 @@ 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); - Delay(wait_delay_value); /* scroll second step to align at full tile size */ - BackToFront(); - Delay(wait_delay_value); + BlitScreenToBitmap(window); } DrawAllPlayers(); BackToFront(); - Delay(wait_delay_value); + + SetVideoFrameDelay(frame_delay_value_old); } void RelocatePlayer(int jx, int jy, int el_player_raw) @@ -5042,8 +5045,7 @@ void RelocatePlayer(int jx, int jy, int el_player_raw) DrawPlayer(player); - BackToFront(); - Delay(wait_delay_value); + BackToFront_WithFrameDelay(wait_delay_value); } DrawPlayer(player); /* needed here only to cleanup last field */ @@ -10958,7 +10960,9 @@ void StartGameActions(boolean init_network_game, boolean record_tape, void GameActions() { +#if 0 static unsigned int game_frame_delay = 0; +#endif unsigned int game_frame_delay_value; byte *recorded_player_action; byte summarized_player_action = 0; @@ -11036,6 +11040,9 @@ void GameActions() if (tape.playing && tape.warp_forward && !tape.pausing) game_frame_delay_value = 0; + SetVideoFrameDelay(game_frame_delay_value); + +#if 0 #if 0 /* ---------- main game synchronization point ---------- */ @@ -11047,6 +11054,7 @@ void GameActions() /* ---------- main game synchronization point ---------- */ WaitUntilDelayReached(&game_frame_delay, game_frame_delay_value); +#endif #endif if (network_playing && !network_player_action_received) @@ -12059,7 +12067,7 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) AdvanceFrameAndPlayerCounters(player->index_nr); DrawAllPlayers(); - BackToFront(); + BackToFront_WithFrameDelay(0); } player->move_delay_value = original_move_delay_value; @@ -14855,47 +14863,47 @@ static struct } gamebutton_info[NUM_GAME_BUTTONS] = { { - IMG_GAME_BUTTON_GFX_STOP, &game.button.stop, + IMG_GFX_GAME_BUTTON_STOP, &game.button.stop, GAME_CTRL_ID_STOP, "stop game" }, { - IMG_GAME_BUTTON_GFX_PAUSE, &game.button.pause, + IMG_GFX_GAME_BUTTON_PAUSE, &game.button.pause, GAME_CTRL_ID_PAUSE, "pause game" }, { - IMG_GAME_BUTTON_GFX_PLAY, &game.button.play, + IMG_GFX_GAME_BUTTON_PLAY, &game.button.play, GAME_CTRL_ID_PLAY, "play game" }, { - IMG_GAME_BUTTON_GFX_UNDO, &game.button.undo, + IMG_GFX_GAME_BUTTON_UNDO, &game.button.undo, GAME_CTRL_ID_UNDO, "undo step" }, { - IMG_GAME_BUTTON_GFX_REDO, &game.button.redo, + IMG_GFX_GAME_BUTTON_REDO, &game.button.redo, GAME_CTRL_ID_REDO, "redo step" }, { - IMG_GAME_BUTTON_GFX_SAVE, &game.button.save, + IMG_GFX_GAME_BUTTON_SAVE, &game.button.save, GAME_CTRL_ID_SAVE, "save game" }, { - IMG_GAME_BUTTON_GFX_PAUSE2, &game.button.pause2, + IMG_GFX_GAME_BUTTON_PAUSE2, &game.button.pause2, GAME_CTRL_ID_PAUSE2, "pause game" }, { - IMG_GAME_BUTTON_GFX_LOAD, &game.button.load, + IMG_GFX_GAME_BUTTON_LOAD, &game.button.load, GAME_CTRL_ID_LOAD, "load game" }, { - IMG_GAME_BUTTON_GFX_SOUND_MUSIC, &game.button.sound_music, + IMG_GFX_GAME_BUTTON_SOUND_MUSIC, &game.button.sound_music, SOUND_CTRL_ID_MUSIC, "background music on/off" }, { - IMG_GAME_BUTTON_GFX_SOUND_LOOPS, &game.button.sound_loops, + IMG_GFX_GAME_BUTTON_SOUND_LOOPS, &game.button.sound_loops, SOUND_CTRL_ID_LOOPS, "sound loops on/off" }, { - IMG_GAME_BUTTON_GFX_SOUND_SIMPLE, &game.button.sound_simple, + IMG_GFX_GAME_BUTTON_SOUND_SIMPLE, &game.button.sound_simple, SOUND_CTRL_ID_SIMPLE, "normal sounds on/off" } };