changeset 8057:99ade4087f55 draft

(svn r11618) -Fix: buoys are just waypoints, so don't allow load/unload/transfert for them
author glx <glx@openttd.org>
date Tue, 11 Dec 2007 17:44:55 +0000
parents 44981405e4ca
children 1d706d4bf166
files src/openttd.cpp src/order_cmd.cpp src/order_gui.cpp
diffstat 3 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -2254,6 +2254,16 @@
 		}
 	}
 
+	/* Update go to buoy orders because they are just waypoints */
+	if (CheckSavegameVersion(84)) {
+		Order *order;
+		FOR_ALL_ORDERS(order) {
+			if (order->type == OT_GOTO_STATION && GetStation(order->dest)->IsBuoy()) {
+				order->flags = 0;
+			}
+		}
+	}
+
 	return InitializeWindowsAndCaches();
 }
 
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -676,7 +676,7 @@
 	if (sel_ord >= v->num_orders) return CMD_ERROR;
 
 	order = GetVehicleOrder(v, sel_ord);
-	if (order->type != OT_GOTO_STATION &&
+	if ((order->type != OT_GOTO_STATION  || GetStation(order->dest)->IsBuoy()) &&
 			(order->type != OT_GOTO_DEPOT    || p2 == OFB_UNLOAD) &&
 			(order->type != OT_GOTO_WAYPOINT || p2 != OFB_NON_STOP)) {
 		return CMD_ERROR;
--- a/src/order_gui.cpp
+++ b/src/order_gui.cpp
@@ -152,7 +152,15 @@
 
 	if (order != NULL) {
 		switch (order->type) {
-			case OT_GOTO_STATION: break;
+			case OT_GOTO_STATION:
+				if (!GetStation(order->dest)->IsBuoy()) break;
+				/* Fall-through */
+
+			case OT_GOTO_WAYPOINT:
+				w->DisableWidget(ORDER_WIDGET_FULL_LOAD);
+				w->DisableWidget(ORDER_WIDGET_UNLOAD);
+				w->DisableWidget(ORDER_WIDGET_TRANSFER);
+				break;
 
 			case OT_GOTO_DEPOT:
 				w->DisableWidget(ORDER_WIDGET_TRANSFER);
@@ -163,12 +171,6 @@
 				SetDParam(2,STR_SERVICE);
 				break;
 
-			case OT_GOTO_WAYPOINT:
-				w->DisableWidget(ORDER_WIDGET_FULL_LOAD);
-				w->DisableWidget(ORDER_WIDGET_UNLOAD);
-				w->DisableWidget(ORDER_WIDGET_TRANSFER);
-				break;
-
 			default: // every other orders
 				w->DisableWidget(ORDER_WIDGET_NON_STOP);
 				w->DisableWidget(ORDER_WIDGET_FULL_LOAD);