From 27d4b5c39a9b176eba68b7799a93d404a71c8c09 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Mon, 7 Sep 2020 20:26:35 -0600 Subject: [PATCH] Updated path reference based on CollectedVehicle refactoring. --- SceneManager/Menus/EditWaypointMenu.cs | 4 ++-- SceneManager/Menus/PathCreationMenu.cs | 4 ++-- SceneManager/Object Classes/Waypoint.cs | 14 ++++++++------ SceneManager/VehicleCollector.cs | 22 +++++++++++----------- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index a3b9956..ad1d68c 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -180,11 +180,11 @@ namespace SceneManager if (collectorWaypoint.Checked) { - currentPath.Waypoints.Add(new Waypoint(currentPath.Number, currentWaypoint.Number + 1, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, blip, true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value)); + currentPath.Waypoints.Add(new Waypoint(currentPath, currentWaypoint.Number + 1, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, blip, true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value)); } else { - currentPath.Waypoints.Add(new Waypoint(currentPath.Number, currentPath.Waypoints.Last().Number + 1, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, blip)); + currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, blip)); } editWaypointMenu.RemoveItemAt(0); diff --git a/SceneManager/Menus/PathCreationMenu.cs b/SceneManager/Menus/PathCreationMenu.cs index d1d24a5..f3db183 100644 --- a/SceneManager/Menus/PathCreationMenu.cs +++ b/SceneManager/Menus/PathCreationMenu.cs @@ -95,11 +95,11 @@ namespace SceneManager if (collectorWaypoint.Checked) { - PathMainMenu.GetPaths()[pathIndex].Waypoints.Add(new Waypoint(pathNumber, waypointNumber, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlags[waypointType.Index], CreateWaypointBlip(pathIndex, drivingFlags[waypointType.Index]), true, collectorRadius.Value, speedZoneRadius.Value)); + PathMainMenu.GetPaths()[pathIndex].Waypoints.Add(new Waypoint(firstNonNullPath, waypointNumber, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlags[waypointType.Index], CreateWaypointBlip(pathIndex, drivingFlags[waypointType.Index]), true, collectorRadius.Value, speedZoneRadius.Value)); } else { - PathMainMenu.GetPaths()[pathIndex].Waypoints.Add(new Waypoint(pathNumber, waypointNumber, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlags[waypointType.Index], CreateWaypointBlip(pathIndex, drivingFlags[waypointType.Index]))); + PathMainMenu.GetPaths()[pathIndex].Waypoints.Add(new Waypoint(firstNonNullPath, waypointNumber, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlags[waypointType.Index], CreateWaypointBlip(pathIndex, drivingFlags[waypointType.Index]))); } Game.LogTrivial($"[Path {pathNumber}] Waypoint {waypointNumber} ({drivingFlags[waypointType.Index].ToString()}) added"); diff --git a/SceneManager/Object Classes/Waypoint.cs b/SceneManager/Object Classes/Waypoint.cs index 6af4985..733bbac 100644 --- a/SceneManager/Object Classes/Waypoint.cs +++ b/SceneManager/Object Classes/Waypoint.cs @@ -6,7 +6,8 @@ namespace SceneManager { public class Waypoint { - private int _path { get; set; } + private Path _path { get; set; } + //private int _path { get; set; } private int _number { get; set; } private Vector3 _position { get; set; } private float _speed { get; set; } @@ -19,7 +20,8 @@ namespace SceneManager private uint _speedZone { get; set; } private bool _enableWaypointMarker { get; set; } - public int Path { get {return _path; } } + public Path Path { get { return _path; } set { _path = value; } } + //public int Path { get {return _path; } } public int Number { get { return _number; } set { _number = value; } } public Vector3 Position { get { return _position; } } public float Speed { get { return _speed; } } @@ -32,7 +34,7 @@ namespace SceneManager public uint SpeedZone { get { return _speedZone; } set { _speedZone = value; } } public bool EnableWaypointMarker { get { return _enableWaypointMarker; } set { _enableWaypointMarker = value; } } - public Waypoint(int path, int waypointNum, Vector3 waypointPos, float speed, VehicleDrivingFlags drivingFlag, Blip waypointBlip, bool collector = false, float collectorRadius = 0, float speedZoneRadius = 0) + public Waypoint(Path path, int waypointNum, Vector3 waypointPos, float speed, VehicleDrivingFlags drivingFlag, Blip waypointBlip, bool collector = false, float collectorRadius = 0, float speedZoneRadius = 0) { _path = path; _number = waypointNum; @@ -76,7 +78,7 @@ namespace SceneManager foreach(CollectedVehicle cv in VehicleCollector.collectedVehicles.Where(cv => cv.Path == _path && cv.CurrentWaypoint == _number && cv.StoppedAtWaypoint)) { Game.LogTrivial($"Setting StoppedAtWaypoint to false for {cv.Vehicle.Model.Name}"); - cv.SetStoppedAtWaypoint(false); + cv.StoppedAtWaypoint = false; } } _drivingFlag = newDrivingFlag; @@ -240,7 +242,7 @@ namespace SceneManager public void EnableBlip() { - if(!PathMainMenu.GetPaths().Where(p => p.Number == _path).First().IsEnabled) + if(!PathMainMenu.GetPaths().Where(p => p == _path).First().IsEnabled) { _blip.Alpha = 0.5f; _collectorRadiusBlip.Alpha = 0.25f; @@ -261,7 +263,7 @@ namespace SceneManager public void RemoveWaypoint() { - _path = 0; + _path = null; _number = 0; _position = new Vector3(0,0,0); _speed = 0; diff --git a/SceneManager/VehicleCollector.cs b/SceneManager/VehicleCollector.cs index 5a5b363..54e6869 100644 --- a/SceneManager/VehicleCollector.cs +++ b/SceneManager/VehicleCollector.cs @@ -41,7 +41,7 @@ namespace SceneManager { SetVehicleAndDriverPersistence(vehicle); CollectedVehicle newCollectedVehicle = AddVehicleToCollection(path, waypoint, vehicle); - Game.LogTrivial($"[WaypointVehicleCollector] Added {vehicle.Model.Name} to collection."); + newCollectedVehicle.TasksAssigned = true; GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(newCollectedVehicle, path.Waypoints, waypoint)); AssignTasksFiber.Start(); @@ -50,7 +50,7 @@ namespace SceneManager else if (!collectedVehicle.TasksAssigned) { Game.LogTrivial($"[WaypointVehicleCollector] {vehicle.Model.Name} already in collection, but with no tasks. Assigning tasks."); - collectedVehicle.SetTasksAssigned(true); + collectedVehicle.TasksAssigned = true; GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(collectedVehicle, path.Waypoints, waypoint)); AssignTasksFiber.Start(); @@ -65,20 +65,12 @@ namespace SceneManager private static CollectedVehicle AddVehicleToCollection(Path path, Waypoint waypoint, Vehicle v) { - var collectedVehicle = new CollectedVehicle(v, v.LicensePlate, path.Number, path.Waypoints.Count, waypoint.Number, true, false); + var collectedVehicle = new CollectedVehicle(v, path, path.Waypoints.Count, waypoint.Number, false); collectedVehicles.Add(collectedVehicle); Game.LogTrivial($"[WaypointVehicleCollector] Added {v.Model.Name} to collection from path {path.Number}, waypoint {waypoint.Number}."); return collectedVehicle; } - public static void SetVehicleAndDriverPersistence(Vehicle v) - { - v.IsPersistent = true; - v.Driver.IsPersistent = true; - v.Driver.BlockPermanentEvents = true; - v.Driver.Tasks.Clear(); - } - private static bool IsValidForCollection(this Vehicle v) { if(v && v.Speed > 1 && v.IsOnAllWheels && v != Game.LocalPlayer.Character.CurrentVehicle && v != Game.LocalPlayer.Character.LastVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike || (v.HasSiren && !v.IsSirenOn)) && !collectedVehicles.Any(cv => cv.Vehicle == v)) @@ -104,5 +96,13 @@ namespace SceneManager return false; } } + + public static void SetVehicleAndDriverPersistence(Vehicle v) + { + v.IsPersistent = true; + v.Driver.IsPersistent = true; + v.Driver.BlockPermanentEvents = true; + v.Driver.Tasks.Clear(); + } } }