From a47e736494ca2ed2d4ef796a10ec1d6d653d8fd4 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 8 Oct 2020 06:15:31 -0600 Subject: [PATCH] Refactored tasks for a directed driver into a local function. Removed dead code. --- SceneManager/AITasking.cs | 76 +++++++++++++-------------------------- 1 file changed, 25 insertions(+), 51 deletions(-) diff --git a/SceneManager/AITasking.cs b/SceneManager/AITasking.cs index fa4b3a7..25cba93 100644 --- a/SceneManager/AITasking.cs +++ b/SceneManager/AITasking.cs @@ -4,6 +4,9 @@ using System.Linq; namespace SceneManager { + // Driving styles https://gtaforums.com/topic/822314-guide-driving-styles/ + // also https://vespura.com/fivem/drivingstyle/ + class AITasking { internal static void AssignWaypointTasks(CollectedVehicle collectedVehicle, List waypoints, Waypoint currentWaypoint) @@ -15,20 +18,8 @@ namespace SceneManager if (currentWaypoint != null && collectedVehicle.Directed) { - collectedVehicle.Dismissed = false; - collectedVehicle.Directed = false; float acceptedDistance = GetAcceptedStoppingDistance(waypoints, waypoints.IndexOf(currentWaypoint)); - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} distance to collection waypoint: {collectedVehicle.Vehicle.DistanceTo2D(currentWaypoint.Position)}"); - - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {currentWaypoint.Number}"); - if(currentWaypoint.DrivingFlag == VehicleDrivingFlags.IgnorePathFinding) - { - collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)17040299, acceptedDistance); - } - else - { - collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)263075, acceptedDistance); - } + AssignTasksForDirectedDriver(acceptedDistance); LoopWhileDrivingToDirectedWaypoint(acceptedDistance); } @@ -49,6 +40,23 @@ namespace SceneManager collectedVehicle.Dismiss(); } + void AssignTasksForDirectedDriver(float acceptedDistance) + { + collectedVehicle.Dismissed = false; + collectedVehicle.Directed = false; + //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} distance to collection waypoint: {collectedVehicle.Vehicle.DistanceTo2D(currentWaypoint.Position)}"); + + Logger.Log($"{collectedVehicle.Vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {currentWaypoint.Number}"); + if (currentWaypoint.DrivingFlag == VehicleDrivingFlags.IgnorePathFinding) + { + collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)17040299, acceptedDistance); + } + else + { + collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)263075, acceptedDistance); + } + } + void LoopWhileDrivingToDirectedWaypoint(float acceptedDistance) { while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(currentWaypoint.Position) > acceptedDistance) @@ -73,12 +81,12 @@ namespace SceneManager Logger.Log($"Preparing to run task loop for {collectedVehicle.Vehicle.Model.Name}"); for (int currentWaypointTask = currentWaypoint.Number; currentWaypointTask < waypoints.Count; currentWaypointTask++) { - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} in the task loop"); + //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} in the task loop"); collectedVehicle.SkipWaypoint = false; if (collectedVehicle.Dismissed || collectedVehicle == null) { - Logger.Log($"Vehicle dismissed, return"); + Logger.Log($"Vehicle dismissed or null, return"); return; } @@ -119,7 +127,9 @@ namespace SceneManager { return; } + driver.Tasks.PerformDrivingManeuver(collectedVehicle.Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); + // Do we need this? if (driver) { driver.Tasks.Clear(); @@ -131,17 +141,6 @@ namespace SceneManager { while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && waypoints.ElementAtOrDefault(nextWaypoint) != null && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(waypoints[nextWaypoint].Position) > acceptedDistance) { - //Logger.Log($"Dismissed: {collectedVehicle.Dismissed} SkipWaypoint: {collectedVehicle.SkipWaypoint}"); - //if (waypoints[nextWaypoint].DrivingFlag == VehicleDrivingFlags.IgnorePathFinding) - //{ - // driver.Tasks.DriveToPosition(waypoints[nextWaypoint].Position, waypoints[nextWaypoint].Speed, (VehicleDrivingFlags)17040299, acceptedDistance); - //} - //else - //{ - // driver.Tasks.DriveToPosition(waypoints[nextWaypoint].Position, waypoints[nextWaypoint].Speed, (VehicleDrivingFlags)263075, acceptedDistance); - //} - //Logger.Log($"Looping while {collectedVehicle.Vehicle.Model.Name} drives to waypoint {waypoints[nextWaypoint].Number} ({collectedVehicle.Vehicle.DistanceTo2D(waypoints[nextWaypoint].Position)}m away from collector radius {waypoints[nextWaypoint].CollectorRadius})"); - //Logger.Log($"Distance of front of vehicle to waypoint: {collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(waypoints[nextWaypoint].Position)}"); GameFiber.Sleep(100); } } @@ -183,31 +182,6 @@ namespace SceneManager return true; } - private static bool VehicleAndDriverAreValid(List waypoints, int nextWaypoint, CollectedVehicle collectedVehicle) - { - if (waypoints.ElementAtOrDefault(nextWaypoint) == null) - { - Logger.Log($"Waypoint is null"); - return false; - } - if(collectedVehicle == null) - { - Logger.Log($"CollectedVehicle is null"); - return false; - } - if (!collectedVehicle.Vehicle) - { - Logger.Log($"Vehicle is null"); - return false; - } - if (!collectedVehicle.Driver) - { - Logger.Log($"Driver is null"); - return false; - } - return true; - } - private static void StopVehicleAtWaypoint(Waypoint currentWaypoint, CollectedVehicle collectedVehicle) { if (!VehicleAndDriverAreValid(collectedVehicle))