From 034f3591cf6137136333f9769efbcb0bdd03f03c Mon Sep 17 00:00:00 2001 From: maedhros Date: Fri, 20 Apr 2007 11:39:01 +0000 Subject: [PATCH] (svn r9685) -Fix (r9683): Call v->LeaveStation() when a vehicle in a station is sent to a depot. --- src/aircraft_cmd.cpp | 2 ++ src/roadveh_cmd.cpp | 2 ++ src/ship_cmd.cpp | 2 ++ src/train_cmd.cpp | 5 +++-- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index aabe323bd4..3950cae500 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -571,6 +571,8 @@ int32 CmdSendAircraftToHangar(TileIndex tile, uint32 flags, uint32 p1, uint32 p2 } if (flags & DC_EXEC) { + if (v->current_order.type == OT_LOADING) v->LeaveStation(); + v->current_order.type = OT_GOTO_DEPOT; v->current_order.flags = OF_NON_STOP; if (!(p2 & DEPOT_SERVICE)) SETBIT(v->current_order.flags, OFB_HALT_IN_DEPOT); diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index fada22c847..79fa608474 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -436,6 +436,8 @@ int32 CmdSendRoadVehToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) if (dep == NULL) return_cmd_error(STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT); if (flags & DC_EXEC) { + if (v->current_order.type == OT_LOADING) v->LeaveStation(); + ClearSlot(v); v->current_order.type = OT_GOTO_DEPOT; v->current_order.flags = OF_NON_STOP; diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 3b67711fc6..dd86a960d3 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -1065,6 +1065,8 @@ int32 CmdSendShipToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) if (dep == NULL) return_cmd_error(STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT); if (flags & DC_EXEC) { + if (v->current_order.type == OT_LOADING) v->LeaveStation(); + v->dest_tile = dep->xy; v->current_order.type = OT_GOTO_DEPOT; v->current_order.flags = OF_NON_STOP; diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 8a74ae262c..bbdb775476 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1985,6 +1985,8 @@ int32 CmdSendTrainToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) if (tfdd.best_length == (uint)-1) return_cmd_error(STR_883A_UNABLE_TO_FIND_ROUTE_TO); if (flags & DC_EXEC) { + if (v->current_order.type == OT_LOADING) v->LeaveStation(); + v->dest_tile = tfdd.tile; v->current_order.type = OT_GOTO_DEPOT; v->current_order.flags = OF_NON_STOP; @@ -1993,8 +1995,7 @@ int32 CmdSendTrainToDepot(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) v->current_order.refit_cargo = CT_INVALID; InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, STATUS_BAR); /* If there is no depot in front, reverse automatically */ - if (tfdd.reverse) - DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION); + if (tfdd.reverse) DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_REVERSE_TRAIN_DIRECTION); } return 0;