Sort sprites
This commit is contained in:
parent
86d2334a52
commit
b81993656a
1 changed files with 15 additions and 2 deletions
17
game.cpp
17
game.cpp
|
@ -379,13 +379,15 @@ void drawSprite(const unsigned char *sprite, int16_t x, int16_t y, Unit depth, i
|
|||
{
|
||||
for (Unit i = max(-1 * x,0); i < iTo; ++i)
|
||||
{
|
||||
if (!mask[i])
|
||||
int16_t xPos = x + i;
|
||||
|
||||
if (!mask[xPos / SUBSAMPLE])
|
||||
continue;
|
||||
|
||||
c = sampleImage(sprite,(i * UNITS_PER_SQUARE) / size,(j * UNITS_PER_SQUARE) / size);
|
||||
|
||||
if (c != 0xff)
|
||||
p.display.drawPixel(x + i,y + j,c);
|
||||
p.display.drawPixel(xPos,y + j,c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -528,6 +530,8 @@ void draw()
|
|||
|
||||
render(player.mCamera,heightFunc,pixelFunc,c);
|
||||
|
||||
Unit previousDepth;
|
||||
|
||||
for (uint8_t i = 0; i < SPRITES; ++i)
|
||||
{
|
||||
PixelInfo pos = mapToScreen(sprites[i].mPosition,sprites[i].mHeight,player.mCamera);
|
||||
|
@ -535,6 +539,15 @@ void draw()
|
|||
if (pos.depth > 0)
|
||||
drawSprite(sprite,pos.position.x * SUBSAMPLE,pos.position.y,
|
||||
pos.depth,perspectiveScale(32,pos.depth));
|
||||
|
||||
if (i != 0 && pos.depth > previousDepth)
|
||||
{
|
||||
Sprite tmp = sprites[i];
|
||||
sprites[i] = sprites[i - 1];
|
||||
sprites[i - 1] = tmp;
|
||||
}
|
||||
|
||||
previousDepth = pos.depth;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue