changeset 4526:a4e404bf620d draft

(svn r6352) -Fix: FS#322 Send to depot bug now vehicles can't be sent to a depot when they are already inside a depot before they would remember the order and try to turn around when leaving the depot
author bjarni <bjarni@openttd.org>
date Sat, 02 Sep 2006 22:47:45 +0000
parents 5344892535b8
children b67e06dd63e8
files aircraft_cmd.c roadveh_cmd.c ship_cmd.c train_cmd.c
diffstat 4 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/aircraft_cmd.c
+++ b/aircraft_cmd.c
@@ -509,7 +509,7 @@
 
 	v = GetVehicle(p1);
 
-	if (v->type != VEH_Aircraft || !CheckOwnership(v->owner)) return CMD_ERROR;
+	if (v->type != VEH_Aircraft || !CheckOwnership(v->owner) || IsAircraftInHangar(v)) return CMD_ERROR;
 
 	if (v->current_order.type == OT_GOTO_DEPOT && !(p2 & DEPOT_LOCATE_HANGAR)) {
 		if (!!(p2 & DEPOT_SERVICE) == HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
--- a/roadveh_cmd.c
+++ b/roadveh_cmd.c
@@ -380,6 +380,8 @@
 
 	if (v->vehstatus & VS_CRASHED) return CMD_ERROR;
 
+	if (IsRoadVehInDepot(v)) return CMD_ERROR;
+
 	/* If the current orders are already goto-depot */
 	if (v->current_order.type == OT_GOTO_DEPOT) {
 		if (!!(p2 & DEPOT_SERVICE) == HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
--- a/ship_cmd.c
+++ b/ship_cmd.c
@@ -1018,6 +1018,8 @@
 
 	if (v->vehstatus & VS_CRASHED) return CMD_ERROR;
 
+	if (IsShipInDepot(v)) return CMD_ERROR;
+
 	/* If the current orders are already goto-depot */
 	if (v->current_order.type == OT_GOTO_DEPOT) {
 		if (!!(p2 & DEPOT_SERVICE) == HASBIT(v->current_order.flags, OFB_HALT_IN_DEPOT)) {
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -1973,6 +1973,10 @@
 		return 0;
 	}
 
+	/* check if at a standstill (not stopped only) in a depot
+	 * the check is down here to make it possible to alter stop/service for trains entering the depot */
+	if (IsTileDepotType(v->tile, TRANSPORT_RAIL) && v->cur_speed == 0) return CMD_ERROR;
+
 	tfdd = FindClosestTrainDepot(v, 0);
 	if (tfdd.best_length == (uint)-1) return_cmd_error(STR_883A_UNABLE_TO_FIND_ROUTE_TO);