1
0
Fork 0

(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)

release/0.5
peter1138 2006-05-06 09:40:12 +00:00
parent 0197d7d683
commit b7e0ca4453
1 changed files with 13 additions and 10 deletions

View File

@ -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) {