#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
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);
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]))
ResetGfxAnimation(x, y);
}
-#if 1
- printf(" -> %d\n", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]);
-#endif
-
InitBeltMovement();
for (i = 0; i < MAX_PLAYERS; i++)
if (!local_player->LevelSolved_SaveScore)
{
- FadeOut(REDRAW_FIELD);
-
game_status = GAME_MODE_MAIN;
DrawMainMenu();
}
else
{
- FadeOut(REDRAW_FIELD);
-
game_status = GAME_MODE_MAIN;
if (raise_level)
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)
}
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();
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))
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.
{
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)
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)
}
}
-#if 1
- printf("::: %d", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]);
-#endif
-
SCAN_PLAYFIELD(x, y)
{
ChangeCount[x][y] = 0;
#endif
}
-#if 1
- printf(" -> %d", GfxFrame[DEBUG_GFXFRAME_X][DEBUG_GFXFRAME_Y]);
-#endif
-
SCAN_PLAYFIELD(x, y)
{
element = Feld[x][y];
}
}
-#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))