(svn r581) -newgrf: Basic support for new stations - only waypoints supported now and only

the first custom one can be placed (no selector GUI, coming soon). This
also moves some global variables to {struct GRFFile} and reorders which
actions are processed in what stage, to get it all working together --
(pasky)
This commit is contained in:
celestar
2004-11-14 09:07:15 +00:00
parent a9a852a4d6
commit eb50427670
7 changed files with 383 additions and 98 deletions

View File

@@ -957,6 +957,38 @@ uint GetStationPlatforms(Station *st, uint tile)
}
/* TODO: Multiple classes! */
/* FIXME: Also, we should actually allocate the station id (but
* SetCustomStation() needs to be able to override an existing custom station
* as well) on our own. This would also prevent possible weirdness if some GRF
* 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)
{
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];
}
int GetCustomStationsCount(uint32 classid)
{
assert(classid == 'WAYP');
return _waypoint_highest_id + 1;
}
static int32 RemoveRailroadStation(Station *st, TileIndex tile, uint32 flags)
{
int w,h;