Changeset - r399:7f34a0ef5466
[Not reviewed]
master
0 4 0
darkvater - 20 years ago 2004-11-14 14:10:03
darkvater@openttd.org
(svn r591) -newgrf: Store whole struct StationSpec in SetCustomStation(), not just the rendering data. This will be needed for variational stationspecs (pasky).
4 files changed with 25 insertions and 26 deletions:
0 comments (0 inline, 0 general)
grfspecial.c
Show inline comments
 
@@ -21,12 +21,6 @@ extern int _skip_sprites;
 
extern int _replace_sprites_count[16];
 
extern int _replace_sprites_offset[16];
 

	
 
struct StationSpec {
 
	uint32 classid;
 
	byte tiles;
 
	DrawTileSprites renderdata[8];
 
};
 

	
 
struct GRFFile {
 
	char *filename;
 
	uint32 grfid;
 
@@ -1225,10 +1219,7 @@ static void NewVehicle_SpriteGroupMappin
 
					seq->image += _cur_grffile->spritegroups[groupid].loading[0];
 
				}
 
			}
 
			/* FIXME: This means several GRF files defining new stations
 
			 * will override each other, but the stid should be GRF-specific
 
			 * instead! --pasky */
 
			SetCustomStation(stat->classid, stid, stat->renderdata, stat->tiles);
 
			SetCustomStation(stid, stat);
 
			stat->classid = 0;
 
		}
 
		return;
rail_cmd.c
Show inline comments
 
@@ -1544,7 +1544,7 @@ static void DrawTile_Track(TileInfo *ti)
 

	
 
		if (!IS_RAIL_DEPOT(m5) && IS_RAIL_WAYPOINT(m5) && _map3_lo[ti->tile]&16) {
 
			// look for customization
 
			DrawTileSprites *cust = GetCustomStation('WAYP', _map3_hi[ti->tile]);
 
			DrawTileSprites *cust = GetCustomStationRenderdata('WAYP', _map3_hi[ti->tile]);
 

	
 
			if (cust) {
 
				DrawTileSeqStruct const *seq;
 
@@ -1623,7 +1623,7 @@ void DrawTrainDepotSprite(int x, int y, 
 
void DrawWaypointSprite(int x, int y, int stat_id)
 
{
 
	// TODO: We should use supersets with cargo-id FF, if available. --pasky
 
	DrawTileSprites *cust = GetCustomStation('WAYP', stat_id);
 
	DrawTileSprites *cust = GetCustomStationRenderdata('WAYP', stat_id);
 
	DrawTileSeqStruct const *seq;
 
	uint32 ormod, img;
 

	
station.h
Show inline comments
 
@@ -108,8 +108,16 @@ typedef struct DrawTileSprites {
 

	
 
#define foreach_draw_tile_seq(idx, list) for (idx = list; ((byte) idx->delta_x) != 0x80; idx++)
 

	
 
void SetCustomStation(uint32 classid, byte stid, DrawTileSprites *data, byte tiles);
 
DrawTileSprites *GetCustomStation(uint32 classid, byte stid);
 

	
 
struct StationSpec {
 
	int globalidx;
 
	uint32 classid;
 
	byte tiles;
 
	DrawTileSprites renderdata[8];
 
};
 

	
 
void SetCustomStation(byte stid, struct StationSpec *spec);
 
DrawTileSprites *GetCustomStationRenderdata(uint32 classid, byte stid);
 
int GetCustomStationsCount(uint32 classid);
 

	
 
#endif /* STATION_H */
station_cmd.c
Show inline comments
 
@@ -964,22 +964,22 @@ uint GetStationPlatforms(Station *st, ui
 
 * file used non-contignuous station ids. --pasky */
 

	
 
static int _waypoint_highest_id = -1;
 
static DrawTileSprites _waypoint_data[256][8];
 

	
 
void SetCustomStation(uint32 classid, byte stid, DrawTileSprites *data, byte tiles)
 
static struct StationSpec _waypoint_data[256];
 

	
 
void SetCustomStation(byte stid, struct StationSpec *spec)
 
{
 
	assert(spec->classid == 'WAYP');
 
	if (stid > _waypoint_highest_id)
 
		_waypoint_highest_id = stid;
 
	memcpy(&_waypoint_data[stid], spec, sizeof(*spec));
 
}
 

	
 
DrawTileSprites *GetCustomStationRenderdata(uint32 classid, byte stid)
 
{
 
	assert(classid == 'WAYP');
 
	if (stid > _waypoint_highest_id)
 
		_waypoint_highest_id = stid;
 
	memcpy(_waypoint_data[stid], data, sizeof(DrawTileSprites) * tiles);
 
}
 

	
 
DrawTileSprites *GetCustomStation(uint32 classid, byte stid)
 
{
 
	assert(classid == 'WAYP');
 
	if (stid > _waypoint_highest_id || !_waypoint_data || !_waypoint_data[stid])
 
		return NULL;
 
	return _waypoint_data[stid];
 
	return _waypoint_data[stid].renderdata;
 
}
 

	
 
int GetCustomStationsCount(uint32 classid)
0 comments (0 inline, 0 general)