diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-28 23:14:18 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-10-28 23:14:18 +0000 |
| commit | a33870845628fea75c96e4b3acebca0a2cd10f7a (patch) | |
| tree | a34ed282e9acc39091aec7fe2af4adef93aa8fa5 /src/game | |
| parent | dab34697e79f5d6a97462b24249ef7c5b0f1813a (diff) | |
| download | zcatch-a33870845628fea75c96e4b3acebca0a2cd10f7a.tar.gz zcatch-a33870845628fea75c96e4b3acebca0a2cd10f7a.zip | |
fixed support for flipped tiles
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/client/mapres_tilemap.cpp | 34 | ||||
| -rw-r--r-- | src/game/game.h | 2 |
2 files changed, 22 insertions, 14 deletions
diff --git a/src/game/client/mapres_tilemap.cpp b/src/game/client/mapres_tilemap.cpp index 961fe7fc..822e2d8c 100644 --- a/src/game/client/mapres_tilemap.cpp +++ b/src/game/client/mapres_tilemap.cpp @@ -60,28 +60,36 @@ void tilemap_render(float scale, int fg) int c = mx + my*tmap->width; unsigned char d = data[c*2]; + unsigned char f = data[c*2+1]; if(d) { - /* - gfx_quads_setsubset( - (d%16)/16.0f*s+frac, - (d/16)/16.0f*s+frac, - ((d%16)/16.0f+1.0f/16.0f)*s-frac, - ((d/16)/16.0f+1.0f/16.0f)*s-frac); - */ - int tx = d%16; int ty = d/16; int px0 = tx*(1024/16); int py0 = ty*(1024/16); int px1 = (tx+1)*(1024/16)-1; int py1 = (ty+1)*(1024/16)-1; + + float u0 = nudge + px0/texsize+frac; + float v0 = nudge + py0/texsize+frac; + float u1 = nudge + px1/texsize+frac; + float v1 = nudge + py1/texsize+frac; + + if(f&TILEFLAG_VFLIP) + { + float tmp = u0; + u0 = u1; + u1 = tmp; + } - gfx_quads_setsubset( - nudge + px0/texsize+frac, - nudge + py0/texsize+frac, - nudge + px1/texsize-frac, - nudge + py1/texsize-frac); + if(f&TILEFLAG_HFLIP) + { + float tmp = v0; + v0 = v1; + v1 = tmp; + } + + gfx_quads_setsubset(u0,v0,u1,v1); gfx_quads_drawTL(x*scale, y*scale, scale, scale); } diff --git a/src/game/game.h b/src/game/game.h index 4fa22c08..62d67cb7 100644 --- a/src/game/game.h +++ b/src/game/game.h @@ -109,7 +109,7 @@ inline bool col_check_point(vec2 p) { return col_check_point(p.x, p.y); } struct mapres_entity { int x, y; - int *data; + int data[1]; }; struct mapres_spawnpoint |