|
@@ -263,22 +263,26 @@ CommandCost CmdBuildBridge(DoCommandFlag
|
|
|
|
|
|
RailType railtype = INVALID_RAILTYPE;
|
|
|
RoadType roadtype = INVALID_ROADTYPE;
|
|
|
ExpensesType expensestype = EXPENSES_CONSTRUCTION;
|
|
|
|
|
|
if (!IsValidTile(tile_start)) return_cmd_error(STR_ERROR_BRIDGE_THROUGH_MAP_BORDER);
|
|
|
|
|
|
/* type of bridge */
|
|
|
switch (transport_type) {
|
|
|
case TRANSPORT_ROAD:
|
|
|
expensestype = EXPENSES_T_ROAD_CON;
|
|
|
roadtype = (RoadType)road_rail_type;
|
|
|
if (!ValParamRoadType(roadtype)) return CMD_ERROR;
|
|
|
break;
|
|
|
|
|
|
case TRANSPORT_RAIL:
|
|
|
expensestype = EXPENSES_T_TRAIN_CON;
|
|
|
railtype = (RailType)road_rail_type;
|
|
|
if (!ValParamRailtype(railtype)) return CMD_ERROR;
|
|
|
break;
|
|
|
|
|
|
case TRANSPORT_WATER:
|
|
|
expensestype = EXPENSES_T_SHIP_CON;
|
|
|
break;
|
|
|
|
|
|
default:
|
|
@@ -336,7 +340,7 @@ CommandCost CmdBuildBridge(DoCommandFlag
|
|
|
if (transport_type == TRANSPORT_WATER && (tileh_start == SLOPE_FLAT || tileh_end == SLOPE_FLAT)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
|
|
|
if (z_start != z_end) return_cmd_error(STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT);
|
|
|
|
|
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
|
|
CommandCost cost(expensestype);
|
|
|
Owner owner;
|
|
|
bool is_new_owner;
|
|
|
RoadType road_rt = INVALID_ROADTYPE;
|
|
@@ -414,6 +418,7 @@ CommandCost CmdBuildBridge(DoCommandFlag
|
|
|
CommandCost ret = Command<CMD_LANDSCAPE_CLEAR>::Do(flags, tile_start);
|
|
|
if (ret.Failed()) return ret;
|
|
|
cost = ret;
|
|
|
cost.expense_type = expensestype;
|
|
|
|
|
|
if (terraform_cost_north.Failed() || (terraform_cost_north.GetCost() != 0 && !allow_on_slopes)) return_cmd_error(STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION);
|
|
|
cost.AddCost(terraform_cost_north);
|
|
@@ -627,14 +632,17 @@ CommandCost CmdBuildTunnel(DoCommandFlag
|
|
|
|
|
|
RailType railtype = INVALID_RAILTYPE;
|
|
|
RoadType roadtype = INVALID_ROADTYPE;
|
|
|
ExpensesType expensestype = EXPENSES_CONSTRUCTION;
|
|
|
_build_tunnel_endtile = 0;
|
|
|
switch (transport_type) {
|
|
|
case TRANSPORT_RAIL:
|
|
|
expensestype = EXPENSES_T_TRAIN_CON;
|
|
|
railtype = (RailType)road_rail_type;
|
|
|
if (!ValParamRailtype(railtype)) return CMD_ERROR;
|
|
|
break;
|
|
|
|
|
|
case TRANSPORT_ROAD:
|
|
|
expensestype = EXPENSES_T_ROAD_CON;
|
|
|
roadtype = (RoadType)road_rail_type;
|
|
|
if (!ValParamRoadType(roadtype)) return CMD_ERROR;
|
|
|
break;
|
|
@@ -687,7 +695,7 @@ CommandCost CmdBuildTunnel(DoCommandFlag
|
|
|
/* Number of tiles at which the cost increase coefficient per tile is halved */
|
|
|
int tiles_bump = 25;
|
|
|
|
|
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
|
|
CommandCost cost(expensestype);
|
|
|
Slope end_tileh;
|
|
|
for (;;) {
|
|
|
end_tile += delta;
|
|
@@ -913,8 +921,7 @@ static CommandCost DoClearTunnel(TileInd
|
|
|
DoClearSquare(endtile);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return CommandCost(EXPENSES_CONSTRUCTION, len * base_cost);
|
|
|
return CommandCost(EXPENSES_T_DEMOLITION, len * base_cost);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1013,7 +1020,7 @@ static CommandCost DoClearBridge(TileInd
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return CommandCost(EXPENSES_CONSTRUCTION, len * base_cost);
|
|
|
return CommandCost(EXPENSES_T_DEMOLITION, len * base_cost);
|
|
|
}
|
|
|
|
|
|
/**
|