diff src/station_cmd.cpp @ 8109:eaab22131e32 draft

(svn r11670) -Feature [FS#1565]: list neutral stations where the player has service in the station list too
author smatz <smatz@openttd.org>
date Wed, 19 Dec 2007 23:35:14 +0000 (2007-12-19)
parents 4faab45e2603
children 2d6af5d7a142
line wrap: on
line diff
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -1868,15 +1868,20 @@
 	return CommandCost(_price.build_dock);
 }
 
-/* Checks if any ship is servicing the buoy specified. Returns yes or no */
-static bool CheckShipsOnBuoy(Station *st)
+/**
+ * Tests whether the player's vehicles have this station in orders
+ * When player == INVALID_PLAYER, then check all vehicles
+ * @param station station ID
+ * @param player player ID, INVALID_PLAYER to disable the check
+ */
+bool HasStationInUse(StationID station, PlayerID player)
 {
 	const Vehicle *v;
 	FOR_ALL_VEHICLES(v) {
-		if (v->type == VEH_SHIP) {
+		if (player == INVALID_PLAYER || v->owner == player) {
 			const Order *order;
 			FOR_VEHICLE_ORDERS(v, order) {
-				if (order->type == OT_GOTO_STATION && order->dest == st->index) {
+				if (order->type == OT_GOTO_STATION && order->dest == station) {
 					return true;
 				}
 			}
@@ -1892,7 +1897,7 @@
 
 	TileIndex tile = st->dock_tile;
 
-	if (CheckShipsOnBuoy(st))   return_cmd_error(STR_BUOY_IS_IN_USE);
+	if (HasStationInUse(st->index, INVALID_PLAYER)) return_cmd_error(STR_BUOY_IS_IN_USE);
 	if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {