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:
parent
a7fd140e1f
commit
c8874a5186
2 changed files with 23 additions and 7 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue