Z-Odering problem

BlitzPlus Forums/BlitzPlus Programming/Z-Odering problem

Can someone please help me with this? I am trying to implement z-ordering into my map editor to determine
where a tile should be in a map, either in the background or the foreground. I use the left mouse button to
place each tile and it`s z-depth is set depending on the current layer I am working on in the editor, either
0 or 1 (background-foreground.) When it comes to the draw rountine I simple want the tiles with a z-depth of
0 (background) to be drawn first and then the tiles with a z-depth of 1 (foreground) to be drawn on the top of
the background 0 tiles. When using the following function I can draw the background ok then the foreground ok
but when I go back to drawing more background tiles, which should appear behind any placed foreground ones they
appear on top. This is not what I want but I cannot seem to find the problem :( Any help would be great.
Here`s the function.

Phew... Thanks,
Jason.

Function DrawTiles()
For Tile.Tiles=Each Tiles
Select Tile\ZOrder
Case 0
If MapLayerZeroEnabled=True
DrawBlock TileSet,Tile\XPosition,Tile\YPosition,Tile\Number
EndIf
Case 1
If MapLayerOneEnabled=True
DrawBlock TileSet,Tile\XPosition,Tile\YPosition,Tile\Number
EndIf
End Select
Next
End Function

Are you resetting "MapLayerOneEnable" to False after you've finished drawing?

Hi Jason

could be your using drawblock? try changing it to drawimage
and set any masks using maskimage image,r,g,b.

Hope this helps!

Mr Brine

Or, use two seperate sections in the loop (that's how I'd do it)

;;;the loop;;;
while not keydown(1)

gosub backgound_tiles
gosub foreground_tiles

wend

;;;the gosubs;;;

.background_tiles
For alltile.tile=each tile

if alltile\zorder=0 then
     drawimage tile,alltile\x,alltile\y,alltile\number
endif

next
return

.foreground_tiles
For alltile.tile=each tile

if alltile\zorder=1 then
     drawimage tile,alltile\x,alltile\y,alltile\number
endif

next
return



Hopefully this should work!

Thanks guys, WoeIsMe`s solution worked in the end, cheers :)

Jason.