Ok, this mebe more complicatd then i thoughd.
I used to use a software that allowed to me change the Z-Index of a 2D image, im talking about layering.
Now, in blitzmax that is the order of my coding really, if i draw one first, and nother, the last is on top of it. Basicly, i start my code, thats all in the background, when i end my code, that is in the foreground. Now, how do i change the order? Imagine i players that i want to sort on Y axis, then draw, etc...
how do i change the order?
You'll need to draw them in the order you want them to appear in... first at the back, last at the front.
Perhaps you'll want to keep a list/array of the z-order level of each object, and as they move about, rearrange the list.
Then draw the objects by processing the list in order, where the first drawn object is farthest away.
Could i use a TList? does that take different objects? is it sortable? like, how do i sort it?
A TList is sortable (with TList.sort), but you will need to implement your own compare function if you want to sort your custom objects properly
A simple example
Graphics 640 , 480
Type tsprite
Global sprite_list:TList
Field image:timage
Field x:Float
Field y:Float
Field _color:Int[]=[255,255,255]
Field link:TLink
Function Add:tsprite(_x:Float , _y:Float,r:Int=255,g:Int=255,b:Int=255)
Local ll:tsprite = New tsprite
ll.x = _x
ll.y = _y
ll._color = [r , g , b]
If sprite_list = Null sprite_list = New TList
ll.link = Sprite_list.addlast(ll)
Return ll
End Function
Function Update()
For Local as:tsprite = EachIn sprite_list
as.draw()
Next
End Function
Method Draw()
SetColor _color[0],_color[1],_color[2]
DrawRect x , y , 32 , 32
End Method
Method Compare( other:Object )
Local s:tsprite = tsprite(other)
If s
Return y - s.y
Else
Return - 1
End If
End Method
End Type
tsprite.add(100 , 100)
tsprite.add(110 , 110)
tsprite.add(120 , 120,200,220,20)
Local mm:tsprite = tsprite.add(130 , 130,255,0,0)
Local ox:Int , oy:Int
Local x:Int , y:Int
While Not AppTerminate()
Cls
tsprite.update()
x = MouseX()
y = MouseY()
If x <> ox And y <> oy
tsprite.sprite_list.sort()
End If
mm.x = x
mm.y = y
Flip
PollSystem
Wend
I see how this works. Thanks.
What do ll and as stand for?
All you basically need to do is decouple/de-attach your layer order from your program's sourcecode order. Make like a list of `layers` which you can sort into whatever order you want and then each layer has an image associated with it. Then you go through the list and draw the images in the order of the list.