(svn r30) -Fix [1007272] Copy orders between bus/truck possible. You cannot share orders between busses/trucks. You can only copy orders if all the facilities in schedule allow both types to go there (Celestar)
authordarkvater
Thu, 12 Aug 2004 21:29:26 +0000
changeset 29 b4bf7559cfa7
parent 28 635ad4c62bec
child 30 e705d4f866e5
(svn r30) -Fix [1007272] Copy orders between bus/truck possible. You cannot share orders between busses/trucks. You can only copy orders if all the facilities in schedule allow both types to go there (Celestar)
-Fix Dutch in dropdown language box is not in BIGFONT
lang/dutch.txt
order_cmd.c
--- a/lang/dutch.txt	Thu Aug 12 21:11:23 2004 +0000
+++ b/lang/dutch.txt	Thu Aug 12 21:29:26 2004 +0000
@@ -1,5 +1,5 @@
-##name 								Dutch (not complete)
-##ownname 							Nederlands (niet volledig)
+##name Dutch (not complete)
+##ownname Nederlands (niet volledig)
 
 ##id 0x0000
 STR_NULL							:
--- a/order_cmd.c	Thu Aug 12 21:11:23 2004 +0000
+++ b/order_cmd.c	Thu Aug 12 21:29:26 2004 +0000
@@ -217,6 +217,12 @@
 		// sanity checks
 		if (!(src->owner == _current_player && dst->type == src->type && dst != src))
 			return CMD_ERROR;
+			
+		// let's see what happens with road vehicles
+		if (src->type == VEH_Road) {
+			if (src->cargo_type != dst->cargo_type && (src->cargo_type == CT_PASSENGERS || dst->cargo_type == CT_PASSENGERS))
+				return CMD_ERROR;
+		}
 
 		if (flags & DC_EXEC) {
 			DeleteVehicleSchedule(dst);
@@ -237,6 +243,23 @@
 		// sanity checks
 		if (!(src->owner == _current_player && dst->type == src->type && dst != src))
 			return CMD_ERROR;
+			
+		// let's see what happens with road vehicles
+		if (src->type == VEH_Road) {
+			uint16 ord;
+			int i;
+			Station *st;
+			TileIndex required_dst;
+			
+			for (i=0; (ord = src->schedule_ptr[i]) != 0; i++) {
+				if ( ( ord & OT_MASK ) == OT_GOTO_STATION ) {
+					st = DEREF_STATION(ord >> 8);
+					required_dst = (dst->cargo_type == CT_PASSENGERS) ? st->bus_tile : st->lorry_tile;
+					if ( !required_dst )
+						return CMD_ERROR;
+				}
+			}
+		}
 
 		// make sure there's orders available
 		delta = IsScheduleShared(dst) ? src->num_orders + 1 : src->num_orders - dst->num_orders;