equal
deleted
inserted
replaced
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 |