I've got myself an isometric engine partially written. Here's the blitting routine.
How do I figure out the square location of the mouse ? (FYI, the 1 in the 3rd array value is a placeholder for the z-axis)Code:Private Sub BitBltMap() Dim TempX As Integer Dim TempY As Integer On Error Resume Next TacPic.Cls For Y = 1 To 22 For X = 0 To 16 TempX = ((XOffSet + Y) + (YOffSet + (X - (MapYSize \ 2)))) TempY = ((XOffSet + Y) - (YOffSet + (X - (MapYSize \ 2)))) If Not TempX < 1 And Not TempY < 1 And Not TempX > MapXSize And Not TempY > MapYSize Then BitBlt TacPic.hDC, (X * 40) - 20, (Y * 20) - 20, 40, 19, TileSource.hDC, (Map(TempX, TempY, 1) - 1) * 40, 19, vbSrcAnd BitBlt TacPic.hDC, (X * 40) - 20, (Y * 20) - 20, 40, 19, TileSource.hDC, (Map(TempX, TempY, 1) - 1) * 40, 0, vbSrcPaint End If Next X For X = 1 To 16 TempX = ((XOffSet + Y) + (YOffSet + (X - (MapYSize \ 2)))) TempY = ((XOffSet + Y) - (YOffSet + (X - (MapYSize \ 2)))) If Not TempX - 1 < 1 And Not TempY < 1 And Not TempX - 1 > MapXSize And Not TempY > MapYSize Then BitBlt TacPic.hDC, (X * 40) - 40, (Y * 20) - 30, 40, 19, TileSource.hDC, (Map(TempX - 1, TempY, 1) - 1) * 40, 19, vbSrcAnd BitBlt TacPic.hDC, (X * 40) - 40, (Y * 20) - 30, 40, 19, TileSource.hDC, (Map(TempX - 1, TempY, 1) - 1) * 40, 0, vbSrcPaint End If Next X Next Y End Sub
Btw I'll be converting over to Direct Draw soon enough, don't worry.
-Git





Reply With Quote