1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 15:40:29 +01:00

Added null checks for vehicles and drivers. Included valid vehicle check into GetNearbyVehicles method

This commit is contained in:
Rich Dunne 2020-08-26 19:30:53 -06:00
parent a7fd140e1f
commit c8874a5186
2 changed files with 23 additions and 7 deletions

View file

@ -8,6 +8,12 @@ namespace SceneManager
{
public static void AssignWaypointTasks(CollectedVehicle collectedVehicle, List<Waypoint> waypoints, Waypoint currentWaypoint)
{
if(!collectedVehicle.Vehicle || !collectedVehicle.Vehicle.Driver)
{
Game.LogTrivial($"Collected vehicle or driver is null");
return;
}
if (currentWaypoint != null && currentWaypoint.DrivingFlag == VehicleDrivingFlags.StopAtDestination)
{
StopVehicleAtWaypoint(collectedVehicle);
@ -15,6 +21,11 @@ namespace SceneManager
DriveVehicleToNextWaypoint(collectedVehicle, waypoints, currentWaypoint);
if (!collectedVehicle.Vehicle || !collectedVehicle.Vehicle.Driver)
{
Game.LogTrivial($"Collected vehicle or driver is null");
return;
}
Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} all tasks complete.");
DismissDriver(collectedVehicle);
}

View file

@ -48,8 +48,13 @@ namespace SceneManager
private static void LoopForNearbyValidVehicles(Path path, Waypoint waypoint)
{
foreach (Vehicle vehicle in GetNearbyVehicles(waypoint.Position, waypoint.CollectorRadius).Where(v => v.IsValidForCollection()))
foreach (Vehicle vehicle in GetNearbyVehicles(waypoint.Position, waypoint.CollectorRadius))
{
if (!vehicle)
{
break;
}
// If the vehicle is not in the collection yet
if (!collectedVehicles.ContainsKey(vehicle.LicensePlate))
{
@ -72,9 +77,9 @@ namespace SceneManager
}
}
private static Vehicle[] GetNearbyVehicles(Vector3 OriginPosition, float radius)
private static Vehicle[] GetNearbyVehicles(Vector3 collectorPosition, float radius)
{
return (from x in World.GetAllVehicles() where !x.IsTrailer && x.DistanceTo(OriginPosition) <= radius select x).ToArray();
return (from v in World.GetAllVehicles() where v.IsValidForCollection() && v.DistanceTo(collectorPosition) <= radius select v).ToArray();
}
private static void AssignStopForVehiclesFlag(List<Path> paths, Path path, Waypoint waypointData)
@ -118,6 +123,10 @@ namespace SceneManager
{
if(v && v.Speed > 0 && v.IsOnAllWheels && !v != Game.LocalPlayer.Character.CurrentVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike || (v.HasSiren && !v.IsSirenOn)))
{
if(v.HasDriver && !v.Driver.IsAlive)
{
return false;
}
if (!v.HasDriver)
{
v.CreateRandomDriver();
@ -126,10 +135,6 @@ namespace SceneManager
}
return true;
}
//if (v && v.HasDriver && v.Driver && v.Driver.IsAlive && v != Game.LocalPlayer.Character.CurrentVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike || (v.HasSiren && !v.IsSirenOn)))
//{
// return true;
//}
else
{
return false;