if (redraw_mask & REDRAW_FIELD)
{
+#if 0
+ printf("::: REDRAW_FIELD\n");
+#endif
+
if (game_status != GAME_MODE_PLAYING ||
redraw_mask & REDRAW_FROM_BACKBUFFER)
{
if (redraw_mask & REDRAW_TILES)
{
+#if 0
+ printf("::: REDRAW_TILES\n");
+#endif
+
for (x = 0; x < SCR_FIELDX; x++)
for (y = 0 ; y < SCR_FIELDY; y++)
if (redraw[redraw_x1 + x][redraw_y1 + y])
}
}
-void ChangeScreenModeIfNeeded()
+void ChangeViewportPropertiesIfNeeded()
{
- if (global.screen.width == WIN_XSIZE &&
- global.screen.height == WIN_YSIZE)
- return;
+ int *door_1_x = &DX;
+ int *door_1_y = &DY;
+ int *door_2_x = (game_status == GAME_MODE_EDITOR ? &EX : &VX);
+ int *door_2_y = (game_status == GAME_MODE_EDITOR ? &EY : &VY);
+ int gfx_game_mode = (game_status == GAME_MODE_PLAYING ||
+ game_status == GAME_MODE_EDITOR ? game_status :
+ GAME_MODE_MAIN);
- WIN_XSIZE = global.screen.width;
- WIN_YSIZE = global.screen.height;
+ if (viewport.window.width != WIN_XSIZE ||
+ viewport.window.height != WIN_YSIZE)
+ {
+ WIN_XSIZE = viewport.window.width;
+ WIN_YSIZE = viewport.window.height;
- InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen);
- InitGfxBuffers();
+ InitVideoBuffer(WIN_XSIZE, WIN_YSIZE, DEFAULT_DEPTH, setup.fullscreen);
+ InitGfxBuffers();
#if 1
- SetDrawDeactivationMask(REDRAW_NONE);
- SetDrawBackgroundMask(REDRAW_FIELD);
+ SetDrawDeactivationMask(REDRAW_NONE);
+ SetDrawBackgroundMask(REDRAW_FIELD);
- // RedrawBackground();
+ // RedrawBackground();
#endif
+ }
+
+ if (viewport.playfield[gfx_game_mode].width != SCR_FIELDX ||
+ viewport.playfield[gfx_game_mode].height != SCR_FIELDY ||
+ viewport.door_1[gfx_game_mode].x != *door_1_x ||
+ viewport.door_1[gfx_game_mode].y != *door_1_y ||
+ viewport.door_2[gfx_game_mode].x != *door_2_x ||
+ viewport.door_2[gfx_game_mode].y != *door_2_y)
+ {
+ SCR_FIELDX = viewport.playfield[gfx_game_mode].width;
+ SCR_FIELDY = viewport.playfield[gfx_game_mode].height;
+
+ *door_1_x = viewport.door_1[gfx_game_mode].x;
+ *door_1_y = viewport.door_1[gfx_game_mode].y;
+ *door_2_x = viewport.door_2[gfx_game_mode].x;
+ *door_2_y = viewport.door_2[gfx_game_mode].y;
+
+ InitGfxBuffers();
+
+ if (gfx_game_mode == GAME_MODE_MAIN)
+ {
+ InitGadgets();
+ InitToons();
+ }
+ }
}