#include "mm_tools.h"
-void ClearWindow()
+void SetDrawtoField_MM(int mode)
+{
+ int full_xsize = lev_fieldx * TILESIZE_VAR;
+ int full_ysize = lev_fieldy * TILESIZE_VAR;
+
+ // distance (delta) from screen border (SX/SY) to centered level playfield
+ dSX = (full_xsize < SXSIZE ? (SXSIZE - full_xsize) / 2 : 0);
+ dSY = (full_ysize < SYSIZE ? (SYSIZE - full_ysize) / 2 : 0);
+
+ // for convenience, absolute screen position to centered level playfield
+ cSX = SX + dSX;
+ cSY = SY + dSY;
+ cSX2 = SX + dSX + 2; // including playfield border
+ cSY2 = SY + dSY + 2; // including playfield border
+
+ if (mode == DRAW_TO_BACKBUFFER)
+ {
+ cFX = FX + dSX;
+ cFY = FY + dSY;
+ }
+
+ SetTileCursorSXSY(cSX, cSY);
+}
+
+void ClearWindow(void)
{
ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
- SetDrawtoField(DRAW_BACKBUFFER);
+ SetDrawtoField(DRAW_TO_BACKBUFFER);
+ SetDrawtoField_MM(DRAW_TO_BACKBUFFER);
redraw_mask |= REDRAW_FIELD;
}
getGraphicSource(graphic, frame, &bitmap, &src_x, &src_y);
BlitBitmap(bitmap, drawto_field, src_x, src_y, TILEX, TILEY,
- FX + x * TILEX, FY + y * TILEY);
+ cFX + x * TILEX, cFY + y * TILEY);
}
void DrawGraphic_MM(int x, int y, int graphic)
}
#endif
- DrawGraphicExt_MM(drawto_field, FX + x*TILEX, FY + y*TILEY, graphic);
+ DrawGraphicExt_MM(drawto_field, cFX + x * TILEX, cFY + y * TILEY, graphic);
MarkTileDirty(x, y);
}
}
#endif
- DrawGraphicThruMaskExt_MM(drawto_field, FX + x * TILEX, FY + y * TILEY,
+ DrawGraphicThruMaskExt_MM(drawto_field, cFX + x * TILEX, cFY + y * TILEY,
graphic);
MarkTileDirty(x,y);
void DrawMiniGraphic_MM(int x, int y, int graphic)
{
- DrawMiniGraphicExt_MM(drawto, SX + x * MINI_TILEX, SY + y * MINI_TILEY,
+ DrawMiniGraphicExt_MM(drawto, cSX + x * MINI_TILEX, cSY + y * MINI_TILEY,
graphic);
MarkTileDirty(x / 2, y / 2);
}
-void getMicroGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
+#if 0
+static void getMicroGraphicSource(int graphic, Bitmap **bitmap, int *x, int *y)
{
getSizedGraphicSource(graphic, 0, TILESIZE / 4, bitmap, x, y);
}
+#endif
void DrawMiniGraphicExt_MM(DrawBuffer *d, int x, int y, int graphic)
{
src_x += cx;
src_y += cy;
- dest_x = FX + x * TILEX + dx;
- dest_y = FY + y * TILEY + dy;
+ dest_x = cFX + x * TILEX + dx;
+ dest_y = cFY + y * TILEY + dy;
#if DEBUG
if (!IN_SCR_FIELD(x,y))
DrawElement_MM(x, y, element);
}
-void DrawLevel_MM()
+void DrawLevel_MM(void)
{
int x,y;
for (i = 0; i < 4; i++)
{
- int dest_x = SX + x * TILEX + MINI_TILEX * (i % 2);
- int dest_y = SY + y * TILEY + MINI_TILEY * (i / 2);
+ int dest_x = cSX + x * TILEX + MINI_TILEX * (i % 2);
+ int dest_y = cSY + y * TILEY + MINI_TILEY * (i / 2);
if (!((1 << i) & draw_mask))
continue;
int frame;
Bitmap *bitmap;
int src_x, src_y;
- int dst_x = SX + x * TILEX + (i % 2) * MINI_TILEX;
- int dst_y = SY + y * TILEY + (i / 2) * MINI_TILEY;
+ int dst_x = cSX + x * TILEX + (i % 2) * MINI_TILEX;
+ int dst_y = cSY + y * TILEY + (i / 2) * MINI_TILEY;
if (bit_mask & (1 << i))
{
DrawGraphic_MM(x, y, el2gfx(element));
}
-void DrawMicroWalls_MM(int x, int y, int element)
+#if 0
+static void DrawMicroWalls_MM(int x, int y, int element)
{
Bitmap *bitmap;
int graphic = el2gfx(WALL_BASE(element));
}
}
-void DrawMicroElement_MM(int x, int y, int element)
+static void DrawMicroElement_MM(int x, int y, int element)
{
Bitmap *bitmap;
int graphic = el2gfx(element);
MICROLEV_XPOS + x * MICRO_TILEX, MICROLEV_YPOS + y * MICRO_TILEY);
}
-void DrawMicroLevelExt_MM(int xpos, int ypos)
+static void DrawMicroLevelExt_MM(int xpos, int ypos)
{
int x, y;
redraw_mask |= REDRAW_FIELD;
}
+#endif
void DrawMiniLevel_MM(int size_x, int size_y, int scroll_x, int scroll_y)
{
redraw_mask |= REDRAW_FIELD;
}
-int REQ_in_range(int x, int y)
+#if 0
+static int REQ_in_range(int x, int y)
{
if (y > DY + 249 && y < DY + 278)
{
return 0;
}
+#endif
Pixel ReadPixel(DrawBuffer *bitmap, int x, int y)
{
}
}
-void RedrawPlayfield_MM()
+void RedrawPlayfield_MM(void)
{
DrawLevel_MM();
DrawLaser_MM();