1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 23:50: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) 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) if (currentWaypoint != null && currentWaypoint.DrivingFlag == VehicleDrivingFlags.StopAtDestination)
{ {
StopVehicleAtWaypoint(collectedVehicle); StopVehicleAtWaypoint(collectedVehicle);
@ -15,6 +21,11 @@ namespace SceneManager
DriveVehicleToNextWaypoint(collectedVehicle, waypoints, currentWaypoint); 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."); Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} all tasks complete.");
DismissDriver(collectedVehicle); DismissDriver(collectedVehicle);
} }

View file

@ -48,8 +48,13 @@ namespace SceneManager
private static void LoopForNearbyValidVehicles(Path path, Waypoint waypoint) 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 the vehicle is not in the collection yet
if (!collectedVehicles.ContainsKey(vehicle.LicensePlate)) 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) 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 && 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) if (!v.HasDriver)
{ {
v.CreateRandomDriver(); v.CreateRandomDriver();
@ -126,10 +135,6 @@ namespace SceneManager
} }
return true; 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 else
{ {
return false; return false;