comparison src/station_cmd.cpp @ 6943:fd42cb9816c6 draft

(svn r10197) -Codechange: replace int32 with CommandCost where appropriate.
author rubidium <rubidium@openttd.org>
date Mon, 18 Jun 2007 10:48:15 +0000
parents 0c8df34ca222
children 803e29b0584e
comparison
equal deleted inserted replaced
6942:134e256409c4 6943:fd42cb9816c6
610 } 610 }
611 /* station remains but it probably lost some parts - station sign should stay in the station boundaries */ 611 /* station remains but it probably lost some parts - station sign should stay in the station boundaries */
612 UpdateStationSignCoord(st); 612 UpdateStationSignCoord(st);
613 } 613 }
614 614
615 static int32 ClearTile_Station(TileIndex tile, byte flags); 615 static CommandCost ClearTile_Station(TileIndex tile, byte flags);
616 616
617 // Tries to clear the given area. Returns the cost in case of success. 617 // Tries to clear the given area. Returns the cost in case of success.
618 // Or an error code if it failed. 618 // Or an error code if it failed.
619 int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station, bool check_clear = true) 619 CommandCost CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invalid_dirs, StationID* station, bool check_clear = true)
620 { 620 {
621 int32 cost = 0; 621 CommandCost cost = 0;
622 int allowed_z = -1; 622 int allowed_z = -1;
623 623
624 BEGIN_TILE_LOOP(tile_cur, w, h, tile) { 624 BEGIN_TILE_LOOP(tile_cur, w, h, tile) {
625 if (MayHaveBridgeAbove(tile_cur) && IsBridgeAbove(tile_cur)) { 625 if (MayHaveBridgeAbove(tile_cur) && IsBridgeAbove(tile_cur)) {
626 return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST); 626 return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
678 } else if (*station != st) { 678 } else if (*station != st) {
679 return_cmd_error(STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING); 679 return_cmd_error(STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING);
680 } 680 }
681 } 681 }
682 } else if (check_clear) { 682 } else if (check_clear) {
683 int32 ret = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR); 683 CommandCost ret = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
684 if (CmdFailed(ret)) return ret; 684 if (CmdFailed(ret)) return ret;
685 cost += ret; 685 cost += ret;
686 } 686 }
687 } END_TILE_LOOP(tile_cur, w, h, tile) 687 } END_TILE_LOOP(tile_cur, w, h, tile)
688 688
799 * @param p2 various bitstuffed elements 799 * @param p2 various bitstuffed elements
800 * - p2 = (bit 0- 3) - railtype (p2 & 0xF) 800 * - p2 = (bit 0- 3) - railtype (p2 & 0xF)
801 * - p2 = (bit 8-15) - custom station class 801 * - p2 = (bit 8-15) - custom station class
802 * - p2 = (bit 16-23) - custom station id 802 * - p2 = (bit 16-23) - custom station id
803 */ 803 */
804 int32 CmdBuildRailroadStation(TileIndex tile_org, uint32 flags, uint32 p1, uint32 p2) 804 CommandCost CmdBuildRailroadStation(TileIndex tile_org, uint32 flags, uint32 p1, uint32 p2)
805 { 805 {
806 int w_org, h_org; 806 int w_org, h_org;
807 int32 ret; 807 CommandCost ret;
808 808
809 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); 809 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
810 810
811 /* Does the authority allow this? */ 811 /* Does the authority allow this? */
812 if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile_org)) return CMD_ERROR; 812 if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile_org)) return CMD_ERROR;
836 StationID est = INVALID_STATION; 836 StationID est = INVALID_STATION;
837 // If DC_EXEC is in flag, do not want to pass it to CheckFlatLandBelow, because of a nice bug 837 // If DC_EXEC is in flag, do not want to pass it to CheckFlatLandBelow, because of a nice bug
838 // for detail info, see: https://sourceforge.net/tracker/index.php?func=detail&aid=1029064&group_id=103924&atid=636365 838 // for detail info, see: https://sourceforge.net/tracker/index.php?func=detail&aid=1029064&group_id=103924&atid=636365
839 ret = CheckFlatLandBelow(tile_org, w_org, h_org, flags & ~DC_EXEC, 5 << axis, _patches.nonuniform_stations ? &est : NULL); 839 ret = CheckFlatLandBelow(tile_org, w_org, h_org, flags & ~DC_EXEC, 5 << axis, _patches.nonuniform_stations ? &est : NULL);
840 if (CmdFailed(ret)) return ret; 840 if (CmdFailed(ret)) return ret;
841 int32 cost = ret + (numtracks * _price.train_station_track + _price.train_station_length) * plat_len; 841 CommandCost cost = ret + (numtracks * _price.train_station_track + _price.train_station_length) * plat_len;
842 842
843 Station *st = NULL; 843 Station *st = NULL;
844 bool check_surrounding = true; 844 bool check_surrounding = true;
845 845
846 if (_patches.adjacent_stations) { 846 if (_patches.adjacent_stations) {
1052 * @param tile tile of station piece to remove 1052 * @param tile tile of station piece to remove
1053 * @param flags operation to perform 1053 * @param flags operation to perform
1054 * @param p1 start_tile 1054 * @param p1 start_tile
1055 * @param p2 unused 1055 * @param p2 unused
1056 */ 1056 */
1057 int32 CmdRemoveFromRailroadStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 1057 CommandCost CmdRemoveFromRailroadStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
1058 { 1058 {
1059 TileIndex start = p1 == 0 ? tile : p1; 1059 TileIndex start = p1 == 0 ? tile : p1;
1060 1060
1061 /* Count of the number of tiles removed */ 1061 /* Count of the number of tiles removed */
1062 int quantity = 0; 1062 int quantity = 0;
1123 1123
1124 return _price.remove_rail_station * quantity; 1124 return _price.remove_rail_station * quantity;
1125 } 1125 }
1126 1126
1127 1127
1128 static int32 RemoveRailroadStation(Station *st, TileIndex tile, uint32 flags) 1128 static CommandCost RemoveRailroadStation(Station *st, TileIndex tile, uint32 flags)
1129 { 1129 {
1130 /* if there is flooding and non-uniform stations are enabled, remove platforms tile by tile */ 1130 /* if there is flooding and non-uniform stations are enabled, remove platforms tile by tile */
1131 if (_current_player == OWNER_WATER && _patches.nonuniform_stations) 1131 if (_current_player == OWNER_WATER && _patches.nonuniform_stations)
1132 return DoCommand(tile, 0, 0, DC_EXEC, CMD_REMOVE_FROM_RAILROAD_STATION); 1132 return DoCommand(tile, 0, 0, DC_EXEC, CMD_REMOVE_FROM_RAILROAD_STATION);
1133 1133
1140 int w = st->trainst_w; 1140 int w = st->trainst_w;
1141 int h = st->trainst_h; 1141 int h = st->trainst_h;
1142 1142
1143 assert(w != 0 && h != 0); 1143 assert(w != 0 && h != 0);
1144 1144
1145 int32 cost = 0; 1145 CommandCost cost = 0;
1146 /* clear all areas of the station */ 1146 /* clear all areas of the station */
1147 do { 1147 do {
1148 int w_bak = w; 1148 int w_bak = w;
1149 do { 1149 do {
1150 // for nonuniform stations, only remove tiles that are actually train station tiles 1150 // for nonuniform stations, only remove tiles that are actually train station tiles
1189 * @param totype The railtype we want to convert to 1189 * @param totype The railtype we want to convert to
1190 * @param exec Switches between test and execute mode 1190 * @param exec Switches between test and execute mode
1191 * @return The cost and state of the operation 1191 * @return The cost and state of the operation
1192 * @retval CMD_ERROR An error occured during the operation. 1192 * @retval CMD_ERROR An error occured during the operation.
1193 */ 1193 */
1194 int32 DoConvertStationRail(TileIndex tile, RailType totype, bool exec) 1194 CommandCost DoConvertStationRail(TileIndex tile, RailType totype, bool exec)
1195 { 1195 {
1196 const Station* st = GetStationByTile(tile); 1196 const Station* st = GetStationByTile(tile);
1197 1197
1198 if (!CheckOwnership(st->owner) || !EnsureNoVehicle(tile)) return CMD_ERROR; 1198 if (!CheckOwnership(st->owner) || !EnsureNoVehicle(tile)) return CMD_ERROR;
1199 1199
1241 * @param p2 bit 0: 0 for Bus stops, 1 for truck stops 1241 * @param p2 bit 0: 0 for Bus stops, 1 for truck stops
1242 * bit 1: 0 for normal, 1 for drive-through 1242 * bit 1: 0 for normal, 1 for drive-through
1243 * bit 2..4: the roadtypes 1243 * bit 2..4: the roadtypes
1244 * bit 5: allow stations directly adjacent to other stations. 1244 * bit 5: allow stations directly adjacent to other stations.
1245 */ 1245 */
1246 int32 CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 1246 CommandCost CmdBuildRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
1247 { 1247 {
1248 bool type = HASBIT(p2, 0); 1248 bool type = HASBIT(p2, 0);
1249 bool is_drive_through = HASBIT(p2, 1); 1249 bool is_drive_through = HASBIT(p2, 1);
1250 bool build_over_road = is_drive_through && IsTileType(tile, MP_STREET) && GetRoadTileType(tile) == ROAD_TILE_NORMAL; 1250 bool build_over_road = is_drive_through && IsTileType(tile, MP_STREET) && GetRoadTileType(tile) == ROAD_TILE_NORMAL;
1251 bool town_owned_road = build_over_road && IsTileOwner(tile, OWNER_TOWN); 1251 bool town_owned_road = build_over_road && IsTileOwner(tile, OWNER_TOWN);
1265 1265
1266 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); 1266 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
1267 1267
1268 if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) return CMD_ERROR; 1268 if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) return CMD_ERROR;
1269 1269
1270 int32 cost = 0; 1270 CommandCost cost = 0;
1271 1271
1272 /* Not allowed to build over this road */ 1272 /* Not allowed to build over this road */
1273 if (build_over_road) { 1273 if (build_over_road) {
1274 if (IsTileOwner(tile, OWNER_TOWN) && !_patches.road_stop_on_town_road) return_cmd_error(STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD); 1274 if (IsTileOwner(tile, OWNER_TOWN) && !_patches.road_stop_on_town_road) return_cmd_error(STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD);
1275 if (GetRoadTileType(tile) != ROAD_TILE_NORMAL) return CMD_ERROR; 1275 if (GetRoadTileType(tile) != ROAD_TILE_NORMAL) return CMD_ERROR;
1369 } 1369 }
1370 return cost; 1370 return cost;
1371 } 1371 }
1372 1372
1373 // Remove a bus station 1373 // Remove a bus station
1374 static int32 RemoveRoadStop(Station *st, uint32 flags, TileIndex tile) 1374 static CommandCost RemoveRoadStop(Station *st, uint32 flags, TileIndex tile)
1375 { 1375 {
1376 if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) { 1376 if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) {
1377 return CMD_ERROR; 1377 return CMD_ERROR;
1378 } 1378 }
1379 1379
1423 * @param tile tile to remove the stop from 1423 * @param tile tile to remove the stop from
1424 * @param flags operation to perform 1424 * @param flags operation to perform
1425 * @param p1 not used 1425 * @param p1 not used
1426 * @param p2 bit 0: 0 for Bus stops, 1 for truck stops 1426 * @param p2 bit 0: 0 for Bus stops, 1 for truck stops
1427 */ 1427 */
1428 int32 CmdRemoveRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 1428 CommandCost CmdRemoveRoadStop(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
1429 { 1429 {
1430 /* Make sure the specified tile is a road stop of the correct type */ 1430 /* Make sure the specified tile is a road stop of the correct type */
1431 if (!IsTileType(tile, MP_STATION) || !IsRoadStop(tile) || (uint32)GetRoadStopType(tile) != p2) return CMD_ERROR; 1431 if (!IsTileType(tile, MP_STATION) || !IsRoadStop(tile) || (uint32)GetRoadStopType(tile) != p2) return CMD_ERROR;
1432 Station *st = GetStationByTile(tile); 1432 Station *st = GetStationByTile(tile);
1433 /* Save the stop info before it is removed */ 1433 /* Save the stop info before it is removed */
1436 RoadBits road_bits = IsDriveThroughStopTile(tile) ? 1436 RoadBits road_bits = IsDriveThroughStopTile(tile) ?
1437 ((GetRoadStopDir(tile) == DIAGDIR_NE) ? ROAD_X : ROAD_Y) : 1437 ((GetRoadStopDir(tile) == DIAGDIR_NE) ? ROAD_X : ROAD_Y) :
1438 DiagDirToRoadBits(GetRoadStopDir(tile)); 1438 DiagDirToRoadBits(GetRoadStopDir(tile));
1439 bool is_towns_road = is_drive_through && GetStopBuiltOnTownRoad(tile); 1439 bool is_towns_road = is_drive_through && GetStopBuiltOnTownRoad(tile);
1440 1440
1441 int32 ret = RemoveRoadStop(st, flags, tile); 1441 CommandCost ret = RemoveRoadStop(st, flags, tile);
1442 1442
1443 /* If the stop was a drive-through stop replace the road */ 1443 /* If the stop was a drive-through stop replace the road */
1444 if ((flags & DC_EXEC) && !CmdFailed(ret) && is_drive_through) { 1444 if ((flags & DC_EXEC) && !CmdFailed(ret) && is_drive_through) {
1445 /* Rebuild the drive throuhg road stop. As a road stop can only be 1445 /* Rebuild the drive throuhg road stop. As a road stop can only be
1446 * removed by the owner of the roadstop, _current_player is the 1446 * removed by the owner of the roadstop, _current_player is the
1548 * @param tile tile where airport will be built 1548 * @param tile tile where airport will be built
1549 * @param flags operation to perform 1549 * @param flags operation to perform
1550 * @param p1 airport type, @see airport.h 1550 * @param p1 airport type, @see airport.h
1551 * @param p2 (bit 0) - allow airports directly adjacent to other airports. 1551 * @param p2 (bit 0) - allow airports directly adjacent to other airports.
1552 */ 1552 */
1553 int32 CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 1553 CommandCost CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
1554 { 1554 {
1555 bool airport_upgrade = true; 1555 bool airport_upgrade = true;
1556 1556
1557 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); 1557 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
1558 1558
1580 1580
1581 const AirportFTAClass *afc = GetAirport(p1); 1581 const AirportFTAClass *afc = GetAirport(p1);
1582 int w = afc->size_x; 1582 int w = afc->size_x;
1583 int h = afc->size_y; 1583 int h = afc->size_y;
1584 1584
1585 int32 ret = CheckFlatLandBelow(tile, w, h, flags, 0, NULL); 1585 CommandCost ret = CheckFlatLandBelow(tile, w, h, flags, 0, NULL);
1586 if (CmdFailed(ret)) return ret; 1586 if (CmdFailed(ret)) return ret;
1587 int32 cost = ret; 1587 CommandCost cost = ret;
1588 1588
1589 Station *st = NULL; 1589 Station *st = NULL;
1590 1590
1591 if (!_patches.adjacent_stations || !HASBIT(p2, 0)) { 1591 if (!_patches.adjacent_stations || !HASBIT(p2, 0)) {
1592 st = GetStationAround(tile, w, h, INVALID_STATION); 1592 st = GetStationAround(tile, w, h, INVALID_STATION);
1674 } 1674 }
1675 1675
1676 return cost; 1676 return cost;
1677 } 1677 }
1678 1678
1679 static int32 RemoveAirport(Station *st, uint32 flags) 1679 static CommandCost RemoveAirport(Station *st, uint32 flags)
1680 { 1680 {
1681 if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) 1681 if (_current_player != OWNER_WATER && !CheckOwnership(st->owner))
1682 return CMD_ERROR; 1682 return CMD_ERROR;
1683 1683
1684 TileIndex tile = st->airport_tile; 1684 TileIndex tile = st->airport_tile;
1685 1685
1686 const AirportFTAClass *afc = st->Airport(); 1686 const AirportFTAClass *afc = st->Airport();
1687 int w = afc->size_x; 1687 int w = afc->size_x;
1688 int h = afc->size_y; 1688 int h = afc->size_y;
1689 1689
1690 int32 cost = w * h * _price.remove_airport; 1690 CommandCost cost = w * h * _price.remove_airport;
1691 1691
1692 Vehicle *v; 1692 Vehicle *v;
1693 FOR_ALL_VEHICLES(v) { 1693 FOR_ALL_VEHICLES(v) {
1694 if (!(v->type == VEH_AIRCRAFT && IsNormalAircraft(v))) continue; 1694 if (!(v->type == VEH_AIRCRAFT && IsNormalAircraft(v))) continue;
1695 1695
1728 * @param tile tile where to place the bouy 1728 * @param tile tile where to place the bouy
1729 * @param flags operation to perform 1729 * @param flags operation to perform
1730 * @param p1 unused 1730 * @param p1 unused
1731 * @param p2 unused 1731 * @param p2 unused
1732 */ 1732 */
1733 int32 CmdBuildBuoy(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 1733 CommandCost CmdBuildBuoy(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
1734 { 1734 {
1735 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); 1735 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
1736 1736
1737 if (!IsClearWaterTile(tile) || tile == 0) return_cmd_error(STR_304B_SITE_UNSUITABLE); 1737 if (!IsClearWaterTile(tile) || tile == 0) return_cmd_error(STR_304B_SITE_UNSUITABLE);
1738 if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST); 1738 if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
1787 } 1787 }
1788 } 1788 }
1789 return false; 1789 return false;
1790 } 1790 }
1791 1791
1792 static int32 RemoveBuoy(Station *st, uint32 flags) 1792 static CommandCost RemoveBuoy(Station *st, uint32 flags)
1793 { 1793 {
1794 /* XXX: strange stuff */ 1794 /* XXX: strange stuff */
1795 if (!IsValidPlayer(_current_player)) return_cmd_error(INVALID_STRING_ID); 1795 if (!IsValidPlayer(_current_player)) return_cmd_error(INVALID_STRING_ID);
1796 1796
1797 TileIndex tile = st->dock_tile; 1797 TileIndex tile = st->dock_tile;
1837 * @param tile tile where dock will be built 1837 * @param tile tile where dock will be built
1838 * @param flags operation to perform 1838 * @param flags operation to perform
1839 * @param p1 (bit 0) - allow docks directly adjacent to other docks. 1839 * @param p1 (bit 0) - allow docks directly adjacent to other docks.
1840 * @param p2 unused 1840 * @param p2 unused
1841 */ 1841 */
1842 int32 CmdBuildDock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 1842 CommandCost CmdBuildDock(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
1843 { 1843 {
1844 int32 cost; 1844 CommandCost cost;
1845 1845
1846 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION); 1846 SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
1847 1847
1848 DiagDirection direction; 1848 DiagDirection direction;
1849 switch (GetTileSlope(tile, NULL)) { 1849 switch (GetTileSlope(tile, NULL)) {
1936 st_auto_delete.Release(); 1936 st_auto_delete.Release();
1937 } 1937 }
1938 return _price.build_dock; 1938 return _price.build_dock;
1939 } 1939 }
1940 1940
1941 static int32 RemoveDock(Station *st, uint32 flags) 1941 static CommandCost RemoveDock(Station *st, uint32 flags)
1942 { 1942 {
1943 if (!CheckOwnership(st->owner)) return CMD_ERROR; 1943 if (!CheckOwnership(st->owner)) return CMD_ERROR;
1944 1944
1945 TileIndex tile1 = st->dock_tile; 1945 TileIndex tile1 = st->dock_tile;
1946 TileIndex tile2 = tile1 + TileOffsByDiagDir(GetDockDirection(tile1)); 1946 TileIndex tile2 = tile1 + TileOffsByDiagDir(GetDockDirection(tile1));
2492 * @param tile unused 2492 * @param tile unused
2493 * @param flags operation to perform 2493 * @param flags operation to perform
2494 * @param p1 station ID that is to be renamed 2494 * @param p1 station ID that is to be renamed
2495 * @param p2 unused 2495 * @param p2 unused
2496 */ 2496 */
2497 int32 CmdRenameStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 2497 CommandCost CmdRenameStation(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
2498 { 2498 {
2499 if (!IsValidStationID(p1) || _cmd_text[0] == '\0') return CMD_ERROR; 2499 if (!IsValidStationID(p1) || _cmd_text[0] == '\0') return CMD_ERROR;
2500 Station *st = GetStation(p1); 2500 Station *st = GetStation(p1);
2501 2501
2502 if (!CheckOwnership(st->owner)) return CMD_ERROR; 2502 if (!CheckOwnership(st->owner)) return CMD_ERROR;
2746 bool edge_road; 2746 bool edge_road;
2747 return CheckAllowRemoveRoad(tile, GetAnyRoadBits(tile, ROADTYPE_ROAD), OWNER_TOWN, &edge_road, ROADTYPE_ROAD) && 2747 return CheckAllowRemoveRoad(tile, GetAnyRoadBits(tile, ROADTYPE_ROAD), OWNER_TOWN, &edge_road, ROADTYPE_ROAD) &&
2748 CheckAllowRemoveRoad(tile, GetAnyRoadBits(tile, ROADTYPE_TRAM), OWNER_TOWN, &edge_road, ROADTYPE_TRAM); 2748 CheckAllowRemoveRoad(tile, GetAnyRoadBits(tile, ROADTYPE_TRAM), OWNER_TOWN, &edge_road, ROADTYPE_TRAM);
2749 } 2749 }
2750 2750
2751 static int32 ClearTile_Station(TileIndex tile, byte flags) 2751 static CommandCost ClearTile_Station(TileIndex tile, byte flags)
2752 { 2752 {
2753 if (flags & DC_AUTO) { 2753 if (flags & DC_AUTO) {
2754 switch (GetStationType(tile)) { 2754 switch (GetStationType(tile)) {
2755 case STATION_RAIL: return_cmd_error(STR_300B_MUST_DEMOLISH_RAILROAD); 2755 case STATION_RAIL: return_cmd_error(STR_300B_MUST_DEMOLISH_RAILROAD);
2756 case STATION_AIRPORT: return_cmd_error(STR_300E_MUST_DEMOLISH_AIRPORT_FIRST); 2756 case STATION_AIRPORT: return_cmd_error(STR_300E_MUST_DEMOLISH_AIRPORT_FIRST);