static void DrawFrame(int Delta);
-static void ReStretch();
+static void ReStretch(void);
void DrawField(int X, int Y);
void DrawFieldAnimated(int X, int Y);
void DrawFieldNoAnimated(int X, int Y);
-void DrawFrameIfNeeded()
+void DrawFrameIfNeeded(void)
{
DrawFrame(0);
- /* !!! CHECK THIS !!! */
-#if 1
+ // !!! CHECK THIS !!!
if (! menBorder)
DrawFrame(1);
-#endif
}
-void DisplayLevel()
+void DisplayLevel(void)
{
int X, Y;
return;
ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE);
-#if 1
ClearRectangle(bitmap_db_field_sp, 0, 0, FXSIZE, FYSIZE);
-#else
- ClearRectangle(bitmap_db_field_sp, 0, 0,
- MAX_BUF_XSIZE * TILEX, MAX_BUF_YSIZE * TILEY);
-#endif
-#if 1
SetDisplayRegion();
-#endif
DrawFrameIfNeeded();
}
}
-void Form_Load()
+void Form_Load(void)
{
InitGlobals();
RX = FieldWidth - Delta;
BY = FieldHeight - Delta;
- DrawImage(LX, tY, imgFrameCorner);
- DrawImage(LX, BY, imgFrameCorner);
- DrawImage(RX, tY, imgFrameCorner);
- DrawImage(RX, BY, imgFrameCorner);
+ DrawImage(LX, tY, (Delta > 0 ? imgFrameCorner : aniSpace));
+ DrawImage(LX, BY, (Delta > 0 ? imgFrameCorner : aniSpace));
+ DrawImage(RX, tY, (Delta > 0 ? imgFrameCorner : aniSpace));
+ DrawImage(RX, BY, (Delta > 0 ? imgFrameCorner : aniSpace));
for (i = LX + 1; i <= RX - 1; i++)
{
- DrawImage(i, tY, imgFrameHorizontal);
- DrawImage(i, BY, imgFrameHorizontal);
+ DrawImage(i, tY, (Delta > 0 ? imgFrameHorizontal : aniSpace));
+ DrawImage(i, BY, (Delta > 0 ? imgFrameHorizontal : aniSpace));
}
for (i = tY + 1; i <= BY - 1; i++)
{
- DrawImage(LX, i, imgFrameVertical);
- DrawImage(RX, i, imgFrameVertical);
+ DrawImage(LX, i, (Delta > 0 ? imgFrameVertical : aniSpace));
+ DrawImage(RX, i, (Delta > 0 ? imgFrameVertical : aniSpace));
+ }
+
+ if (Delta > 0)
+ {
+ // ...
+ // ClearRectangle(bitmap_db_field_sp,
}
}
-static void RestoreFrame()
+static void RestoreFrame(void)
{
int i, LX, tY, RX, BY;
}
}
-void SetDisplayRegion()
+void SetDisplayRegion(void)
{
if (! menBorder)
{
}
}
-void menPlay_Click()
+void menPlay_Click(void)
{
bPlaying = True;
ReStretch();
subMainGameLoop_Init();
-
-#if 1
- return;
-#endif
-
- bPlaying = False;
-
- subFetchAndInitLevel();
}
-static void ReStretch()
+static void ReStretch(void)
{
if (LevelLoaded)
{
ScrollTo(ScreenScrollXPos, ScreenScrollYPos);
}
-void SetScrollEdges()
+void SetScrollEdges(void)
{
-#if 1
- int border_offset = (menBorder ? 1 : 2);
+ int border1_offset = (menBorder ? 1 : 2);
+ int border2_offset = (menBorder ? 0 : TILESIZE / 2);
+ // scroll correction for border frame (1 tile) or border element (2 tiles)
ScrollMinX = 0;
ScrollMinY = 0;
- ScrollMaxX = (DisplayMaxX + border_offset) * BaseWidth - SXSIZE;
- ScrollMaxY = (DisplayMaxY + border_offset) * BaseWidth - SYSIZE;
-
-#if 1
- if (!menBorder)
- {
- ScrollMinX += TILEX / 2;
- ScrollMinY += TILEY / 2;
- ScrollMaxX -= TILEX / 2;
- ScrollMaxY -= TILEY / 2;
- }
-#if 1
- {
- ScrollMinX -= game_sp.scroll_xoffset;
- ScrollMaxX -= game_sp.scroll_xoffset;
- ScrollMinY -= game_sp.scroll_yoffset;
- ScrollMaxY -= game_sp.scroll_yoffset;
- }
-#else
- if (1)
- {
- ScrollMinX -= TILEX / 2;
- ScrollMaxX -= TILEX / 2;
- ScrollMinY -= TILEY / 2;
- ScrollMaxY -= TILEY / 2;
- }
-#endif
-#else
- if (!menBorder)
- {
- ScrollMinX += TILEX / 2;
- ScrollMinY += TILEY / 2;
- ScrollMaxX -= TILEX / 2;
- ScrollMaxY -= TILEY / 2;
- }
-#endif
-
-#else
- ScrollMinX = (int)(DisplayMinX - 0.5) * BaseWidth;
- ScrollMinY = (int)(DisplayMinY - 0.5) * BaseWidth;
- ScrollMaxX = (int)(DisplayMaxX + 1.5) * BaseWidth - SXSIZE;
- ScrollMaxY = (int)(DisplayMaxY + 1.5) * BaseWidth - SYSIZE;
-#endif
-
-#if 1
- printf("::: (%ld, %ld), (%ld, %ld) -> (%d, %d), (%d, %d)\n",
- DisplayMinX, DisplayMinY, DisplayMaxX, DisplayMaxY,
- ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY);
-#endif
+ ScrollMaxX = (DisplayMaxX + border1_offset - SCR_FIELDX) * TILEX;
+ ScrollMaxY = (DisplayMaxY + border1_offset - SCR_FIELDY) * TILEY;
+
+ // scroll correction for border element (half tile on left and right side)
+ ScrollMinX += border2_offset;
+ ScrollMinY += border2_offset;
+ ScrollMaxX -= border2_offset;
+ ScrollMaxY -= border2_offset;
+
+ // scroll correction for even number of visible tiles (half tile shifted)
+ ScrollMinX -= game_sp.scroll_xoffset;
+ ScrollMaxX -= game_sp.scroll_xoffset;
+ ScrollMinY -= game_sp.scroll_yoffset;
+ ScrollMaxY -= game_sp.scroll_yoffset;
}
void DrawField(int X, int Y)
break;
default:
-#if 1
DrawField(X, Y);
-#else
- if (Tmp < fiFirst || Tmp > fiLast)
- Tmp = fiSpace;
-
- if (Tmp == fiRAM ||
- Tmp == fiHardWare ||
- Tmp == fiBug ||
- Tmp == fiWallSpace)
- Tmp = DisPlayField[tsi];
-
- subCopyImageToScreen(tsi, fiGraphic[Tmp]);
-
- if (Tmp != fiSpace &&
- Tmp != fiSnikSnak &&
- Tmp != fiElectron)
- GfxGraphic[X][Y] = fiGraphic[Tmp];
-#endif
break;
}
}