(svn r4748) - Newstations: use custom sprite layout callback for waypoints as well as stations. Supports merging of adjacent waypoints if the GRF supports it (newstatsw.grf)
This commit is contained in:
		
							
								
								
									
										23
									
								
								rail_cmd.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								rail_cmd.c
									
									
									
									
									
								
							@@ -27,6 +27,8 @@
 | 
				
			|||||||
#include "rail.h"
 | 
					#include "rail.h"
 | 
				
			||||||
#include "railtypes.h" // include table for railtypes
 | 
					#include "railtypes.h" // include table for railtypes
 | 
				
			||||||
#include "newgrf.h"
 | 
					#include "newgrf.h"
 | 
				
			||||||
 | 
					#include "newgrf_callbacks.h"
 | 
				
			||||||
 | 
					#include "newgrf_station.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern uint16 _custom_sprites_base;
 | 
					extern uint16 _custom_sprites_base;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1323,17 +1325,18 @@ static void DrawTile_Track(TileInfo *ti)
 | 
				
			|||||||
			if (statspec != NULL) {
 | 
								if (statspec != NULL) {
 | 
				
			||||||
				DrawTileSeqStruct const *seq;
 | 
									DrawTileSeqStruct const *seq;
 | 
				
			||||||
				// emulate station tile - open with building
 | 
									// emulate station tile - open with building
 | 
				
			||||||
				const DrawTileSprites *cust = &statspec->renderdata[2 + GetWaypointAxis(ti->tile)];
 | 
									uint tile = 2;
 | 
				
			||||||
				uint32 relocation = GetCustomStationRelocation(statspec, ComposeWaypointStation(ti->tile), ti->tile);
 | 
									const DrawTileSprites *cust;
 | 
				
			||||||
 | 
									Station *st = ComposeWaypointStation(ti->tile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				/* We don't touch the 0x8000 bit. In all this
 | 
									uint32 relocation = GetCustomStationRelocation(statspec, st, ti->tile);
 | 
				
			||||||
				 * waypoint code, it is used to indicate that
 | 
					
 | 
				
			||||||
				 * we should offset by railtype, but we always
 | 
									if (HASBIT(statspec->callbackmask, CBM_CUSTOM_LAYOUT)) {
 | 
				
			||||||
				 * do that for custom ground sprites and never
 | 
										uint16 callback = GetStationCallback(CBID_STATION_SPRITE_LAYOUT, 0, 0, statspec, st, ti->tile);
 | 
				
			||||||
				 * for station sprites. And in the drawing
 | 
										if (callback != CALLBACK_FAILED) tile = callback;
 | 
				
			||||||
				 * code, it is used to indicate that the sprite
 | 
									}
 | 
				
			||||||
				 * should be drawn in company colors, and it's
 | 
					
 | 
				
			||||||
				 * up to the GRF file to decide that. */
 | 
									cust = &statspec->renderdata[(tile < statspec->tiles ? tile : 0) + GetWaypointAxis(ti->tile)];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				/* If there is no sprite layout, we fall back to the default waypoint graphics. */
 | 
									/* If there is no sprite layout, we fall back to the default waypoint graphics. */
 | 
				
			||||||
				if (cust != NULL && cust->seq != NULL) {
 | 
									if (cust != NULL && cust->seq != NULL) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user