mirror of
https://github.com/thegeneralist01/Scene-Manager-DevRepo
synced 2026-01-11 23:50:29 +01:00
* Mouse can now be used to fully navigate menus * Added check for driver's current vehicle when releasing from Stop waypoint in case the ped is not in a vehicle. * Lines are now only drawn between waypoint markers under the same conditions that waypoint markers are drawn * Updated marker position to be player's mouse position * Version update * Added logic to update waypoint position during driving task if the waypoint position was changed before the driver arrived. * Removed unused usings. Refactored debug statements to use Game.LogTrivial instead of Logger.Log * Removed class * Removed Logger class * Consolidated all custom enums to this class. Added default waypoint settings from .ini * Modified a hint message * Fixed collector options not being enabled/disabled when Collector box is checked * Refactored AITasking into CollectedVehicle. * Updated reference to vehicle tasking based on AITasking refactor. Fixed speed zone radius not updating correctly. * Version update * Refactored AITasking into CollectedVehicle * Added check for CollectorRadius being more than SpeedZoneRadius. Added debug messages when values are reset to default. * Added hint message if player tries to edit waypoints while 3D waypoints are disabled * Fixed a bug where a 3D waypoint marker would be drawn even if 3D waypoints were disabled * Removed unnecessary property setting when a vehicle is being removed from a path. * Added a check for if the driver loses their task and reassigns it. * Fixed a bug where the 3D line between waypoints was still being drawn even though 3D waypoints were disabled in the settings menu. * Updated version * Added console command to show info about collected vehicles. * Added ConsoleCommand class, removed AITasking class. * Removed class after refactoring into CollectedVehicle * Update README.md * Update README.md * Added ini setting for Advanced Barrier Options. Added enum for TrafficLight state. Added debug message for invalid barriers. * Updated version * Added MousePositionInWorld and RNUIMouseInputHandler classes * Fixed a crash when a collected ped is arrested. * Refactored to implement RNUIMouseInputHandler class. * Removed unused method. * Updated version * Disabled deletion/creation of shadow barrier and re-enabled updating position based on mouse position. * Added check for Driver's current vehicle in driving loop in case the Driver exited Vehicle at some point. Adjusted some guard clause logic and log messages. * Removed unused variable * Renamed some methods to improve clarity * Updated version.
106 lines
4.3 KiB
C#
106 lines
4.3 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Windows.Forms;
|
|
using Rage;
|
|
|
|
[assembly: Rage.Attributes.Plugin("Scene Manager", Author = "Rich", Description = "Control your scenes with custom AI pathing and traffic barrier management.", PrefersSingleInstance = true)]
|
|
|
|
namespace SceneManager
|
|
{
|
|
public class EntryPoint
|
|
{
|
|
internal static void Main()
|
|
{
|
|
if (CheckRNUIVersion())
|
|
{
|
|
AppDomain.CurrentDomain.DomainUnload += MyTerminationHandler;
|
|
Settings.LoadSettings();
|
|
GetAssemblyVersion();
|
|
MenuManager.InstantiateMenus();
|
|
|
|
DisplayHintsToOpenMenu();
|
|
|
|
GameFiber UserInputFiber = new GameFiber(() => GetUserInput.LoopForUserInput());
|
|
UserInputFiber.Start();
|
|
}
|
|
else
|
|
{
|
|
Game.UnloadActivePlugin();
|
|
return;
|
|
}
|
|
|
|
void GetAssemblyVersion()
|
|
{
|
|
string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|
Game.LogTrivial($"Scene Manager V{version} is ready.");
|
|
}
|
|
}
|
|
private static bool CheckRNUIVersion()
|
|
{
|
|
var directory = Directory.GetCurrentDirectory();
|
|
var exists = File.Exists(directory + @"\RAGENativeUI.dll");
|
|
if (!exists)
|
|
{
|
|
Game.LogTrivial($"RNUI was not found in the user's GTA V directory.");
|
|
Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n~w~RAGENativeUI.dll was not found in your GTA V directory. Please install RAGENativeUI and try again.");
|
|
return false;
|
|
}
|
|
|
|
var userVersion = Assembly.LoadFrom(directory + @"\RAGENativeUI.dll").GetName().Version;
|
|
Version requiredMinimumVersion = new Version("1.7.0.0");
|
|
if(userVersion >= requiredMinimumVersion)
|
|
{
|
|
Game.LogTrivial($"User's RNUI version: {userVersion}");
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
Game.DisplayNotification($"~o~Scene Manager~r~[Error]\n~w~ Your RAGENativeUI.dll version is below 1.7, please update RAGENativeUI and try again.");
|
|
return false;
|
|
}
|
|
|
|
}
|
|
private static void DisplayHintsToOpenMenu()
|
|
{
|
|
if (Settings.ModifierKey == Keys.None && Settings.ModifierButton == ControllerButtons.None)
|
|
{
|
|
Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~To open the menu, press the ~b~{Settings.ToggleKey} key ~w~or ~b~{Settings.ToggleButton} button");
|
|
}
|
|
else if (Settings.ModifierKey == Keys.None)
|
|
{
|
|
Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~To open the menu, press the ~b~{Settings.ToggleKey} key ~w~or ~b~{Settings.ModifierButton} ~w~+ ~b~{Settings.ToggleButton} buttons");
|
|
}
|
|
else if (Settings.ModifierButton == ControllerButtons.None)
|
|
{
|
|
Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~To open the menu, press ~b~{Settings.ModifierKey} ~w~+ ~b~{Settings.ToggleKey} ~w~or the ~b~{Settings.ToggleButton} button");
|
|
}
|
|
else
|
|
{
|
|
Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~To open the menu, press the ~b~{Settings.ModifierKey} ~w~+ ~b~{Settings.ToggleKey} keys ~w~or ~b~{Settings.ModifierButton} ~w~+ ~b~{Settings.ToggleButton} buttons");
|
|
}
|
|
}
|
|
private static void MyTerminationHandler(object sender, EventArgs e)
|
|
{
|
|
// Clean up cones
|
|
foreach (Barrier barrier in BarrierMenu.barriers.Where(b => b.Object))
|
|
{
|
|
barrier.Object.Delete();
|
|
}
|
|
if (BarrierMenu.shadowBarrier)
|
|
{
|
|
BarrierMenu.shadowBarrier.Delete();
|
|
}
|
|
|
|
// Clean up paths
|
|
for (int i = 0; i < PathMainMenu.paths.Count; i++)
|
|
{
|
|
PathMainMenu.DeletePath(PathMainMenu.paths[i], PathMainMenu.Delete.All);
|
|
}
|
|
|
|
Game.LogTrivial($"Plugin has shut down.");
|
|
Game.DisplayNotification($"~o~Scene Manager ~r~[Terminated]\n~w~The plugin has shut down.");
|
|
}
|
|
}
|
|
}
|