Public Sub Draw_Background_Map(Map As Map_Type, Red_Light As Long, Green_Light As Long, Blue_Light As Long, Fade As Long)
Dim X As Long, Y As Long
Dim I As Long
Dim X1 As Long, Y1 As Long
Dim X2 As Long, Y2 As Long
Dim Coordinates As Vector
Dim R As RECT
Dim Border_Size As Long
Dim Vertex_List(6) As TLVERTEX
Dim Color As Long
Border_Size = 0
R.Left = Border_Size
R.Top = Border_Size
R.Right = Fullscreen_Width - Border_Size
R.Bottom = Fullscreen_Height - Border_Size
If Red_Light <= 0 Then Red_Light = 0
If Green_Light <= 0 Then Green_Light = 0
If Blue_Light <= 0 Then Blue_Light = 0
If Fade <= 0 Then Fade = 0
If Red_Light >= 255 Then Red_Light = 255
If Green_Light >= 255 Then Green_Light = 255
If Blue_Light >= 255 Then Blue_Light = 255
If Fade >= 255 Then Fade = 255
Coordinates.X = Int(-(Map.Position.X) / TILE_WIDTH)
Coordinates.Y = Int(-(Map.Position.Y) / TILE_HEIGHT)
X1 = Coordinates.X
Y1 = Coordinates.Y
X2 = Coordinates.X + Map.Screen_Tile_Width
Y2 = Coordinates.Y + Map.Screen_Tile_Height
If X2 <= 0 Then X2 = 0
If Y2 <= 0 Then Y2 = 0
If Y2 >= Map.Height - 1 Then Y2 = Map.Height - 1
If X2 >= Map.Width - 1 Then X2 = Map.Width - 1
If X1 <= 0 Then X1 = 0
If Y1 <= 0 Then Y1 = 0
If X1 >= X2 Then X1 = X2
If Y1 >= Y2 Then Y1 = Y2
For Y = Y1 To Y2
For X = X1 To X2
If Map.Collision_Map.Response(X, Y) = EFFECT_LIGHTNING Then
Color = D3DColorRGBA(Lightning, Lightning, Lightning, Fade)
Else
Color = D3DColorRGBA(Red_Light, Green_Light, Blue_Light, Fade)
End If
If Map.Collision_Map.Response(X, Y) = COLLISION_LAVA Then
Color = D3DColorRGBA(255, 255, 255, Fade)
End If
Vertex_List(0) = Create_TLVertex(Map.Position.X + ((TILE_WIDTH * X) + 0), Map.Position.Y + ((TILE_HEIGHT * Y) + 0), 0, 1, Color, 0, 0, 0)
Vertex_List(1) = Create_TLVertex(Map.Position.X + ((TILE_WIDTH * X) + TILE_WIDTH), Map.Position.Y + ((TILE_HEIGHT * Y) + 0), 0, 1, Color, 0, 1, 0)
Vertex_List(2) = Create_TLVertex(Map.Position.X + ((TILE_WIDTH * X) + 0), Map.Position.Y + ((TILE_HEIGHT * Y) + TILE_HEIGHT), 0, 1, Color, 0, 0, 1)
Vertex_List(3) = Create_TLVertex(Map.Position.X + ((TILE_WIDTH * X) + TILE_WIDTH), Map.Position.Y + ((TILE_HEIGHT * Y) + TILE_HEIGHT), 0, 1, Color, 0, 1, 1)
If Not ((Vertex_List(4).X < R.Left) Or (Vertex_List(0).X > R.Right) Or _
(Vertex_List(4).Y < R.Top) Or (Vertex_List(0).Y > R.Bottom)) Then
Device.SetRenderState D3DRS_ALPHABLENDENABLE, True
Device.SetTexture 0, Map.Texture_List(Map.Background_Tile(X, Y))
Device.DrawPrimitiveUP D3DPT_TRIANGLESTRIP, 2, Vertex_List(0), Len(Vertex_List(0))
End If
Next X
Next Y
End Sub