X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=d35a369543620796da268b97b134be3a6ba0c4c9;hb=92043ae881c02e6f171dedb22b022e9cba617293;hp=f17eb32359f76fccb2c1e25371125322ae9d1b26;hpb=e20eec573781b34a21a17f87f03abb43f3814715;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index f17eb323..d35a3695 100644 --- a/src/game.c +++ b/src/game.c @@ -25,10 +25,6 @@ #define DEBUG_INIT_PLAYER 1 #define DEBUG_PLAYER_ACTIONS 0 -// test element position in level set "test_gfxframe" / level "000" -#define DEBUG_GFXFRAME_X 11 -#define DEBUG_GFXFRAME_Y 9 - /* EXPERIMENTAL STUFF */ #define USE_NEW_AMOEBA_CODE FALSE @@ -3095,11 +3091,6 @@ void InitGame() int initial_move_dir = MV_DOWN; int i, j, x, y; -#if 1 - printf("::: game.graphics_engine_version == %d\n", - game.graphics_engine_version); -#endif - // required here to update video display before fading (FIX THIS) DrawMaskedBorder(REDRAW_DOOR_2); @@ -3395,10 +3386,6 @@ void InitGame() GfxRedraw[x][y] = GFX_REDRAW_NONE; } -#if 1 - printf("::: INIT GAME"); -#endif - SCAN_PLAYFIELD(x, y) { if (emulate_bd && !IS_BD_ELEMENT(Feld[x][y])) @@ -3413,10 +3400,6 @@ void InitGame() ResetGfxAnimation(x, y); } -#if 1 - printf(" -> %d\n", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]); -#endif - InitBeltMovement(); for (i = 0; i < MAX_PLAYERS; i++) @@ -4445,8 +4428,6 @@ void GameEnd() if (!local_player->LevelSolved_SaveScore) { - FadeOut(REDRAW_FIELD); - game_status = GAME_MODE_MAIN; DrawMainMenu(); @@ -4478,8 +4459,6 @@ void GameEnd() } else { - FadeOut(REDRAW_FIELD); - game_status = GAME_MODE_MAIN; if (raise_level) @@ -4616,11 +4595,6 @@ static void ResetGfxAnimation(int x, int y) GfxFrame[x][y] = 0; ResetGfxFrame(x, y, FALSE); - -#if 1 - if (x == DEBUG_GFXFRAME_X && y == DEBUG_GFXFRAME_Y) - printf(" (RESET_GFX_ANIM)"); -#endif } static void ResetRandomAnimationValue(int x, int y) @@ -4924,81 +4898,40 @@ void DrawRelocateScreen(int old_x, int old_y, int x, int y, int move_dir, } else if (quick_relocation) { - if (!IN_VIS_FIELD(SCREENX(x), SCREENY(y)) || center_screen) + if (!level.shifted_relocation || center_screen) { - if (!level.shifted_relocation || center_screen) - { - /* quick relocation (without scrolling), with centering of screen */ - - scroll_x = (x < SBX_Left + MIDPOSX ? SBX_Left : - x > SBX_Right + MIDPOSX ? SBX_Right : - x - MIDPOSX); - - scroll_y = (y < SBY_Upper + MIDPOSY ? SBY_Upper : - y > SBY_Lower + MIDPOSY ? SBY_Lower : - y - MIDPOSY); - } - else - { - /* quick relocation (without scrolling), but do not center screen */ - - int center_scroll_x = (old_x < SBX_Left + MIDPOSX ? SBX_Left : - old_x > SBX_Right + MIDPOSX ? SBX_Right : - old_x - MIDPOSX); - - int center_scroll_y = (old_y < SBY_Upper + MIDPOSY ? SBY_Upper : - old_y > SBY_Lower + MIDPOSY ? SBY_Lower : - old_y - MIDPOSY); + /* quick relocation (without scrolling), with centering of screen */ - int offset_x = x + (scroll_x - center_scroll_x); - int offset_y = y + (scroll_y - center_scroll_y); + scroll_x = (x < SBX_Left + MIDPOSX ? SBX_Left : + x > SBX_Right + MIDPOSX ? SBX_Right : + x - MIDPOSX); - scroll_x = (offset_x < SBX_Left + MIDPOSX ? SBX_Left : - offset_x > SBX_Right + MIDPOSX ? SBX_Right : - offset_x - MIDPOSX); - - scroll_y = (offset_y < SBY_Upper + MIDPOSY ? SBY_Upper : - offset_y > SBY_Lower + MIDPOSY ? SBY_Lower : - offset_y - MIDPOSY); - } + scroll_y = (y < SBY_Upper + MIDPOSY ? SBY_Upper : + y > SBY_Lower + MIDPOSY ? SBY_Lower : + y - MIDPOSY); } else { - if (!level.shifted_relocation || center_screen) - { - /* quick relocation (without scrolling), with centering of screen */ - - scroll_x = (x < SBX_Left + MIDPOSX ? SBX_Left : - x > SBX_Right + MIDPOSX ? SBX_Right : - x - MIDPOSX); + /* quick relocation (without scrolling), but do not center screen */ - scroll_y = (y < SBY_Upper + MIDPOSY ? SBY_Upper : - y > SBY_Lower + MIDPOSY ? SBY_Lower : - y - MIDPOSY); - } - else - { - /* quick relocation (without scrolling), but do not center screen */ - - int center_scroll_x = (old_x < SBX_Left + MIDPOSX ? SBX_Left : - old_x > SBX_Right + MIDPOSX ? SBX_Right : - old_x - MIDPOSX); + int center_scroll_x = (old_x < SBX_Left + MIDPOSX ? SBX_Left : + old_x > SBX_Right + MIDPOSX ? SBX_Right : + old_x - MIDPOSX); - int center_scroll_y = (old_y < SBY_Upper + MIDPOSY ? SBY_Upper : - old_y > SBY_Lower + MIDPOSY ? SBY_Lower : - old_y - MIDPOSY); + int center_scroll_y = (old_y < SBY_Upper + MIDPOSY ? SBY_Upper : + old_y > SBY_Lower + MIDPOSY ? SBY_Lower : + old_y - MIDPOSY); - int offset_x = x + (scroll_x - center_scroll_x); - int offset_y = y + (scroll_y - center_scroll_y); + int offset_x = x + (scroll_x - center_scroll_x); + int offset_y = y + (scroll_y - center_scroll_y); - scroll_x = (offset_x < SBX_Left + MIDPOSX ? SBX_Left : - offset_x > SBX_Right + MIDPOSX ? SBX_Right : - offset_x - MIDPOSX); + scroll_x = (offset_x < SBX_Left + MIDPOSX ? SBX_Left : + offset_x > SBX_Right + MIDPOSX ? SBX_Right : + offset_x - MIDPOSX); - scroll_y = (offset_y < SBY_Upper + MIDPOSY ? SBY_Upper : - offset_y > SBY_Lower + MIDPOSY ? SBY_Lower : - offset_y - MIDPOSY); - } + scroll_y = (offset_y < SBY_Upper + MIDPOSY ? SBY_Upper : + offset_y > SBY_Lower + MIDPOSY ? SBY_Lower : + offset_y - MIDPOSY); } RedrawPlayfield(); @@ -10018,11 +9951,6 @@ static void CreateFieldExt(int x, int y, int element, boolean is_change) ResetGfxAnimation(x, y); ResetRandomAnimationValue(x, y); -#if 0 - if (x == DEBUG_GFXFRAME_X && y == DEBUG_GFXFRAME_Y) - printf(" (RESET X)"); -#endif - TEST_DrawLevelField(x, y); if (GFX_CRUMBLED(new_element)) @@ -10293,10 +10221,9 @@ static void HandleElementChange(int x, int y, int page) be drawn instead of the correct frames 0,1,2,3. This is caused by "GfxFrame[][]" being reset *twice* (in two successive frames) after an element change: First when the change delay ("ChangeDelay[][]") - counter has reached zero after decrementing (see "RESET 1" below), - then a second time in the next frame (after "GfxFrame[][]" was - already incremented) when "ChangeDelay[][]" is reset to the initial - delay value again (see "RESET 2" below). + counter has reached zero after decrementing, then a second time in + the next frame (after "GfxFrame[][]" was already incremented) when + "ChangeDelay[][]" is reset to the initial delay value again. This causes frame 0 to be drawn twice, while the last frame won't be drawn anymore, resulting in the wrong frame sequence 0,0,1,2. @@ -10327,12 +10254,6 @@ static void HandleElementChange(int x, int y, int page) { ResetGfxAnimation(x, y); ResetRandomAnimationValue(x, y); - -#if 1 - if (x == DEBUG_GFXFRAME_X && y == DEBUG_GFXFRAME_Y) - printf(" (RESET 2)"); -#endif - } if (change->pre_change_function) @@ -10387,12 +10308,6 @@ static void HandleElementChange(int x, int y, int page) if (change->post_change_function) change->post_change_function(x, y); } - -#if 1 - if (x == DEBUG_GFXFRAME_X && y == DEBUG_GFXFRAME_Y) - printf(" (RESET 1)"); -#endif - } if (change->has_action && !handle_action_before_change) @@ -11469,10 +11384,6 @@ void GameActions_RND() } } -#if 1 - printf("::: %d", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]); -#endif - SCAN_PLAYFIELD(x, y) { ChangeCount[x][y] = 0; @@ -11545,10 +11456,6 @@ void GameActions_RND() #endif } -#if 1 - printf(" -> %d", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]); -#endif - SCAN_PLAYFIELD(x, y) { element = Feld[x][y]; @@ -11691,10 +11598,6 @@ void GameActions_RND() } } -#if 1 - printf(" -> %d\n", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]); -#endif - #if USE_NEW_AMOEBA_CODE /* new experimental amoeba growth stuff */ if (!(FrameCounter % 8))