1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 15:40:29 +01:00
Scene-Manager-DevRepo/SceneManager/Utils/DismissDriver.cs
2021-01-10 08:38:17 -07:00

43 lines
1.5 KiB
C#

using Rage;
using SceneManager.Objects;
using System.Linq;
namespace SceneManager.Utils
{
internal static class DismissDriver
{
internal static void Dismiss(int dismissIndex)
{
var nearbyVehicle = Game.LocalPlayer.Character.GetNearbyVehicles(16).FirstOrDefault(v => v != Game.LocalPlayer.Character.CurrentVehicle && v.VehicleAndDriverValid());
if (!nearbyVehicle)
{
Game.LogTrivial($"Nearby vehicle is null.");
return;
}
if(dismissIndex == (int)Utils.Dismiss.FromWorld)
{
// Have to loop because sometimes police peds don't get deleted properly
// The path should handle removing the deleted driver/vehicle from its list of collected vehicles
while (nearbyVehicle && nearbyVehicle.HasOccupants)
{
nearbyVehicle.Occupants.ToList().ForEach(x => x.Delete());
GameFiber.Yield();
}
if (nearbyVehicle)
{
nearbyVehicle.Delete();
}
return;
}
else
{
CollectedVehicle collectedVehicle = PathManager.Paths.SelectMany(x => x.CollectedVehicles).FirstOrDefault(x => x.Vehicle == nearbyVehicle);
if(collectedVehicle != null)
{
collectedVehicle.Dismiss((Dismiss)dismissIndex);
}
}
}
}
}