mirror of
https://github.com/thegeneralist01/Scene-Manager-DevRepo
synced 2026-01-11 15:40:29 +01:00
Updated references and method calls on CollectedVehicle objects as a result of CollectedVehicle refactor
This commit is contained in:
parent
6a6b8b5492
commit
5e26f15e75
2 changed files with 27 additions and 31 deletions
|
|
@ -135,7 +135,7 @@ namespace SceneManager
|
||||||
Game.LogTrivial($"Removing all vehicles on the path");
|
Game.LogTrivial($"Removing all vehicles on the path");
|
||||||
foreach (KeyValuePair<string, CollectedVehicle> cv in pathVehicles.Where(cv => cv.Value.Vehicle && cv.Value.Vehicle.Driver))
|
foreach (KeyValuePair<string, CollectedVehicle> cv in pathVehicles.Where(cv => cv.Value.Vehicle && cv.Value.Vehicle.Driver))
|
||||||
{
|
{
|
||||||
cv.Value.DismissNow = true;
|
cv.Value.SetDismissNow(true);
|
||||||
cv.Value.Vehicle.Driver.Tasks.Clear();
|
cv.Value.Vehicle.Driver.Tasks.Clear();
|
||||||
cv.Value.Vehicle.Driver.Dismiss();
|
cv.Value.Vehicle.Driver.Dismiss();
|
||||||
cv.Value.Vehicle.Driver.IsPersistent = false;
|
cv.Value.Vehicle.Driver.IsPersistent = false;
|
||||||
|
|
@ -258,15 +258,13 @@ namespace SceneManager
|
||||||
{
|
{
|
||||||
var vehicle = TrafficPathing.collectedVehicles[nearbyVehicle.LicensePlate];
|
var vehicle = TrafficPathing.collectedVehicles[nearbyVehicle.LicensePlate];
|
||||||
var nearestWaypoint = paths[directDriver.Index].Waypoints.OrderBy(wp => wp.Position).Take(1) as Waypoint;
|
var nearestWaypoint = paths[directDriver.Index].Waypoints.OrderBy(wp => wp.Position).Take(1) as Waypoint;
|
||||||
|
var pathNum = paths[directDriver.Index].Waypoints[0].Path;
|
||||||
|
var totalPathWaypoints = paths[directDriver.Index].Waypoints.Count;
|
||||||
|
|
||||||
Game.LogTrivial($"[Direct Driver] {nearbyVehicle.Model.Name} already in collection. Clearing tasks.");
|
Game.LogTrivial($"[Direct Driver] {nearbyVehicle.Model.Name} already in collection. Clearing tasks.");
|
||||||
nearbyVehicle.Driver.Tasks.Clear();
|
nearbyVehicle.Driver.Tasks.Clear();
|
||||||
vehicle.Path = paths[directDriver.Index].Waypoints[0].Path;
|
vehicle.AssignPropertiesFromDirectedTask(pathNum, totalPathWaypoints, 1, tasksAssigned: false, dismiss: true, stoppedAtWaypoint: false, redirected: true);
|
||||||
vehicle.TotalWaypoints = paths[directDriver.Index].Waypoints.Count;
|
|
||||||
vehicle.CurrentWaypoint = 1;
|
|
||||||
vehicle.DismissNow = true;
|
|
||||||
vehicle.StoppedAtWaypoint = false;
|
|
||||||
vehicle.Redirected = true;
|
|
||||||
GameFiber DirectTaskFiber = new GameFiber(() => TrafficPathing.DirectTask(vehicle, paths[directDriver.Index].Waypoints));
|
GameFiber DirectTaskFiber = new GameFiber(() => TrafficPathing.DirectTask(vehicle, paths[directDriver.Index].Waypoints));
|
||||||
DirectTaskFiber.Start();
|
DirectTaskFiber.Start();
|
||||||
}
|
}
|
||||||
|
|
@ -293,7 +291,7 @@ namespace SceneManager
|
||||||
if (nearbyVehicle.IsInCollectedVehicles())
|
if (nearbyVehicle.IsInCollectedVehicles())
|
||||||
{
|
{
|
||||||
var controlledVehicle = TrafficPathing.collectedVehicles[nearbyVehicle.LicensePlate];
|
var controlledVehicle = TrafficPathing.collectedVehicles[nearbyVehicle.LicensePlate];
|
||||||
controlledVehicle.DismissNow = true;
|
controlledVehicle.SetDismissNow(true);
|
||||||
controlledVehicle.Vehicle.Driver.Tasks.Clear();
|
controlledVehicle.Vehicle.Driver.Tasks.Clear();
|
||||||
controlledVehicle.Vehicle.Driver.Dismiss();
|
controlledVehicle.Vehicle.Driver.Dismiss();
|
||||||
Game.LogTrivial($"Dismissed driver of {controlledVehicle.Vehicle.Model.Name} from path {controlledVehicle.Path}");
|
Game.LogTrivial($"Dismissed driver of {controlledVehicle.Vehicle.Model.Name} from path {controlledVehicle.Path}");
|
||||||
|
|
@ -309,13 +307,13 @@ namespace SceneManager
|
||||||
if (nearbyVehicle.IsInCollectedVehicles())
|
if (nearbyVehicle.IsInCollectedVehicles())
|
||||||
{
|
{
|
||||||
var controlledVehicle = TrafficPathing.collectedVehicles[nearbyVehicle.LicensePlate];
|
var controlledVehicle = TrafficPathing.collectedVehicles[nearbyVehicle.LicensePlate];
|
||||||
controlledVehicle.StoppedAtWaypoint = false;
|
controlledVehicle.SetStoppedAtWaypoint(false);
|
||||||
controlledVehicle.Vehicle.Driver.Tasks.Clear();
|
controlledVehicle.Vehicle.Driver.Tasks.Clear();
|
||||||
controlledVehicle.Vehicle.Driver.Dismiss();
|
controlledVehicle.Vehicle.Driver.Dismiss();
|
||||||
|
|
||||||
if (controlledVehicle.CurrentWaypoint == controlledVehicle.TotalWaypoints && !controlledVehicle.StoppedAtWaypoint)
|
if (controlledVehicle.CurrentWaypoint == controlledVehicle.TotalWaypoints && !controlledVehicle.StoppedAtWaypoint)
|
||||||
{
|
{
|
||||||
controlledVehicle.DismissNow = true;
|
controlledVehicle.SetDismissNow(true);
|
||||||
Game.LogTrivial($"Dismissed driver of {controlledVehicle.Vehicle.Model.Name} from final waypoint and ultimately the path");
|
Game.LogTrivial($"Dismissed driver of {controlledVehicle.Vehicle.Model.Name} from final waypoint and ultimately the path");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Drawing;
|
|
||||||
using Rage;
|
using Rage;
|
||||||
|
|
||||||
namespace SceneManager
|
namespace SceneManager
|
||||||
|
|
@ -42,7 +41,7 @@ namespace SceneManager
|
||||||
else if (collectedVehicles.ContainsKey(v.LicensePlate) && !collectedVehicles[v.LicensePlate].TasksAssigned)
|
else if (collectedVehicles.ContainsKey(v.LicensePlate) && !collectedVehicles[v.LicensePlate].TasksAssigned)
|
||||||
{
|
{
|
||||||
Game.LogTrivial($"[WaypointVehicleCollector] {v.Model.Name} already in collection, but with no tasks. Assigning tasks.");
|
Game.LogTrivial($"[WaypointVehicleCollector] {v.Model.Name} already in collection, but with no tasks. Assigning tasks.");
|
||||||
collectedVehicles[v.LicensePlate].TasksAssigned = true;
|
collectedVehicles[v.LicensePlate].SetTasksAssigned(true);
|
||||||
|
|
||||||
AssignTasks(collectedVehicles[v.LicensePlate], path.Waypoints, waypoint);
|
AssignTasks(collectedVehicles[v.LicensePlate], path.Waypoints, waypoint);
|
||||||
}
|
}
|
||||||
|
|
@ -54,7 +53,6 @@ namespace SceneManager
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GameFiber.Sleep(100);
|
GameFiber.Sleep(100);
|
||||||
//GameFiber.Yield();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,52 +103,52 @@ namespace SceneManager
|
||||||
Game.LogTrivial($"{cv.Vehicle.Model.Name} should be stopped at the waypoint.");
|
Game.LogTrivial($"{cv.Vehicle.Model.Name} should be stopped at the waypoint.");
|
||||||
cv.Vehicle.Driver.Tasks.PerformDrivingManeuver(VehicleManeuver.GoForwardStraightBraking);//.WaitForCompletion();
|
cv.Vehicle.Driver.Tasks.PerformDrivingManeuver(VehicleManeuver.GoForwardStraightBraking);//.WaitForCompletion();
|
||||||
cv.Vehicle.Driver.Tasks.PerformDrivingManeuver(VehicleManeuver.Wait);
|
cv.Vehicle.Driver.Tasks.PerformDrivingManeuver(VehicleManeuver.Wait);
|
||||||
cv.StoppedAtWaypoint = true;
|
cv.SetStoppedAtWaypoint(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AssignMultiWaypointTasks(CollectedVehicle cv, List<Waypoint> waypointData, Waypoint collectorWaypoint)
|
private static void AssignMultiWaypointTasks(CollectedVehicle cv, List<Waypoint> waypoints, Waypoint collectorWaypoint)
|
||||||
{
|
{
|
||||||
// For each waypoint in the path, give driver a task to that waypoint
|
// For each waypoint in the path, give driver a task to that waypoint
|
||||||
// i needs to be the index of the waypoint the vehicle was collected from
|
// i needs to be the index of the waypoint the vehicle was collected from
|
||||||
for (int i = waypointData.IndexOf(collectorWaypoint); i < waypointData.Count; i++)
|
for (int i = waypoints.IndexOf(collectorWaypoint); i < waypoints.Count; i++)
|
||||||
//for (int i = 1; i < waypointData.Count; i++)
|
//for (int i = 1; i < waypointData.Count; i++)
|
||||||
{
|
{
|
||||||
if (!cv.DismissNow)
|
if (!cv.DismissNow)
|
||||||
{
|
{
|
||||||
cv.CurrentWaypoint = waypointData[i].Number;
|
cv.SetCurrentWaypoint(waypoints[i].Number);
|
||||||
var nextWaypoint = i + 1;
|
var nextWaypoint = i + 1;
|
||||||
Game.LogTrivial($"Assigning task to {cv.Vehicle.Model.Name} from waypoint {nextWaypoint} of {waypointData.Count}");
|
Game.LogTrivial($"Assigning task to {cv.Vehicle.Model.Name} from waypoint {collectorWaypoint.Number} of {waypoints.Count}");
|
||||||
|
|
||||||
if (cv.Vehicle && cv.Vehicle.Driver && waypointData.ElementAtOrDefault(nextWaypoint) != null && waypointData[nextWaypoint].DrivingFlag == VehicleDrivingFlags.StopAtDestination)
|
if (cv.Vehicle && cv.Vehicle.Driver && waypoints.ElementAtOrDefault(nextWaypoint) != null && waypoints[nextWaypoint].DrivingFlag == VehicleDrivingFlags.StopAtDestination)
|
||||||
{
|
{
|
||||||
// Give driver a task to the waypoint. Run a loop with a condition checking for DismissNow for cases where the driver is dismissed or redirected
|
// Give driver a task to the waypoint. Run a loop with a condition checking for DismissNow for cases where the driver is dismissed or redirected
|
||||||
SetDriveTaskDrivingFlags(cv.Vehicle.Driver, EDrivingFlags.TotalControl);
|
SetDriveTaskDrivingFlags(cv.Vehicle.Driver, EDrivingFlags.TotalControl);
|
||||||
if (waypointData[nextWaypoint] != null)
|
if (waypoints[nextWaypoint] != null)
|
||||||
{
|
{
|
||||||
//Game.LogTrivial($"Driving to stop waypoint");
|
//Game.LogTrivial($"Driving to stop waypoint");
|
||||||
cv.Vehicle.Driver.Tasks.DriveToPosition(waypointData[nextWaypoint].Position, waypointData[nextWaypoint].Speed, (VehicleDrivingFlags)262539, 1f);
|
cv.Vehicle.Driver.Tasks.DriveToPosition(waypoints[nextWaypoint].Position, waypoints[nextWaypoint].Speed, (VehicleDrivingFlags)262539, 1f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Game.LogTrivial($"i is out of bounds for assigning task");
|
Game.LogTrivial($"i is out of bounds for assigning task");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (cv.Vehicle && cv.Vehicle.Driver && waypointData.ElementAtOrDefault(nextWaypoint) != null && cv.Vehicle.DistanceTo(waypointData[nextWaypoint].Position) > 3f && !cv.DismissNow)
|
while (cv.Vehicle && cv.Vehicle.Driver && waypoints.ElementAtOrDefault(nextWaypoint) != null && cv.Vehicle.DistanceTo(waypoints[nextWaypoint].Position) > 3f && !cv.DismissNow)
|
||||||
{
|
{
|
||||||
GameFiber.Sleep(100);
|
GameFiber.Sleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (waypointData.ElementAtOrDefault(i) != null && !cv.DismissNow)
|
if (waypoints.ElementAtOrDefault(i) != null && !cv.DismissNow)
|
||||||
{
|
{
|
||||||
Game.LogTrivial($"{cv.Vehicle.Model.Name} stopping at stop waypoint");
|
Game.LogTrivial($"{cv.Vehicle.Model.Name} stopping at stop waypoint");
|
||||||
cv.Vehicle.Driver.Tasks.PerformDrivingManeuver(VehicleManeuver.GoForwardStraightBraking);
|
cv.Vehicle.Driver.Tasks.PerformDrivingManeuver(VehicleManeuver.GoForwardStraightBraking);
|
||||||
cv.StoppedAtWaypoint = true;
|
cv.SetStoppedAtWaypoint(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cv.Vehicle && cv.Vehicle.Driver && waypointData.ElementAtOrDefault(nextWaypoint) != null && !cv.DismissNow)
|
else if (cv.Vehicle && cv.Vehicle.Driver && waypoints.ElementAtOrDefault(nextWaypoint) != null && !cv.DismissNow)
|
||||||
{
|
{
|
||||||
cv.Vehicle.Driver.Tasks.DriveToPosition(waypointData[nextWaypoint].Position, waypointData[nextWaypoint].Speed, (VehicleDrivingFlags)262539, 1f).WaitForCompletion();
|
cv.Vehicle.Driver.Tasks.DriveToPosition(waypoints[nextWaypoint].Position, waypoints[nextWaypoint].Speed, (VehicleDrivingFlags)262539, 1f).WaitForCompletion();
|
||||||
}
|
}
|
||||||
Game.LogTrivial($"{cv.Vehicle.Model.Name} waypoint {nextWaypoint} task complete");
|
Game.LogTrivial($"{cv.Vehicle.Model.Name} waypoint {nextWaypoint} task complete");
|
||||||
}
|
}
|
||||||
|
|
@ -175,8 +173,8 @@ namespace SceneManager
|
||||||
|
|
||||||
private static void DismissDriver(CollectedVehicle cv)
|
private static void DismissDriver(CollectedVehicle cv)
|
||||||
{
|
{
|
||||||
cv.DismissNow = true;
|
cv.SetDismissNow(true);
|
||||||
cv.StoppedAtWaypoint = false;
|
cv.SetStoppedAtWaypoint(false);
|
||||||
if (cv.Vehicle && cv.Vehicle.Driver && !cv.Redirected)
|
if (cv.Vehicle && cv.Vehicle.Driver && !cv.Redirected)
|
||||||
{
|
{
|
||||||
cv.Vehicle.Driver.Dismiss();
|
cv.Vehicle.Driver.Dismiss();
|
||||||
|
|
@ -216,7 +214,7 @@ namespace SceneManager
|
||||||
|
|
||||||
public static void DirectTask(CollectedVehicle cv, List<Waypoint> waypoints)
|
public static void DirectTask(CollectedVehicle cv, List<Waypoint> waypoints)
|
||||||
{
|
{
|
||||||
cv.DismissNow = false;
|
cv.SetDismissNow(false);
|
||||||
if (cv.Vehicle && cv.Vehicle.Driver)
|
if (cv.Vehicle && cv.Vehicle.Driver)
|
||||||
{
|
{
|
||||||
cv.Vehicle.IsPersistent = true;
|
cv.Vehicle.IsPersistent = true;
|
||||||
|
|
@ -235,7 +233,7 @@ namespace SceneManager
|
||||||
cv.Vehicle.Driver.Tasks.DriveToPosition(nearestWaypoint.Position, nearestWaypoint.Speed, (VehicleDrivingFlags)262539, 1f);
|
cv.Vehicle.Driver.Tasks.DriveToPosition(nearestWaypoint.Position, nearestWaypoint.Speed, (VehicleDrivingFlags)262539, 1f);
|
||||||
GameFiber.Sleep(500);
|
GameFiber.Sleep(500);
|
||||||
}
|
}
|
||||||
cv.Redirected = false;
|
cv.SetRedirected(false);
|
||||||
Game.LogTrivial($"DirectTask loop over");
|
Game.LogTrivial($"DirectTask loop over");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,7 +255,7 @@ namespace SceneManager
|
||||||
if (collectedVehicles.ContainsKey(cv.LicensePlate) && vehicleFarEnoughAwayFromCollectors)
|
if (collectedVehicles.ContainsKey(cv.LicensePlate) && vehicleFarEnoughAwayFromCollectors)
|
||||||
{
|
{
|
||||||
Game.LogTrivial($"{cv.Vehicle.Model.Name} is far enough away from all attractor waypoints and has been removed from the collection.");
|
Game.LogTrivial($"{cv.Vehicle.Model.Name} is far enough away from all attractor waypoints and has been removed from the collection.");
|
||||||
cv.TasksAssigned = false;
|
cv.SetTasksAssigned(false);
|
||||||
cv.Vehicle.Driver.BlockPermanentEvents = false;
|
cv.Vehicle.Driver.BlockPermanentEvents = false;
|
||||||
cv.Vehicle.Driver.IsPersistent = false;
|
cv.Vehicle.Driver.IsPersistent = false;
|
||||||
cv.Vehicle.IsPersistent = false;
|
cv.Vehicle.IsPersistent = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue