# Bogdan Tatarov

Member

5

108 Neutral

• Rank
Newbie
1. ## Mahjong based tile perspective

I was finally able to solve it with ordering without any hacks. Here's how (if anyone needs it):   1. Get the tiles for each layer (z axis) 2. Get the ones that are free (the ones that do not intersect half way through with other tiles) 3. Sort the free ones right to left, top to bottom and insert them in an array with ordered ones 4. Remove the free ones from the array 5. Repeat step 2 until there are no tiles left. 6. Reverse the array with the ordered tiles.   Works like a charm.
2. ## Mahjong based tile perspective

There are two problems with that solution: 1. There is an animation at the beginning that "draws" the level where tiles fly from all the corners of the screen. 2. I need to implement the same solution for the level editor. It may be a bit slow to re-render the entire scene every time new tile is moved/added but it gets the job done.
3. ## Mahjong based tile perspective

I may be missing something really simple but given example 1 it will render A before B as its Y is lower. If I render top to bottom -> right to left everything looks okay except for situations like example 2.
4. ## Mahjong based tile perspective

Yes, that was what I thought at first (rendering right to left, top to bottom) but in this particular case the left tile is rendered before the right because its Y is smaller (assuming I'm working with top-left orientation). Just to say that if the tile is at X = 5, Y = 6, then it's rendered at X = 5, Y = 6 and X = 5, Y = 7.
5. ## Mahjong based tile perspective

I'm building a simple Mahjong based game in Lua. I'm adding a simple perspective to my tiles on the bottom-left edges. I can successfully generate the level in proper tile order if tiles don't touch half-way using the following code: table.sort(self.tiles, function(tile1, tile2) if tile1.level_layer == tile2.level_layer then if tile1.level_y == tile2.level_y then return (tile1.level_x - tile2.level_x) > 0 else return (tile1.level_y - tile2.level_y) < 0 end else return (tile1.level_layer - tile2.level_layer) < 0 end end )     It works like a charm. However when I start implementing the half-way touching, everything fails. For example I cannot implement a solution for the following problem:     In example 1 is the way it should be rendered, but it gets rendered as example 2. Is there an easy way to implement such perspective?