summaryrefslogtreecommitdiff
path: root/src/rail_cmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/rail_cmd.cpp')
-rw-r--r--src/rail_cmd.cpp132
1 files changed, 30 insertions, 102 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
index d3bb22ba1..d7632dd0d 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
@@ -1281,7 +1281,7 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
case MP_RAILWAY:
break;
case MP_STATION:
- if (!IsRailwayStation(tile)) continue;
+ if (!IsRailwayStation(tile) && !IsRailWaypoint(tile)) continue;
break;
case MP_ROAD:
if (!IsLevelCrossing(tile)) continue;
@@ -1329,14 +1329,6 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
switch (tt) {
case MP_RAILWAY:
switch (GetRailTileType(tile)) {
- case RAIL_TILE_WAYPOINT:
- if (flags & DC_EXEC) {
- /* notify YAPF about the track layout change */
- YapfNotifyTrackLayoutChange(tile, GetRailWaypointTrack(tile));
- }
- cost.AddCost(RailConvertCost(type, totype));
- break;
-
case RAIL_TILE_DEPOT:
if (flags & DC_EXEC) {
/* notify YAPF about the track layout change */
@@ -1501,9 +1493,6 @@ static CommandCost ClearTile_Track(TileIndex tile, DoCommandFlag flags)
case RAIL_TILE_DEPOT:
return RemoveTrainDepot(tile, flags);
- case RAIL_TILE_WAYPOINT:
- return RemoveTrainWaypoint(tile, flags, false);
-
default:
return CMD_ERROR;
}
@@ -1906,7 +1895,7 @@ static void DrawTile_Track(TileInfo *ti)
if (HasSignals(ti->tile)) DrawSignals(ti->tile, rails);
} else {
- /* draw depot/waypoint */
+ /* draw depot */
const DrawTileSprites *dts;
const DrawTileSeqStruct *dtss;
uint32 relocation;
@@ -1914,78 +1903,37 @@ static void DrawTile_Track(TileInfo *ti)
if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED);
- if (IsRailDepot(ti->tile)) {
- if (IsInvisibilitySet(TO_BUILDINGS)) {
- /* Draw rail instead of depot */
- dts = &_depot_invisible_gfx_table[GetRailDepotDirection(ti->tile)];
- } else {
- dts = &_depot_gfx_table[GetRailDepotDirection(ti->tile)];
- }
-
- relocation = rti->total_offset;
-
- image = dts->ground.sprite;
- if (image != SPR_FLAT_GRASS_TILE) image += rti->total_offset;
-
- /* adjust ground tile for desert
- * don't adjust for snow, because snow in depots looks weird */
- if (IsSnowRailGround(ti->tile) && _settings_game.game_creation.landscape == LT_TROPIC) {
- if (image != SPR_FLAT_GRASS_TILE) {
- image += rti->snow_offset; // tile with tracks
- } else {
- image = SPR_FLAT_SNOWY_TILE; // flat ground
- }
- }
+ if (IsInvisibilitySet(TO_BUILDINGS)) {
+ /* Draw rail instead of depot */
+ dts = &_depot_invisible_gfx_table[GetRailDepotDirection(ti->tile)];
} else {
- /* look for customization */
- const StationSpec *statspec = GetStationSpec(ti->tile);
-
- if (statspec != NULL) {
- const BaseStation *st = BaseStation::GetByTile(ti->tile);
- uint gfx = 2;
-
- if (HasBit(statspec->callbackmask, CBM_STATION_SPRITE_LAYOUT)) {
- uint16 callback = GetStationCallback(CBID_STATION_SPRITE_LAYOUT, 0, 0, statspec, st, ti->tile);
- if (callback != CALLBACK_FAILED) gfx = callback;
- }
+ dts = &_depot_gfx_table[GetRailDepotDirection(ti->tile)];
+ }
- if (statspec->renderdata == NULL) {
- dts = GetStationTileLayout(STATION_RAIL, gfx);
- } else {
- dts = &statspec->renderdata[(gfx < statspec->tiles ? gfx : 0) + GetWaypointAxis(ti->tile)];
- }
+ relocation = rti->total_offset;
- if (dts != NULL && dts->seq != NULL) {
- relocation = GetCustomStationRelocation(statspec, st, ti->tile);
+ image = dts->ground.sprite;
+ if (image != SPR_FLAT_GRASS_TILE) image += rti->total_offset;
- image = dts->ground.sprite;
- if (HasBit(image, SPRITE_MODIFIER_USE_OFFSET)) {
- image += GetCustomStationGroundRelocation(statspec, st, ti->tile);
- image += rti->custom_ground_offset;
- } else {
- image += rti->total_offset;
- }
-
- pal = dts->ground.pal;
- } else {
- goto default_waypoint;
- }
+ /* adjust ground tile for desert
+ * don't adjust for snow, because snow in depots looks weird */
+ if (IsSnowRailGround(ti->tile) && _settings_game.game_creation.landscape == LT_TROPIC) {
+ if (image != SPR_FLAT_GRASS_TILE) {
+ image += rti->snow_offset; // tile with tracks
} else {
-default_waypoint:
- /* There is no custom layout, fall back to the default graphics */
- dts = GetStationTileLayout(STATION_WAYPOINT, GetWaypointAxis(ti->tile));
- relocation = 0;
- image = dts->ground.sprite + rti->total_offset;
- if (IsSnowRailGround(ti->tile)) image += rti->snow_offset;
+ image = SPR_FLAT_SNOWY_TILE; // flat ground
}
}
DrawGroundSprite(image, GroundSpritePaletteTransform(image, pal, _drawtile_track_palette));
/* PBS debugging, draw reserved tracks darker */
- if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasDepotReservation(ti->tile) &&
- (!IsRailDepot(ti->tile) || GetRailDepotDirection(ti->tile) == DIAGDIR_SW || GetRailDepotDirection(ti->tile) == DIAGDIR_SE)) {
- DrawGroundSprite(GetWaypointAxis(ti->tile) == AXIS_X ? rti->base_sprites.single_y : rti->base_sprites.single_x, PALETTE_CRASH);
+ if (_game_mode != GM_MENU && _settings_client.gui.show_track_reservation && HasDepotReservation(ti->tile)) {
+ switch (GetRailDepotDirection(ti->tile)) {
+ case DIAGDIR_SW: DrawGroundSprite(rti->base_sprites.single_y, PALETTE_CRASH); break;
+ case DIAGDIR_SE: DrawGroundSprite(rti->base_sprites.single_x, PALETTE_CRASH); break;
+ default: break;
+ }
}
if (HasCatenaryDrawn(GetRailType(ti->tile))) DrawCatenary(ti);
@@ -2292,10 +2240,6 @@ static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode,
trackbits = DiagDirToDiagTrackBits(dir);
break;
}
-
- case RAIL_TILE_WAYPOINT:
- trackbits = GetRailWaypointBits(tile);
- break;
}
return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), red_signals);
@@ -2303,11 +2247,10 @@ static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode,
static bool ClickTile_Track(TileIndex tile)
{
- switch (GetRailTileType(tile)) {
- case RAIL_TILE_DEPOT: ShowDepotWindow(tile, VEH_TRAIN); return true;
- case RAIL_TILE_WAYPOINT: ShowWaypointWindow(Waypoint::GetByTile(tile)); return true;
- default: return false;
- }
+ if (!IsRailDepot(tile)) return false;
+
+ ShowDepotWindow(tile, VEH_TRAIN);
+ return true;
}
static void GetTileDesc_Track(TileIndex tile, TileDesc *td)
@@ -2387,10 +2330,8 @@ static void GetTileDesc_Track(TileIndex tile, TileDesc *td)
td->str = STR_RAILROAD_TRAIN_DEPOT;
break;
- case RAIL_TILE_WAYPOINT:
default:
- td->str = STR_LANDINFO_WAYPOINT;
- break;
+ NOT_REACHED();
}
}
@@ -2579,22 +2520,9 @@ static CommandCost TerraformTile_Track(TileIndex tile, DoCommandFlag flags, uint
/* allow terraforming */
return CommandCost(EXPENSES_CONSTRUCTION, was_water ? _price.clear_water : (Money)0);
- } else {
- if (_settings_game.construction.build_on_slopes && AutoslopeEnabled()) {
- switch (GetRailTileType(tile)) {
- case RAIL_TILE_WAYPOINT: {
- CommandCost cost = TestAutoslopeOnRailTile(tile, flags, z_old, tileh_old, z_new, tileh_new, GetRailWaypointBits(tile));
- if (!CmdFailed(cost)) return cost; // allow autoslope
- break;
- }
-
- case RAIL_TILE_DEPOT:
- if (AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRailDepotDirection(tile))) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
- break;
-
- default: NOT_REACHED();
- }
- }
+ } else if (_settings_game.construction.build_on_slopes && AutoslopeEnabled() &&
+ AutoslopeCheckForEntranceEdge(tile, z_new, tileh_new, GetRailDepotDirection(tile))) {
+ return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
}
return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
}