mirror of https://github.com/OpenTTD/OpenTTD
Change: Allow overbuilding station and waypoint tiles (#10618)
parent
27b40da06a
commit
bc44158f9a
|
@ -1263,7 +1263,6 @@ static void RestoreTrainReservation(Train *v)
|
||||||
static CommandCost CalculateRailStationCost(TileArea tile_area, DoCommandFlag flags, Axis axis, StationID *station, RailType rt, std::vector<Train *> &affected_vehicles, StationClassID spec_class, byte spec_index, byte plat_len, byte numtracks)
|
static CommandCost CalculateRailStationCost(TileArea tile_area, DoCommandFlag flags, Axis axis, StationID *station, RailType rt, std::vector<Train *> &affected_vehicles, StationClassID spec_class, byte spec_index, byte plat_len, byte numtracks)
|
||||||
{
|
{
|
||||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||||
bool success = false;
|
|
||||||
bool length_price_ready = true;
|
bool length_price_ready = true;
|
||||||
byte tracknum = 0;
|
byte tracknum = 0;
|
||||||
for (TileIndex cur_tile : tile_area) {
|
for (TileIndex cur_tile : tile_area) {
|
||||||
|
@ -1290,12 +1289,9 @@ static CommandCost CalculateRailStationCost(TileArea tile_area, DoCommandFlag fl
|
||||||
cost.AddCost(_price[PR_BUILD_STATION_RAIL_LENGTH]);
|
cost.AddCost(_price[PR_BUILD_STATION_RAIL_LENGTH]);
|
||||||
length_price_ready = false;
|
length_price_ready = false;
|
||||||
}
|
}
|
||||||
success = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!success) return_cmd_error(STR_ERROR_ALREADY_BUILT);
|
|
||||||
|
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1879,7 +1875,6 @@ static CommandCost FindJoiningRoadStop(StationID existing_stop, StationID statio
|
||||||
static CommandCost CalculateRoadStopCost(TileArea tile_area, DoCommandFlag flags, bool is_drive_through, bool is_truck_stop, Axis axis, DiagDirection ddir, StationID *est, RoadType rt, Money unit_cost)
|
static CommandCost CalculateRoadStopCost(TileArea tile_area, DoCommandFlag flags, bool is_drive_through, bool is_truck_stop, Axis axis, DiagDirection ddir, StationID *est, RoadType rt, Money unit_cost)
|
||||||
{
|
{
|
||||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||||
bool success = false;
|
|
||||||
/* Check every tile in the area. */
|
/* Check every tile in the area. */
|
||||||
for (TileIndex cur_tile : tile_area) {
|
for (TileIndex cur_tile : tile_area) {
|
||||||
uint invalid_dirs = 0;
|
uint invalid_dirs = 0;
|
||||||
|
@ -1898,16 +1893,9 @@ static CommandCost CalculateRoadStopCost(TileArea tile_area, DoCommandFlag flags
|
||||||
if (!is_preexisting_roadstop) {
|
if (!is_preexisting_roadstop) {
|
||||||
cost.AddCost(ret);
|
cost.AddCost(ret);
|
||||||
cost.AddCost(unit_cost);
|
cost.AddCost(unit_cost);
|
||||||
success = true;
|
|
||||||
} else if (is_preexisting_roadstop && !is_drive_through) {
|
|
||||||
/* Allow rotating non-drive through stops for free */
|
|
||||||
success = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!success) return_cmd_error(STR_ERROR_ALREADY_BUILT);
|
|
||||||
|
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -195,15 +195,8 @@ CommandCost CmdBuildRailWaypoint(DoCommandFlag flags, TileIndex start_tile, Axis
|
||||||
|
|
||||||
/* only AddCost for non-existing waypoints */
|
/* only AddCost for non-existing waypoints */
|
||||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||||
bool success = false;
|
|
||||||
for (TileIndex cur_tile : new_location) {
|
for (TileIndex cur_tile : new_location) {
|
||||||
if (!IsRailWaypointTile(cur_tile)) {
|
if (!IsRailWaypointTile(cur_tile)) cost.AddCost(_price[PR_BUILD_WAYPOINT_RAIL]);
|
||||||
cost.AddCost(_price[PR_BUILD_WAYPOINT_RAIL]);
|
|
||||||
success = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!success) {
|
|
||||||
return_cmd_error(STR_ERROR_ALREADY_BUILT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Make sure the area below consists of clear tiles. (OR tiles belonging to a certain rail station) */
|
/* Make sure the area below consists of clear tiles. (OR tiles belonging to a certain rail station) */
|
||||||
|
|
Loading…
Reference in New Issue