mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(svn r4384) -Codechange: rail drawing code
-Added a function to obtain the axis of a waypoint -Moved the waypoint layout tables from the depot layout tables into an own one -Use GetRailTileSubtype
This commit is contained in:
parent
f733f94677
commit
bdcb4bbf1d
10
rail_cmd.c
10
rail_cmd.c
@ -1304,7 +1304,7 @@ static void DrawTile_Track(TileInfo *ti)
|
|||||||
} else {
|
} else {
|
||||||
/* draw depots / waypoints */
|
/* draw depots / waypoints */
|
||||||
const DrawTrackSeqStruct *drss;
|
const DrawTrackSeqStruct *drss;
|
||||||
byte type = ti->map5 & 0x3F; // 0-3: depots, 4-5: waypoints
|
bool is_depot = GetRailTileSubtype(ti->tile) == RAIL_SUBTYPE_DEPOT;
|
||||||
|
|
||||||
if (ti->tileh != 0) DrawFoundation(ti, ti->tileh);
|
if (ti->tileh != 0) DrawFoundation(ti, ti->tileh);
|
||||||
|
|
||||||
@ -1316,7 +1316,7 @@ static void DrawTile_Track(TileInfo *ti)
|
|||||||
if (stat != NULL) {
|
if (stat != NULL) {
|
||||||
DrawTileSeqStruct const *seq;
|
DrawTileSeqStruct const *seq;
|
||||||
// emulate station tile - open with building
|
// emulate station tile - open with building
|
||||||
const DrawTileSprites *cust = &stat->renderdata[2 + (ti->map5 & 0x1)];
|
const DrawTileSprites *cust = &stat->renderdata[2 + GetWaypointAxis(ti->tile)];
|
||||||
uint32 relocation = GetCustomStationRelocation(stat, ComposeWaypointStation(ti->tile), 0);
|
uint32 relocation = GetCustomStationRelocation(stat, ComposeWaypointStation(ti->tile), 0);
|
||||||
|
|
||||||
/* We don't touch the 0x8000 bit. In all this
|
/* We don't touch the 0x8000 bit. In all this
|
||||||
@ -1346,7 +1346,7 @@ static void DrawTile_Track(TileInfo *ti)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
drss = _track_depot_layout_table[type];
|
drss = is_depot ? _track_depot_layout_table[GetRailDepotDirection(ti->tile)] : _track_waypoint_layout_table[GetWaypointAxis(ti->tile)];
|
||||||
|
|
||||||
image = drss++->image;
|
image = drss++->image;
|
||||||
/* @note This is kind of an ugly hack, as the PALETTE_MODIFIER_COLOR indicates
|
/* @note This is kind of an ugly hack, as the PALETTE_MODIFIER_COLOR indicates
|
||||||
@ -1356,7 +1356,7 @@ static void DrawTile_Track(TileInfo *ti)
|
|||||||
// adjust ground tile for desert
|
// adjust ground tile for desert
|
||||||
// (don't adjust for arctic depots, because snow in depots looks weird)
|
// (don't adjust for arctic depots, because snow in depots looks weird)
|
||||||
// type >= 4 means waypoints
|
// type >= 4 means waypoints
|
||||||
if (IsSnowRailGround(ti->tile) && (_opt.landscape == LT_DESERT || type >= 4)) {
|
if (IsSnowRailGround(ti->tile) && (_opt.landscape == LT_DESERT || !is_depot)) {
|
||||||
if (image != SPR_FLAT_GRASS_TILE) {
|
if (image != SPR_FLAT_GRASS_TILE) {
|
||||||
image += rti->snow_offset; // tile with tracks
|
image += rti->snow_offset; // tile with tracks
|
||||||
} else {
|
} else {
|
||||||
@ -1370,7 +1370,7 @@ static void DrawTile_Track(TileInfo *ti)
|
|||||||
|
|
||||||
for (; drss->image != 0; drss++) {
|
for (; drss->image != 0; drss++) {
|
||||||
DrawSpecialBuilding(
|
DrawSpecialBuilding(
|
||||||
drss->image, type < 4 ? rti->total_offset : 0, ti,
|
drss->image, is_depot ? rti->total_offset : 0, ti,
|
||||||
drss->subcoord_x, drss->subcoord_y, 0,
|
drss->subcoord_x, drss->subcoord_y, 0,
|
||||||
drss->width, drss->height, 0x17
|
drss->width, drss->height, 0x17
|
||||||
);
|
);
|
||||||
|
@ -144,6 +144,11 @@ static inline void ClearCustomWaypointSprite(TileIndex t)
|
|||||||
CLRBIT(_m[t].m3, 4);
|
CLRBIT(_m[t].m3, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline Axis GetWaypointAxis(TileIndex t)
|
||||||
|
{
|
||||||
|
return HASBIT(_m[t].m5, 0) ? AXIS_Y : AXIS_X;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef enum SignalType {
|
typedef enum SignalType {
|
||||||
SIGTYPE_NORMAL = 0, // normal signal
|
SIGTYPE_NORMAL = 0, // normal signal
|
||||||
|
@ -58,7 +58,9 @@ static const DrawTrackSeqStruct* const _track_depot_layout_table[] = {
|
|||||||
_track_depot_layout_table_1,
|
_track_depot_layout_table_1,
|
||||||
_track_depot_layout_table_2,
|
_track_depot_layout_table_2,
|
||||||
_track_depot_layout_table_3,
|
_track_depot_layout_table_3,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const DrawTrackSeqStruct* const _track_waypoint_layout_table[] = {
|
||||||
_track_waypoint_table_0,
|
_track_waypoint_table_0,
|
||||||
_track_waypoint_table_1,
|
_track_waypoint_table_1,
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user