# HG changeset patch # User frosch # Date 1224350431 0 # Node ID d69ddb1a8422ce370079dd74930e01d8dbc0dc3b # Parent 2dc0a143e2daa4bbd36e9d4e7a64405a148347e5 (svn r14487) -Fix: The station picker preview did not draw child sprites. diff -r 2dc0a143e2da -r d69ddb1a8422 src/newgrf_station.cpp --- a/src/newgrf_station.cpp Sat Oct 18 14:16:29 2008 +0000 +++ b/src/newgrf_station.cpp Sat Oct 18 17:20:31 2008 +0000 @@ -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); } }