(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:
		
							
								
								
									
										20
									
								
								newgrf.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								newgrf.c
									
									
									
									
									
								
							@@ -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 = ∅
 | 
					 | 
				
			||||||
						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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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)];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user