Browse Source

Rework tile handling. This possibly breaks deushax pretty rudely.

legacy
Sam Hocevar sam 14 years ago
parent
commit
b0ded399f6
2 changed files with 7 additions and 7 deletions
  1. +1
    -0
      src/scene.cpp
  2. +6
    -7
      src/tileset.cpp

+ 1
- 0
src/scene.cpp View File

@@ -96,6 +96,7 @@ void Scene::AddTile(uint32_t code, int x, int y, int z, int o)
if ((data->ntiles % 1024) == 0)
data->tiles = (Tile *)realloc(data->tiles,
(data->ntiles + 1024) * sizeof(Tile));
/* FIXME: this sorting only works for a 45-degree camera */
data->tiles[data->ntiles].prio = -y - 2 * 32 * z + (o ? 0 : 32);
data->tiles[data->ntiles].code = code;
data->tiles[data->ntiles].x = x;


+ 6
- 7
src/tileset.cpp View File

@@ -156,23 +156,22 @@ void TileSet::BlitTile(uint32_t id, int x, int y, int z, int o)
float ty = data->ty * ((id & 0xffff) / data->nw);
float dilate = data->dilate;

int off = o ? data->h : 0;
int dx = data->w;
int dy = data->h * 38 / 32; /* Magic... fix this one day */
int dy2 = data->h * 70 / 32;
int dy = o ? 0 : data->h;
int dz = o ? data->h : 0;

if (!data->img)
{
glBindTexture(GL_TEXTURE_2D, data->texture);
glBegin(GL_QUADS);
glTexCoord2f(tx, ty);
glVertex3f(x, dilate * (y - dy - off), dilate * (z + off));
glVertex3f(x, dilate * (y + dy), dilate * (z + dz));
glTexCoord2f(tx + data->tx, ty);
glVertex3f(x + dx, dilate * (y - dy - off), dilate * (z + off));
glVertex3f(x + dx, dilate * (y + dy), dilate * (z + dz));
glTexCoord2f(tx + data->tx, ty + data->ty);
glVertex3f(x + dx, dilate * (y - dy2), dilate * z);
glVertex3f(x + dx, dilate * y, dilate * z);
glTexCoord2f(tx, ty + data->ty);
glVertex3f(x, dilate * (y - dy2), dilate * z);
glVertex3f(x, dilate * y, dilate * z);
glEnd();
}
}


Loading…
Cancel
Save