diff options
author | glx <glx@openttd.org> | 2007-12-11 17:44:55 +0000 |
---|---|---|
committer | glx <glx@openttd.org> | 2007-12-11 17:44:55 +0000 |
commit | fb1d7689249d2553a188055aa8c68efa4e9294a6 (patch) | |
tree | 9e4371e18fc5fde0bd00876c036c6fefbe55eff1 | |
parent | 6f733823176c44be1a75f2f25b62f55ac0a62d85 (diff) | |
download | openttd-fb1d7689249d2553a188055aa8c68efa4e9294a6.tar.xz |
(svn r11618) -Fix: buoys are just waypoints, so don't allow load/unload/transfert for them
-rw-r--r-- | src/openttd.cpp | 10 | ||||
-rw-r--r-- | src/order_cmd.cpp | 2 | ||||
-rw-r--r-- | src/order_gui.cpp | 16 |
3 files changed, 20 insertions, 8 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp index 6df56e31b..4e3d244a8 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -2254,6 +2254,16 @@ bool AfterLoadGame() } } + /* 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(); } diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 590810429..7e1256727 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -676,7 +676,7 @@ CommandCost CmdModifyOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) 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; diff --git a/src/order_gui.cpp b/src/order_gui.cpp index 8c3ff29b4..356782a39 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -152,7 +152,15 @@ static void DrawOrdersWindow(Window *w) 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 @@ static void DrawOrdersWindow(Window *w) 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); |