(svn r4719) - Newstations: instead of drawing nothing, fall back to the default sprite layout if a station layout specifies so.

This commit is contained in:
peter1138 2006-05-03 20:35:41 +00:00
parent 6b01384faf
commit 76411cef63
3 changed files with 22 additions and 27 deletions

View File

@ -810,12 +810,9 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
uint seq_count = 0; uint seq_count = 0;
PalSpriteID ground_sprite; PalSpriteID ground_sprite;
dts->seq = NULL;
ground_sprite = grf_load_dword(&buf); ground_sprite = grf_load_dword(&buf);
if (ground_sprite == 0) { if (ground_sprite == 0) continue;
static const DrawTileSeqStruct empty = {0x80, 0, 0, 0, 0, 0, 0};
dts->seq = ∅
continue;
}
if (HASBIT(ground_sprite, 31)) { if (HASBIT(ground_sprite, 31)) {
// Bit 31 indicates that we should use a custom sprite. // Bit 31 indicates that we should use a custom sprite.
@ -825,7 +822,6 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
dts->ground_sprite = ground_sprite; dts->ground_sprite = ground_sprite;
} }
dts->seq = NULL;
while (buf < *bufp + len) { while (buf < *bufp + len) {
DrawTileSeqStruct *dtss; DrawTileSeqStruct *dtss;
@ -861,15 +857,11 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
DrawTileSeqStruct const *sdtss = sdts->seq; DrawTileSeqStruct const *sdtss = sdts->seq;
int seq_count = 0; int seq_count = 0;
dts->ground_sprite = sdts->ground_sprite;
if (dts->ground_sprite == 0) {
static const DrawTileSeqStruct empty = {0x80, 0, 0, 0, 0, 0, 0};
dts->seq = &empty;
continue;
}
dts->seq = NULL; dts->seq = NULL;
while (1) { dts->ground_sprite = sdts->ground_sprite;
if (dts->ground_sprite == 0) continue;
while (true) {
DrawTileSeqStruct *dtss; DrawTileSeqStruct *dtss;
// no relative bounding box support // no relative bounding box support

View File

@ -1335,6 +1335,8 @@ static void DrawTile_Track(TileInfo *ti)
* should be drawn in company colors, and it's * should be drawn in company colors, and it's
* up to the GRF file to decide that. */ * up to the GRF file to decide that. */
/* If there is no sprite layout, we fall back to the default waypoint graphics. */
if (cust != NULL && cust->seq != NULL) {
image = cust->ground_sprite; image = cust->ground_sprite;
image += (image < _custom_sprites_base) ? rti->total_offset : rti->custom_ground_offset; image += (image < _custom_sprites_base) ? rti->total_offset : rti->custom_ground_offset;
@ -1352,6 +1354,7 @@ static void DrawTile_Track(TileInfo *ti)
return; return;
} }
} }
}
drss = is_depot ? _track_depot_layout_table[GetRailDepotDirection(ti->tile)] : _track_waypoint_layout_table[GetWaypointAxis(ti->tile)]; drss = is_depot ? _track_depot_layout_table[GetRailDepotDirection(ti->tile)] : _track_waypoint_layout_table[GetWaypointAxis(ti->tile)];

View File

@ -1996,7 +1996,7 @@ static void DrawTile_Station(TileInfo *ti)
} }
} }
if (t == NULL) t = &_station_display_datas[GetStationGfx(ti->tile)]; if (t == NULL || t->seq == NULL) t = &_station_display_datas[GetStationGfx(ti->tile)];
image = t->ground_sprite; image = t->ground_sprite;
if (image & PALETTE_MODIFIER_COLOR) image |= image_or_modificator; if (image & PALETTE_MODIFIER_COLOR) image |= image_or_modificator;