src/roadveh_cmd.cpp
changeset 10703 2c998f3776d1
parent 10621 3edd349d9c14
child 10707 81a4013a7680
equal deleted inserted replaced
10702:d36547edcb86 10703:2c998f3776d1
   203 
   203 
   204 	v = vl[0];
   204 	v = vl[0];
   205 
   205 
   206 	/* find the first free roadveh id */
   206 	/* find the first free roadveh id */
   207 	unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_ROAD);
   207 	unit_num = HasBit(p2, 0) ? 0 : GetFreeUnitNumber(VEH_ROAD);
   208 	if (unit_num > _patches.max_roadveh)
   208 	if (unit_num > _settings.vehicle.max_roadveh)
   209 		return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
   209 		return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
   210 
   210 
   211 	if (flags & DC_EXEC) {
   211 	if (flags & DC_EXEC) {
   212 		int x;
   212 		int x;
   213 		int y;
   213 		int y;
   255 		v->max_age = e->lifelength * 366;
   255 		v->max_age = e->lifelength * 366;
   256 		_new_vehicle_id = v->index;
   256 		_new_vehicle_id = v->index;
   257 
   257 
   258 		v->name = NULL;
   258 		v->name = NULL;
   259 
   259 
   260 		v->service_interval = _patches.servint_roadveh;
   260 		v->service_interval = _settings.vehicle.servint_roadveh;
   261 
   261 
   262 		v->date_of_last_service = _date;
   262 		v->date_of_last_service = _date;
   263 		v->build_year = _cur_year;
   263 		v->build_year = _cur_year;
   264 
   264 
   265 		v->cur_image = 0xC15;
   265 		v->cur_image = 0xC15;
   417 	return false;
   417 	return false;
   418 }
   418 }
   419 
   419 
   420 static const Depot* FindClosestRoadDepot(const Vehicle* v)
   420 static const Depot* FindClosestRoadDepot(const Vehicle* v)
   421 {
   421 {
   422 	switch (_patches.pathfinder_for_roadvehs) {
   422 	switch (_settings.pf.pathfinder_for_roadvehs) {
   423 		case VPF_YAPF: /* YAPF */
   423 		case VPF_YAPF: /* YAPF */
   424 			return YapfFindNearestRoadDepot(v);
   424 			return YapfFindNearestRoadDepot(v);
   425 
   425 
   426 		case VPF_NPF: { /* NPF */
   426 		case VPF_NPF: { /* NPF */
   427 			/* See where we are now */
   427 			/* See where we are now */
   861 	}
   861 	}
   862 
   862 
   863 	/* updates statusbar only if speed have changed to save CPU time */
   863 	/* updates statusbar only if speed have changed to save CPU time */
   864 	if (spd != v->cur_speed) {
   864 	if (spd != v->cur_speed) {
   865 		v->cur_speed = spd;
   865 		v->cur_speed = spd;
   866 		if (_patches.vehicle_speed) {
   866 		if (_settings.gui.vehicle_speed) {
   867 			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
   867 			InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
   868 		}
   868 		}
   869 	}
   869 	}
   870 
   870 
   871 	/* Decrease somewhat when turning */
   871 	/* Decrease somewhat when turning */
  1083 			if (GetRoadStopType(tile) != rstype) {
  1083 			if (GetRoadStopType(tile) != rstype) {
  1084 				/* Wrong station type */
  1084 				/* Wrong station type */
  1085 				trackdirs = TRACKDIR_BIT_NONE;
  1085 				trackdirs = TRACKDIR_BIT_NONE;
  1086 			} else {
  1086 			} else {
  1087 				/* Proper station type, check if there is free loading bay */
  1087 				/* Proper station type, check if there is free loading bay */
  1088 				if (!_patches.roadveh_queue && IsStandardRoadStopTile(tile) &&
  1088 				if (!_settings.pf.roadveh_queue && IsStandardRoadStopTile(tile) &&
  1089 						!GetRoadStopByTile(tile, rstype)->HasFreeBay()) {
  1089 						!GetRoadStopByTile(tile, rstype)->HasFreeBay()) {
  1090 					/* Station is full and RV queuing is off */
  1090 					/* Station is full and RV queuing is off */
  1091 					trackdirs = TRACKDIR_BIT_NONE;
  1091 					trackdirs = TRACKDIR_BIT_NONE;
  1092 				}
  1092 				}
  1093 			}
  1093 			}
  1122 	/* Only one track to choose between? */
  1122 	/* Only one track to choose between? */
  1123 	if (KillFirstBit(trackdirs) == TRACKDIR_BIT_NONE) {
  1123 	if (KillFirstBit(trackdirs) == TRACKDIR_BIT_NONE) {
  1124 		return_track(FindFirstBit2x64(trackdirs));
  1124 		return_track(FindFirstBit2x64(trackdirs));
  1125 	}
  1125 	}
  1126 
  1126 
  1127 	switch (_patches.pathfinder_for_roadvehs) {
  1127 	switch (_settings.pf.pathfinder_for_roadvehs) {
  1128 		case VPF_YAPF: { /* YAPF */
  1128 		case VPF_YAPF: { /* YAPF */
  1129 			Trackdir trackdir = YapfChooseRoadTrack(v, tile, enterdir);
  1129 			Trackdir trackdir = YapfChooseRoadTrack(v, tile, enterdir);
  1130 			if (trackdir != INVALID_TRACKDIR) return_track(trackdir);
  1130 			if (trackdir != INVALID_TRACKDIR) return_track(trackdir);
  1131 			return_track(PickRandomBit(trackdirs));
  1131 			return_track(PickRandomBit(trackdirs));
  1132 		} break;
  1132 		} break;
  1209 	return best_track;
  1209 	return best_track;
  1210 }
  1210 }
  1211 
  1211 
  1212 static uint RoadFindPathToStop(const Vehicle *v, TileIndex tile)
  1212 static uint RoadFindPathToStop(const Vehicle *v, TileIndex tile)
  1213 {
  1213 {
  1214 	if (_patches.pathfinder_for_roadvehs == VPF_YAPF) {
  1214 	if (_settings.pf.pathfinder_for_roadvehs == VPF_YAPF) {
  1215 		/* use YAPF */
  1215 		/* use YAPF */
  1216 		return YapfRoadVehDistanceToTile(v, tile);
  1216 		return YapfRoadVehDistanceToTile(v, tile);
  1217 	}
  1217 	}
  1218 
  1218 
  1219 	/* use NPF */
  1219 	/* use NPF */
  1885 }
  1885 }
  1886 
  1886 
  1887 static void CheckIfRoadVehNeedsService(Vehicle *v)
  1887 static void CheckIfRoadVehNeedsService(Vehicle *v)
  1888 {
  1888 {
  1889 	/* If we already got a slot at a stop, use that FIRST, and go to a depot later */
  1889 	/* If we already got a slot at a stop, use that FIRST, and go to a depot later */
  1890 	if (v->u.road.slot != NULL || _patches.servint_roadveh == 0 || !v->NeedsAutomaticServicing()) return;
  1890 	if (v->u.road.slot != NULL || _settings.vehicle.servint_roadveh == 0 || !v->NeedsAutomaticServicing()) return;
  1891 	if (v->IsInDepot()) {
  1891 	if (v->IsInDepot()) {
  1892 		VehicleServiceInDepot(v);
  1892 		VehicleServiceInDepot(v);
  1893 		return;
  1893 		return;
  1894 	}
  1894 	}
  1895 
  1895