Mercurial > hg > openttd
diff src/newgrf_station.cpp @ 10256:c0307c0a126c draft
(svn r14487) -Fix: The station picker preview did not draw child sprites.
author | frosch <frosch@openttd.org> |
---|---|
date | Sat, 18 Oct 2008 17:20:31 +0000 (2008-10-18) |
parents | 39cf8eebfda5 |
children | f8ae3c876003 |
line wrap: on
line diff
--- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -27,6 +27,7 @@ #include "functions.h" #include "tunnelbridge_map.h" #include "rail_map.h" +#include "spritecache.h" #include "table/sprites.h" #include "table/strings.h" @@ -811,8 +812,9 @@ DrawSprite(image, PAL_NONE, x, y); + Point child_offset = {0, 0}; + foreach_draw_tile_seq(seq, sprites->seq) { - Point pt; image = seq->image.sprite; if (HasBit(image, SPRITE_MODIFIER_USE_OFFSET)) { image += rti->total_offset; @@ -832,8 +834,15 @@ } if ((byte)seq->delta_z != 0x80) { - pt = RemapCoords(seq->delta_x, seq->delta_y, seq->delta_z); + Point pt = RemapCoords(seq->delta_x, seq->delta_y, seq->delta_z); DrawSprite(image, pal, x + pt.x, y + pt.y); + + const Sprite *spr = GetSprite(image & SPRITE_MASK, ST_NORMAL); + child_offset.x = pt.x + spr->x_offs; + child_offset.y = pt.y + spr->y_offs; + } else { + /* For stations and original spritelayouts delta_x and delta_y are signed */ + DrawSprite(image, pal, x + child_offset.x + seq->delta_x, y + child_offset.y + seq->delta_y); } }