src/roadveh_cmd.cpp
changeset 8266 08d1ff0b6018
parent 8264 b1e85998c7d3
child 8270 e7c342f6b14c
equal deleted inserted replaced
8265:86530c22f883 8266:08d1ff0b6018
   893 	rvf.y = y;
   893 	rvf.y = y;
   894 	rvf.dir = dir;
   894 	rvf.dir = dir;
   895 	rvf.veh = v;
   895 	rvf.veh = v;
   896 	if (front->u.road.state == RVSB_WORMHOLE) {
   896 	if (front->u.road.state == RVSB_WORMHOLE) {
   897 		u = (Vehicle*)VehicleFromPos(v->tile, &rvf, EnumCheckRoadVehClose);
   897 		u = (Vehicle*)VehicleFromPos(v->tile, &rvf, EnumCheckRoadVehClose);
       
   898 		if (u == NULL) u = (Vehicle*)VehicleFromPos(GetOtherTunnelBridgeEnd(v->tile), &rvf, EnumCheckRoadVehClose);
   898 	} else {
   899 	} else {
   899 		u = (Vehicle*)VehicleFromPosXY(x, y, &rvf, EnumCheckRoadVehClose);
   900 		u = (Vehicle*)VehicleFromPosXY(x, y, &rvf, EnumCheckRoadVehClose);
   900 	}
   901 	}
   901 
   902 
   902 	/* This code protects a roadvehicle from being blocked for ever
   903 	/* This code protects a roadvehicle from being blocked for ever
  1509 
  1510 
  1510 	if (v->u.road.state == RVSB_WORMHOLE) {
  1511 	if (v->u.road.state == RVSB_WORMHOLE) {
  1511 		/* Vehicle is entering a depot or is on a bridge or in a tunnel */
  1512 		/* Vehicle is entering a depot or is on a bridge or in a tunnel */
  1512 		GetNewVehiclePosResult gp = GetNewVehiclePos(v);
  1513 		GetNewVehiclePosResult gp = GetNewVehiclePos(v);
  1513 
  1514 
  1514 		const Vehicle *u = RoadVehFindCloseTo(v, gp.x, gp.y, v->direction);
  1515 		if (IsRoadVehFront(v)) {
  1515 		if (u != NULL && u->First()->cur_speed < v->cur_speed) {
  1516 			const Vehicle *u = RoadVehFindCloseTo(v, gp.x, gp.y, v->direction);
  1516 			v->cur_speed = u->First()->cur_speed;
  1517 			if (u != NULL) {
  1517 			return false;
  1518 				v->cur_speed = u->First()->cur_speed;
       
  1519 				return false;
       
  1520 			}
  1518 		}
  1521 		}
  1519 
  1522 
  1520 		if ((IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) && HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
  1523 		if ((IsTunnelTile(gp.new_tile) || IsBridgeTile(gp.new_tile)) && HasBit(VehicleEnterTile(v, gp.new_tile, gp.x, gp.y), VETS_ENTERED_WORMHOLE)) {
  1521 			/* Vehicle has just entered a bridge or tunnel */
  1524 			/* Vehicle has just entered a bridge or tunnel */
  1522 			v->cur_image = v->GetImage(v->direction);
  1525 			v->cur_image = v->GetImage(v->direction);