From 9ff7aabd9f73c559109111def037277f9c402c88 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:22:19 -0600 Subject: [PATCH 01/74] Mouse can now be used to fully navigate menus --- SceneManager/Menus/BarrierMenu.cs | 335 +++++++++++----- SceneManager/Menus/EditPathMenu.cs | 81 +++- SceneManager/Menus/EditWaypointMenu.cs | 438 +++++++++++++++------ SceneManager/Menus/MainMenu.cs | 39 +- SceneManager/Menus/MenuManager.cs | 1 - SceneManager/Menus/PathCreationMenu.cs | 514 ++++++++++++++++-------- SceneManager/Menus/PathMainMenu.cs | 523 ++++++++++++++++--------- SceneManager/Menus/SettingsMenu.cs | 152 +++++-- 8 files changed, 1476 insertions(+), 607 deletions(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index 84a9477..1b3fdcd 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -21,6 +22,10 @@ namespace SceneManager { barrierMenu.ParentMenu = MainMenu.mainMenu; MenuManager.menuPool.Add(barrierMenu); + + barrierMenu.OnItemSelect += BarrierMenu_OnItemSelected; + barrierMenu.OnScrollerChange += BarrierMenu_OnScrollerChange; + barrierMenu.OnMenuOpen += BarrierMenu_OnMouseDown; } internal static void BuildBarrierMenu() @@ -37,23 +42,20 @@ namespace SceneManager barrierMenu.AddItem(barrierList, 0); barrierList.ForeColor = Color.Gold; - - barrierMenu.OnItemSelect += BarrierMenu_OnItemSelected; - barrierMenu.OnScrollerChange += BarrierMenu_OnScrollerChange; } internal static void CreateShadowBarrier(UIMenu barrierMenu) { - Hints.Display($"~o~Scene Manager ~y~[Hint]\n~y~ ~w~The shadow cone will disappear if you aim too far away."); + Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~The shadow cone will disappear if you aim too far away."); if (shadowBarrier) shadowBarrier.Delete(); - shadowBarrier = new Rage.Object(Settings.barrierValues[barrierList.Index], TracePlayerView(Settings.BarrierPlacementDistance, TraceFlags.IntersectWorld).HitPosition, rotateBarrier.Value); + shadowBarrier = new Object(Settings.barrierValues[barrierList.Index], GetMousePositionInWorld(), rotateBarrier.Value); if (!shadowBarrier) { barrierMenu.Close(); - Game.DisplayNotification($"~o~Scene Manager ~red~[Error]\n~w~ Something went wrong creating the shadow barrier. Please try again."); + Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n~w~Something went wrong creating the shadow barrier. Please try again."); return; } Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); @@ -86,7 +88,7 @@ namespace SceneManager void UpdateShadowBarrierPosition() { DisableBarrierMenuOptionsIfShadowConeTooFar(); - shadowBarrier.SetPositionWithSnap(TracePlayerView(Settings.BarrierPlacementDistance, TraceFlags.IntersectWorld).HitPosition); + shadowBarrier.SetPositionWithSnap(GetMousePositionInWorld()); void DisableBarrierMenuOptionsIfShadowConeTooFar() { @@ -108,37 +110,95 @@ namespace SceneManager } } } + } - //------------ CREDIT PNWPARKS FOR THESE FUNCTIONS ------------\\ - // Implement Parks's 'Get Point Player is Looking At' script for better placement in 3rd person https://bitbucket.org/snippets/gtaparks/MeBKxX + private static void SpawnBarrier() + { + var barrier = new Rage.Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); + barrier.SetPositionWithSnap(shadowBarrier.Position); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(barrier, true); + barrier.IsPositionFrozen = false; + Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true); - HitResult TracePlayerView(float maxTraceDistance = 30f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading)); + removeBarrierOptions.Enabled = true; + resetBarriers.Enabled = true; + } - HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + private static void SpawnFlare() + { + var flare = new Weapon("weapon_flare", shadowBarrier.Position, 1); + + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(flare, true); + GameFiber.StartNew(() => { - Vector3 direction = GetPlayerLookingDirection(out start); - end = start + (maxTraceDistance * direction); - var barrierObjects = barriers.Where(b => b.Object).Select(b => b.Object).ToArray(); - return World.TraceLine(start, end, flags, barrierObjects); + while (flare && flare.HeightAboveGround > 0.05f) + { + GameFiber.Yield(); + } + GameFiber.Sleep(1000); + if (flare) + { + flare.IsPositionFrozen = true; + } + }); + + barriers.Add(new Barrier(flare, flare.Position, flare.Heading)); + removeBarrierOptions.Enabled = true; + } + + private static void RemoveBarrier() + { + switch (removeBarrierOptions.Index) + { + case 0: + barriers[barriers.Count - 1].Object.Delete(); + barriers.RemoveAt(barriers.Count - 1); + break; + case 1: + var nearestBarrier = barriers.OrderBy(b => b.Object.DistanceTo2D(Game.LocalPlayer.Character)).FirstOrDefault(); + if (nearestBarrier != null) + { + nearestBarrier.Object.Delete(); + barriers.Remove(nearestBarrier); + } + break; + case 2: + foreach (Barrier b in barriers.Where(b => b.Object)) + { + b.Object.Delete(); + } + if (barriers.Count > 0) + { + barriers.Clear(); + } + break; } - Vector3 GetPlayerLookingDirection(out Vector3 camPosition) - { - if (Camera.RenderingCamera) - { - camPosition = Camera.RenderingCamera.Position; - return Camera.RenderingCamera.Direction; - } - else - { - float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); - float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + removeBarrierOptions.Enabled = barriers.Count == 0 ? false : true; + resetBarriers.Enabled = barriers.Count == 0 ? false : true; + } - camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); - return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + private static void ResetBarriers() + { + var currentBarriers = barriers.Where(b => b.Model.Name != "0xa2c44e80").ToList(); // 0xa2c44e80 is the flare weapon hash + foreach (Barrier barrier in currentBarriers) + { + var newBarrier = new Rage.Object(barrier.Model, barrier.Position, barrier.Rotation); + newBarrier.SetPositionWithSnap(barrier.Position); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); + newBarrier.IsPositionFrozen = false; + Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); + barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading)); + + + if (barrier.Object) + { + barrier.Object.Delete(); } - } - //------------ CREDIT PNWPARKS FOR THESE FUNCTIONS ------------\\ + barriers.Remove(barrier); + } + currentBarriers.Clear(); } private static void BarrierMenu_OnScrollerChange(UIMenu sender, UIMenuScrollerItem scrollerItem, int oldIndex, int newIndex) @@ -167,7 +227,7 @@ namespace SceneManager private static void BarrierMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) { - if (selectedItem == barrierList as UIMenuItem) + if (selectedItem == barrierList) { // Attach some invisible object to the cone which the AI try to drive around // Barrier rotates with cone and becomes invisible similar to ASC when created @@ -182,101 +242,176 @@ namespace SceneManager } - if (selectedItem == removeBarrierOptions as UIMenuItem) + if (selectedItem == removeBarrierOptions) { RemoveBarrier(); } if (selectedItem == resetBarriers) { - var currentBarriers = barriers.Where(b => b.Model.Name != "0xa2c44e80").ToList(); // 0xa2c44e80 is the flare weapon hash - foreach (Barrier barrier in currentBarriers) + ResetBarriers(); + } + } + + private static void BarrierMenu_OnMouseDown(UIMenu menu) + { + GameFiber.StartNew(() => + { + while (menu.Visible) { - var newBarrier = new Rage.Object(barrier.Model, barrier.Position, barrier.Rotation); - newBarrier.SetPositionWithSnap(barrier.Position); - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); - newBarrier.IsPositionFrozen = false; - Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); - barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading)); - - - if (barrier.Object) + var selectedScroller = menu.MenuItems.Where(x => (x == barrierList || x == rotateBarrier || x == removeBarrierOptions) && x.Selected).FirstOrDefault(); + if (selectedScroller != null) { - barrier.Object.Delete(); + HandleScrollerItemsWithMouseWheel(selectedScroller); } - barriers.Remove(barrier); + + // Add waypoint if menu item is selected and user left clicks + if (Game.IsKeyDown(Keys.LButton)) + { + OnMenuItemClicked(); + } + GameFiber.Yield(); } - currentBarriers.Clear(); - } + }); - void SpawnBarrier() + void OnMenuItemClicked() { - var barrier = new Rage.Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); - barrier.SetPositionWithSnap(shadowBarrier.Position); - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(barrier, true); - barrier.IsPositionFrozen = false; - Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true); - - barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading)); - removeBarrierOptions.Enabled = true; - resetBarriers.Enabled = true; - } - - void SpawnFlare() - { - var flare = new Weapon("weapon_flare", shadowBarrier.Position, 1); - - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(flare, true); - GameFiber.StartNew(() => + if (barrierList.Selected) { - while (flare && flare.HeightAboveGround > 0.05f) + if (barrierList.SelectedItem == "Flare") { - GameFiber.Yield(); + SpawnFlare(); } - GameFiber.Sleep(1000); - if (flare) + else { - flare.IsPositionFrozen = true; + SpawnBarrier(); } - }); - - barriers.Add(new Barrier(flare, flare.Position, flare.Heading)); - removeBarrierOptions.Enabled = true; + } + else if (removeBarrierOptions.Selected) + { + RemoveBarrier(); + } + else if (resetBarriers.Selected) + { + ResetBarriers(); + } } - void RemoveBarrier() + void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) { - switch (removeBarrierOptions.Index) + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + while (Game.IsShiftKeyDownRightNow) { - case 0: - barriers[barriers.Count - 1].Object.Delete(); - barriers.RemoveAt(barriers.Count - 1); - break; - case 1: - var nearestBarrier = barriers.OrderBy(b => b.Object.DistanceTo2D(Game.LocalPlayer.Character)).FirstOrDefault(); - if(nearestBarrier != null) - { - nearestBarrier.Object.Delete(); - barriers.Remove(nearestBarrier); - } - break; - case 2: - foreach (Barrier b in barriers.Where(b => b.Object)) - { - b.Object.Delete(); - } - if (barriers.Count > 0) - { - barriers.Clear(); - } - break; + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + GameFiber.Yield(); } - removeBarrierOptions.Enabled = barriers.Count == 0 ? false : true; - resetBarriers.Enabled = barriers.Count == 0 ? false : true; + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + if (Game.GetMouseWheelDelta() > 0) + { + if (selectedScroller == barrierList) + { + barrierList.ScrollToNextOption(); + CreateShadowBarrier(barrierMenu); + + if (barrierList.SelectedItem == "Flare") + { + rotateBarrier.Enabled = false; + } + else + { + rotateBarrier.Enabled = true; + } + + barrierMenu.Width = SetMenuWidth(); + } + else if (selectedScroller == rotateBarrier) + { + rotateBarrier.ScrollToNextOption(); + shadowBarrier.Heading = rotateBarrier.Value; + } + else if (selectedScroller == removeBarrierOptions) + { + removeBarrierOptions.ScrollToNextOption(); + } + } + else if (Game.GetMouseWheelDelta() < 0) + { + if (selectedScroller == barrierList) + { + barrierList.ScrollToPreviousOption(); + CreateShadowBarrier(barrierMenu); + + if (barrierList.SelectedItem == "Flare") + { + rotateBarrier.Enabled = false; + } + else + { + rotateBarrier.Enabled = true; + } + + barrierMenu.Width = SetMenuWidth(); + } + else if (selectedScroller == rotateBarrier) + { + rotateBarrier.ScrollToPreviousOption(); + shadowBarrier.Heading = rotateBarrier.Value; + } + else if(selectedScroller == removeBarrierOptions) + { + removeBarrierOptions.ScrollToPreviousOption(); + } + } + } } } + private static Vector3 GetMousePositionInWorld() + { + HitResult TracePlayerView(float maxTraceDistance = 30f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + + HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + { + Vector3 direction = GetPlayerLookingDirection(out start); + end = start + (maxTraceDistance * direction); + return World.TraceLine(start, end, flags); + } + + Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + { + if (Camera.RenderingCamera) + { + camPosition = Camera.RenderingCamera.Position; + return Camera.RenderingCamera.Direction; + } + else + { + float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); + float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + + camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); + return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + } + } + + return TracePlayerView(Settings.BarrierPlacementDistance, TraceFlags.IntersectWorld).HitPosition; + } + private static float SetMenuWidth() { float defaultWidth = UIMenu.DefaultWidth; diff --git a/SceneManager/Menus/EditPathMenu.cs b/SceneManager/Menus/EditPathMenu.cs index 59db1a7..dc22dd3 100644 --- a/SceneManager/Menus/EditPathMenu.cs +++ b/SceneManager/Menus/EditPathMenu.cs @@ -1,4 +1,6 @@ using System.Drawing; +using System.Linq; +using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -15,6 +17,9 @@ namespace SceneManager { editPathMenu.ParentMenu = PathMainMenu.pathMainMenu; MenuManager.menuPool.Add(editPathMenu); + editPathMenu.OnItemSelect += EditPath_OnItemSelected; + editPathMenu.OnCheckboxChange += EditPath_OnCheckboxChange; + editPathMenu.OnMenuOpen += EditPath_OnMouseDown; } internal static void BuildEditPathMenu() @@ -26,22 +31,44 @@ namespace SceneManager deletePath.ForeColor = Color.Gold; editPathMenu.RefreshIndex(); - editPathMenu.OnItemSelect += EditPath_OnItemSelected; - editPathMenu.OnCheckboxChange += EditPath_OnCheckboxChange; + } + + private static void EditPathWaypoints() + { + EditWaypointMenu.BuildEditWaypointMenu(); + } + + private static void DeletePath() + { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + PathMainMenu.DeletePath(currentPath, PathMainMenu.Delete.Single); + } + + private static void DisablePath() + { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + if (disablePath.Checked) + { + currentPath.DisablePath(); + Game.LogTrivial($"Path {currentPath.Number} disabled."); + } + else + { + currentPath.EnablePath(); + Game.LogTrivial($"Path {currentPath.Number} enabled."); + } } private static void EditPath_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) { - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - if (selectedItem == editPathWaypoints) { - EditWaypointMenu.BuildEditWaypointMenu(); + EditPathWaypoints(); } if (selectedItem == deletePath) { - PathMainMenu.DeletePath(currentPath, PathMainMenu.Delete.Single); + DeletePath(); } } @@ -49,16 +76,44 @@ namespace SceneManager { if (checkboxItem == disablePath) { - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - if (disablePath.Checked) + DisablePath(); + } + } + + private static void EditPath_OnMouseDown(UIMenu menu) + { + GameFiber.StartNew(() => + { + while (menu.Visible) { - currentPath.DisablePath(); - Logger.Log($"Path {currentPath.Number} disabled."); + // Add waypoint if menu item is selected and user left clicks + if (Game.IsKeyDown(Keys.LButton)) + { + OnCheckboxItemClicked(); + OnMenuItemClicked(); + } + GameFiber.Yield(); } - else + }); + + void OnCheckboxItemClicked() + { + if (disablePath.Selected && disablePath.Enabled) { - currentPath.EnablePath(); - Logger.Log($"Path {currentPath.Number} enabled."); + disablePath.Checked = !disablePath.Checked; + DisablePath(); + } + } + + void OnMenuItemClicked() + { + if (editPathWaypoints.Selected) + { + EditPathWaypoints(); + } + else if (deletePath.Selected) + { + DeletePath(); } } } diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index ad91198..c0d9ea5 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -1,6 +1,7 @@ using System; using System.Drawing; using System.Linq; +using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -16,26 +17,27 @@ namespace SceneManager internal static UIMenuItem removeWaypoint = new UIMenuItem("Remove Waypoint"); internal static UIMenuItem addAsNewWaypoint = new UIMenuItem("Add as New Waypoint", "Adds a new waypoint to the end of the path with these settings"); internal static UIMenuNumericScrollerItem editWaypoint; - internal static UIMenuListScrollerItem changeWaypointType = new UIMenuListScrollerItem("Waypoint Type", "", waypointTypes); private static UIMenuNumericScrollerItem changeWaypointSpeed; internal static UIMenuCheckboxItem stopWaypointType; internal static UIMenuCheckboxItem directWaypointBehavior = new UIMenuCheckboxItem("Drive directly to waypoint?", false, "If checked, vehicles will ignore traffic rules and drive directly to this waypoint."); internal static UIMenuCheckboxItem collectorWaypoint; internal static UIMenuNumericScrollerItem changeCollectorRadius = new UIMenuNumericScrollerItem("Collection Radius", "The distance from this waypoint (in meters) vehicles will be collected", 1, 50, 1); internal static UIMenuNumericScrollerItem changeSpeedZoneRadius = new UIMenuNumericScrollerItem("Speed Zone Radius", "The distance from this collector waypoint (in meters) non-collected vehicles will drive at this waypoint's speed", 5, 200, 5); - internal static UIMenuCheckboxItem updateWaypointPosition = new UIMenuCheckboxItem("Update Waypoint Position", false, "Updates the waypoint's position to the player's current position. You should turn this on if you're planning on adding this waypoint as a new waypoint."); + internal static UIMenuCheckboxItem updateWaypointPosition = new UIMenuCheckboxItem("Update Waypoint Position", false, "Updates the waypoint's position to the player's chosen position. You should turn this on if you're planning on adding this waypoint as a new waypoint."); internal static void InstantiateMenu() { editWaypointMenu.ParentMenu = EditPathMenu.editPathMenu; MenuManager.menuPool.Add(editWaypointMenu); + + editWaypointMenu.OnScrollerChange += EditWaypoint_OnScrollerChanged; + editWaypointMenu.OnCheckboxChange += EditWaypoint_OnCheckboxChanged; + editWaypointMenu.OnItemSelect += EditWaypoint_OnItemSelected; + editWaypointMenu.OnMenuOpen += EditWaypoint_OnMouseDown; } internal static void BuildEditWaypointMenu() { - // Need to unsubscribe from these or else there will be duplicate firings if the user left the menu, then re-entered - ResetEventHandlerSubscriptions(); - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Value-1]; //Logger.Log($"Current path: {currentPath.Number}"); @@ -85,17 +87,116 @@ namespace SceneManager editWaypointMenu.RefreshIndex(); editWaypointMenu.Visible = true; } - + } - void ResetEventHandlerSubscriptions() + private static void UpdateWaypoint(Path currentPath, Waypoint currentWaypoint, DrivingFlagType drivingFlag) + { + if (currentPath.Waypoints.Count == 1) { - editWaypointMenu.OnItemSelect -= EditWaypoint_OnItemSelected; - editWaypointMenu.OnCheckboxChange -= EditWaypoint_OnCheckboxChanged; - editWaypointMenu.OnScrollerChange -= EditWaypoint_OnScrollerChanged; + currentWaypoint.UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + } + else + { + currentWaypoint.UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), collectorWaypoint.Checked, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + } - editWaypointMenu.OnScrollerChange += EditWaypoint_OnScrollerChanged; - editWaypointMenu.OnCheckboxChange += EditWaypoint_OnCheckboxChanged; - editWaypointMenu.OnItemSelect += EditWaypoint_OnItemSelected; + Game.LogTrivial($"Path {currentPath.Number} Waypoint {currentWaypoint.Number} updated [Driving style: {drivingFlag} | Stop waypoint: {stopWaypointType.Checked} | Speed: {changeWaypointSpeed.Value} | Collector: {currentWaypoint.IsCollector}]"); + + updateWaypointPosition.Checked = false; + Game.DisplayNotification($"~o~Scene Manager\n~g~[Success]~w~ Waypoint {currentWaypoint.Number} updated."); + } + + private static void RemoveWaypoint(Path currentPath, Waypoint currentWaypoint, DrivingFlagType drivingFlag) + { + if (currentPath.Waypoints.Count == 1) + { + Game.LogTrivial($"Deleting the last waypoint from the path."); + PathMainMenu.DeletePath(currentPath, PathMainMenu.Delete.Single); + + editWaypointMenu.Visible = false; + PathMainMenu.pathMainMenu.Visible = true; + } + else + { + currentWaypoint.Remove(); + currentPath.Waypoints.Remove(currentWaypoint); + Game.LogTrivial($"[Path {currentPath.Number}] Waypoint {currentWaypoint.Number} ({currentWaypoint.DrivingFlagType}) removed"); + + foreach (Waypoint wp in currentPath.Waypoints) + { + wp.Number = currentPath.Waypoints.IndexOf(wp) + 1; + //Logger.Log($"Waypoint at index {currentPath.Waypoints.IndexOf(wp)} is now waypoint #{wp.Number}"); + } + + editWaypointMenu.Clear(); + BuildEditWaypointMenu(); + + if (currentPath.Waypoints.Count == 1) + { + Hints.Display($"~o~Scene Manager\n~y~[Hint]~w~ Your path's first waypoint ~b~must~w~ be a collector. If it's not, it will automatically be made into one."); + Game.LogTrivial($"The path only has 1 waypoint left, this waypoint must be a collector."); + currentPath.Waypoints[0].UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + collectorWaypoint.Checked = true; + changeCollectorRadius.Enabled = true; + changeSpeedZoneRadius.Enabled = true; + } + } + } + + private static void AddAsNewWaypoint(Path currentPath, DrivingFlagType drivingFlag) + { + var pathIndex = PathMainMenu.paths.IndexOf(currentPath); + var newWaypointBlip = CreateNewWaypointBlip(); + if (!currentPath.IsEnabled) + { + newWaypointBlip.Alpha = 0.5f; + } + + if (collectorWaypoint.Checked) + { + currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, GetMousePositionInWorld(), SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip, true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value)); + } + else + { + currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, GetMousePositionInWorld(), SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip)); + } + + editWaypointMenu.RemoveItemAt(0); + editWaypoint = new UIMenuNumericScrollerItem("Edit Waypoint", "", currentPath.Waypoints.First().Number, currentPath.Waypoints.Last().Number, 1); + editWaypointMenu.AddItem(editWaypoint, 0); + editWaypoint.Index = editWaypoint.OptionCount - 1; + editWaypointMenu.RefreshIndex(); + updateWaypointPosition.Checked = false; + Game.LogTrivial($"New waypoint (#{currentPath.Waypoints.Last().Number}) added."); + + Blip CreateNewWaypointBlip() + { + var spriteNumericalEnum = pathIndex + 17; // 17 because the numerical value of these sprites are always 17 more than the path index + var blip = new Blip(GetMousePositionInWorld()) + { + Scale = 0.5f, + Sprite = (BlipSprite)spriteNumericalEnum + }; + + if (collectorWaypoint.Checked) + { + blip.Color = Color.Blue; + } + else if (stopWaypointType.Checked) + { + blip.Color = Color.Red; + } + else + { + blip.Color = Color.Green; + } + + if (!SettingsMenu.mapBlips.Checked) + { + blip.Alpha = 0f; + } + + return blip; } } @@ -106,8 +207,6 @@ namespace SceneManager if (scrollerItem == editWaypoint) { - //changeWaypointType.Index = Array.IndexOf(drivingFlags, currentWaypoint.DrivingFlag); - changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; @@ -156,119 +255,240 @@ namespace SceneManager if (selectedItem == updateWaypoint) { - if(currentPath.Waypoints.Count == 1) - { - currentWaypoint.UpdateWaypoint(currentWaypoint, drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); - } - else - { - currentWaypoint.UpdateWaypoint(currentWaypoint, drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), collectorWaypoint.Checked, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); - } - - Logger.Log($"Path {currentPath.Number} Waypoint {currentWaypoint.Number} updated [Driving style: {drivingFlag} | Stop waypoint: {stopWaypointType.Checked} | Speed: {changeWaypointSpeed.Value} | Collector: {currentWaypoint.IsCollector}]"); - - updateWaypointPosition.Checked = false; - Game.DisplayNotification($"~o~Scene Manager\n~g~[Success]~w~ Waypoint {currentWaypoint.Number} updated."); - - // Why am I rebuilding the menu?? - //BuildEditWaypointMenu(); + UpdateWaypoint(currentPath, currentWaypoint, drivingFlag); } if (selectedItem == addAsNewWaypoint) { - var pathIndex = PathMainMenu.paths.IndexOf(currentPath); - var newWaypointBlip = CreateNewWaypointBlip(); - if (!currentPath.IsEnabled) - { - newWaypointBlip.Alpha = 0.5f; - } - - if (collectorWaypoint.Checked) - { - currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip, true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value)); - } - else - { - currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip)); - } - - editWaypointMenu.RemoveItemAt(0); - editWaypoint = new UIMenuNumericScrollerItem("Edit Waypoint", "", currentPath.Waypoints.First().Number, currentPath.Waypoints.Last().Number, 1); - editWaypointMenu.AddItem(editWaypoint, 0); - editWaypoint.Index = editWaypoint.OptionCount - 1; - editWaypointMenu.RefreshIndex(); - updateWaypointPosition.Checked = false; - Logger.Log($"New waypoint (#{currentPath.Waypoints.Last().Number}) added."); - - Blip CreateNewWaypointBlip() - { - var spriteNumericalEnum = pathIndex + 17; // 17 because the numerical value of these sprites are always 17 more than the path index - var blip = new Blip(Game.LocalPlayer.Character.Position) - { - Scale = 0.5f, - Sprite = (BlipSprite)spriteNumericalEnum - }; - - if (collectorWaypoint.Checked) - { - blip.Color = Color.Blue; - } - else if (stopWaypointType.Checked) - { - blip.Color = Color.Red; - } - else - { - blip.Color = Color.Green; - } - - if (!SettingsMenu.mapBlips.Checked) - { - blip.Alpha = 0f; - } - - return blip; - } + AddAsNewWaypoint(currentPath, drivingFlag); } if (selectedItem == removeWaypoint) { - if (currentPath.Waypoints.Count == 1) - { - Logger.Log($"Deleting the last waypoint from the path."); - PathMainMenu.DeletePath(currentPath, PathMainMenu.Delete.Single); + RemoveWaypoint(currentPath, currentWaypoint, drivingFlag); + } + } - editWaypointMenu.Visible = false; - PathMainMenu.pathMainMenu.Visible = true; - } - else + private static void EditWaypoint_OnMouseDown(UIMenu menu) + { + GameFiber.StartNew(() => + { + while (menu.Visible) { - currentWaypoint.Remove(); - currentPath.Waypoints.Remove(currentWaypoint); - Logger.Log($"[Path {currentPath.Number}] Waypoint {currentWaypoint.Number} ({currentWaypoint.DrivingFlagType}) removed"); - - foreach (Waypoint wp in currentPath.Waypoints) + var selectedScroller = menu.MenuItems.Where(x => (x == editWaypoint || x == changeWaypointSpeed || x == changeCollectorRadius || x == changeSpeedZoneRadius) && x.Selected).FirstOrDefault(); + if (selectedScroller != null) { - wp.Number = currentPath.Waypoints.IndexOf(wp) + 1; - //Logger.Log($"Waypoint at index {currentPath.Waypoints.IndexOf(wp)} is now waypoint #{wp.Number}"); + HandleScrollerItemsWithMouseWheel(selectedScroller); } - editWaypointMenu.Clear(); - BuildEditWaypointMenu(); - - if (currentPath.Waypoints.Count == 1) + if (Game.IsKeyDown(Keys.LButton)) { - Hints.Display($"~o~Scene Manager\n~y~[Hint]~w~ Your path's first waypoint ~b~must~w~ be a collector. If it's not, it will automatically be made into one."); - Logger.Log($"The path only has 1 waypoint left, this waypoint must be a collector."); - currentPath.Waypoints[0].UpdateWaypoint(currentWaypoint, drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); - collectorWaypoint.Checked = true; - changeCollectorRadius.Enabled = true; - changeSpeedZoneRadius.Enabled = true; + OnCheckboxItemClicked(); + OnMenuItemClicked(); + } + GameFiber.Yield(); + } + }); + + void OnCheckboxItemClicked() + { + if (collectorWaypoint.Selected && collectorWaypoint.Enabled) + { + collectorWaypoint.Checked = !collectorWaypoint.Checked; + } + else if (stopWaypointType.Selected) + { + stopWaypointType.Checked = !stopWaypointType.Checked; + } + else if (directWaypointBehavior.Selected) + { + directWaypointBehavior.Checked = !directWaypointBehavior.Checked; + } + else if (updateWaypointPosition.Selected) + { + updateWaypointPosition.Checked = !updateWaypointPosition.Checked; + if (updateWaypointPosition.Checked) + { + DrawWaypointMarker(GetMousePositionInWorld()); + } + + } + } + + void OnMenuItemClicked() + { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + var currentWaypoint = currentPath.Waypoints[editWaypoint.Index]; + DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; + + if (updateWaypoint.Selected) + { + UpdateWaypoint(currentPath, currentWaypoint, drivingFlag); + } + else if (removeWaypoint.Selected) + { + RemoveWaypoint(currentPath, currentWaypoint, drivingFlag); + } + else if (addAsNewWaypoint.Selected) + { + AddAsNewWaypoint(currentPath, drivingFlag); + } + } + + void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) + { + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + while (Game.IsShiftKeyDownRightNow) + { + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + CompareScrollerValues(); + GameFiber.Yield(); + } + + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + if (Game.GetMouseWheelDelta() > 0) + { + if (selectedScroller == changeCollectorRadius) + { + changeCollectorRadius.ScrollToNextOption(); + } + else if (selectedScroller == changeSpeedZoneRadius) + { + changeSpeedZoneRadius.ScrollToNextOption(); + } + else if (selectedScroller == changeWaypointSpeed) + { + changeWaypointSpeed.ScrollToNextOption(); + } + else if(selectedScroller == editWaypoint) + { + editWaypoint.ScrollToNextOption(); + + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + var currentWaypoint = currentPath.Waypoints[editWaypoint.Value - 1]; + changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); + stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; + directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; + collectorWaypoint.Checked = currentWaypoint.IsCollector; + changeCollectorRadius.Enabled = collectorWaypoint.Checked ? true : false; + changeCollectorRadius.Value = (int)currentWaypoint.CollectorRadius; + changeSpeedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; + changeSpeedZoneRadius.Value = (int)currentWaypoint.SpeedZoneRadius; + updateWaypointPosition.Checked = false; + } + } + else if (Game.GetMouseWheelDelta() < 0) + { + if (selectedScroller == changeCollectorRadius) + { + changeCollectorRadius.ScrollToPreviousOption(); + } + else if (selectedScroller == changeSpeedZoneRadius) + { + changeSpeedZoneRadius.ScrollToPreviousOption(); + } + else if (selectedScroller == changeWaypointSpeed) + { + changeWaypointSpeed.ScrollToPreviousOption(); + } + else if (selectedScroller == editWaypoint) + { + editWaypoint.ScrollToPreviousOption(); + + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + var currentWaypoint = currentPath.Waypoints[editWaypoint.Value - 1]; + changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); + stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; + directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; + collectorWaypoint.Checked = currentWaypoint.IsCollector; + changeCollectorRadius.Enabled = collectorWaypoint.Checked ? true : false; + changeCollectorRadius.Value = (int)currentWaypoint.CollectorRadius; + changeSpeedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; + changeSpeedZoneRadius.Value = (int)currentWaypoint.SpeedZoneRadius; + updateWaypointPosition.Checked = false; + } + } + } + + void CompareScrollerValues() + { + if (selectedScroller == changeCollectorRadius && changeCollectorRadius.Value > changeSpeedZoneRadius.Value) + { + while (changeCollectorRadius.Value > changeSpeedZoneRadius.Value) + { + changeSpeedZoneRadius.ScrollToNextOption(); + } + } + if (selectedScroller == changeSpeedZoneRadius && changeSpeedZoneRadius.Value < changeCollectorRadius.Value) + { + changeCollectorRadius.Value = changeSpeedZoneRadius.Value; } } } } + private static void DrawWaypointMarker(Vector3 waypointPosition) + { + if (SettingsMenu.threeDWaypoints.Checked && collectorWaypoint.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); + } + else if (stopWaypointType.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); + } + else + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + } + } + + private static Vector3 GetMousePositionInWorld() + { + HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + + HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + { + Vector3 direction = GetPlayerLookingDirection(out start); + end = start + (maxTraceDistance * direction); + return World.TraceLine(start, end, flags); + } + + Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + { + if (Camera.RenderingCamera) + { + camPosition = Camera.RenderingCamera.Position; + return Camera.RenderingCamera.Direction; + } + else + { + float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); + float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + + camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); + return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + } + } + + return TracePlayerView(100f, TraceFlags.IntersectWorld).HitPosition; + } + private static float SetDriveSpeedForWaypoint() { float convertedSpeed; diff --git a/SceneManager/Menus/MainMenu.cs b/SceneManager/Menus/MainMenu.cs index f06163b..fe80425 100644 --- a/SceneManager/Menus/MainMenu.cs +++ b/SceneManager/Menus/MainMenu.cs @@ -1,6 +1,9 @@ -using RAGENativeUI; +using Rage; +using RAGENativeUI; using RAGENativeUI.Elements; using System.Drawing; +using System.Linq; +using System.Windows.Forms; namespace SceneManager { @@ -29,6 +32,7 @@ namespace SceneManager mainMenu.RefreshIndex(); mainMenu.OnItemSelect += MainMenu_OnItemSelected; + mainMenu.OnMenuOpen += MainMenu_OnMouseDown; } private static void MainMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) @@ -38,5 +42,38 @@ namespace SceneManager BarrierMenu.CreateShadowBarrier(BarrierMenu.barrierMenu); } } + + private static void MainMenu_OnMouseDown(UIMenu menu) + { + GameFiber.StartNew(() => + { + while (menu.Visible) + { + if (Game.IsKeyDown(Keys.LButton)) + { + menu.Visible = false; + OnMenuItemClicked(); + } + GameFiber.Yield(); + } + }); + + void OnMenuItemClicked() + { + if (navigateToPathMenu.Selected) + { + PathMainMenu.pathMainMenu.Visible = true; + } + else if (navigateToBarrierMenu.Selected) + { + BarrierMenu.barrierMenu.Visible = true; + BarrierMenu.CreateShadowBarrier(BarrierMenu.barrierMenu); + } + else if (navigateToSettingsMenu.Selected) + { + SettingsMenu.settingsMenu.Visible = true; + } + } + } } } diff --git a/SceneManager/Menus/MenuManager.cs b/SceneManager/Menus/MenuManager.cs index cb0e63e..db825c6 100644 --- a/SceneManager/Menus/MenuManager.cs +++ b/SceneManager/Menus/MenuManager.cs @@ -34,7 +34,6 @@ namespace SceneManager MainMenu.BuildMainMenu(); SettingsMenu.BuildSettingsMenu(); PathMainMenu.BuildPathMenu(); - PathCreationMenu.BuildPathCreationMenu(); EditPathMenu.BuildEditPathMenu(); BarrierMenu.BuildBarrierMenu(); } diff --git a/SceneManager/Menus/PathCreationMenu.cs b/SceneManager/Menus/PathCreationMenu.cs index bf9553d..9855cb5 100644 --- a/SceneManager/Menus/PathCreationMenu.cs +++ b/SceneManager/Menus/PathCreationMenu.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -10,22 +11,24 @@ namespace SceneManager { class PathCreationMenu { - private static VehicleDrivingFlags[] drivingFlags = new VehicleDrivingFlags[] { VehicleDrivingFlags.Normal, VehicleDrivingFlags.IgnorePathFinding, VehicleDrivingFlags.StopAtDestination }; // Implement custom driving flag for normal - private static string[] waypointTypes = new string[] { "Drive To (Normal)", "Drive To (Direct)", "Stop" }; internal static UIMenu pathCreationMenu = new UIMenu("Scene Manager", "~o~Path Creation Menu"); private static UIMenuItem trafficAddWaypoint = new UIMenuItem("Add waypoint"), trafficRemoveWaypoint = new UIMenuItem("Remove last waypoint"), trafficEndPath = new UIMenuItem("End path creation"); - internal static UIMenuListScrollerItem waypointType = new UIMenuListScrollerItem("Waypoint Type", $"~b~Drive To (Normal): ~w~AI obeys traffic as much as possible{Environment.NewLine}~b~Drive To (Direct): ~w~AI ignores pathfinding rules{Environment.NewLine}~b~Stop: ~w~AI stops at the waypoint until dismissed", waypointTypes); - private static UIMenuNumericScrollerItem waypointSpeed; + internal static UIMenuNumericScrollerItem waypointSpeed; internal static UIMenuCheckboxItem stopWaypointType = new UIMenuCheckboxItem("Is this a Stop waypoint?", false, "If checked, vehicles will drive to this waypoint, then stop."); internal static UIMenuCheckboxItem directWaypointBehavior = new UIMenuCheckboxItem("Drive directly to waypoint?", false, "If checked, vehicles will ignore traffic rules and drive directly to this waypoint."); internal static UIMenuCheckboxItem collectorWaypoint = new UIMenuCheckboxItem("Collector", true, "If checked, this waypoint will collect vehicles to follow the path. Your path's first waypoint ~b~must~w~ be a collector."); internal static UIMenuNumericScrollerItem collectorRadius = new UIMenuNumericScrollerItem("Collection Radius", "The distance from this waypoint (in meters) vehicles will be collected", 1, 50, 1); internal static UIMenuNumericScrollerItem speedZoneRadius = new UIMenuNumericScrollerItem("Speed Zone Radius", "The distance from this collector waypoint (in meters) non-collected vehicles will drive at this waypoint's speed", 5, 200, 5); + private static List menuItems = new List {collectorWaypoint, collectorRadius, speedZoneRadius, stopWaypointType, directWaypointBehavior, waypointSpeed, trafficAddWaypoint, trafficRemoveWaypoint, trafficEndPath }; internal static void InstantiateMenu() { pathCreationMenu.ParentMenu = PathMainMenu.pathMainMenu; MenuManager.menuPool.Add(pathCreationMenu); + pathCreationMenu.OnItemSelect += PathCreation_OnItemSelected; + pathCreationMenu.OnCheckboxChange += PathCreation_OnCheckboxChanged; + pathCreationMenu.OnScrollerChange += PathCreation_OnScrollerChanged; + pathCreationMenu.OnMenuOpen += PathCreation_OnMouseDown; } internal static void BuildPathCreationMenu() @@ -35,18 +38,20 @@ namespace SceneManager collectorWaypoint.Checked = true; pathCreationMenu.AddItem(collectorRadius); - collectorRadius.Index = 0; + collectorRadius.Index = Settings.CollectorRadius - 1; collectorRadius.Enabled = true; pathCreationMenu.AddItem(speedZoneRadius); - speedZoneRadius.Index = 0; + speedZoneRadius.Index = (Settings.SpeedZoneRadius / 5) - 1; speedZoneRadius.Enabled = true; pathCreationMenu.AddItem(stopWaypointType); + stopWaypointType.Checked = Settings.StopWaypoint; pathCreationMenu.AddItem(directWaypointBehavior); + directWaypointBehavior.Checked = Settings.DirectDrivingBehavior; pathCreationMenu.AddItem(waypointSpeed = new UIMenuNumericScrollerItem("Waypoint Speed", $"How fast the AI will drive to this waypoint in ~b~{SettingsMenu.speedUnits.SelectedItem}", 5, 100, 5)); - waypointSpeed.Index = 0; + waypointSpeed.Index = (Settings.WaypointSpeed / 5) - 1; pathCreationMenu.AddItem(trafficAddWaypoint); trafficAddWaypoint.ForeColor = Color.Gold; @@ -60,9 +65,6 @@ namespace SceneManager trafficEndPath.Enabled = false; pathCreationMenu.RefreshIndex(); - pathCreationMenu.OnItemSelect += PathCreation_OnItemSelected; - pathCreationMenu.OnCheckboxChange += PathCreation_OnCheckboxChanged; - pathCreationMenu.OnScrollerChange += PathCreation_OnScrollerChanged; } private static void PathCreation_OnCheckboxChanged(UIMenu sender, UIMenuCheckboxItem checkboxItem, bool @checked) @@ -75,170 +77,20 @@ namespace SceneManager } private static void PathCreation_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) - { + { if (selectedItem == trafficAddWaypoint) { - var anyPathsExist = PathMainMenu.paths.Count > 0; - - if (!anyPathsExist) - { - AddNewPathToPathsCollection(PathMainMenu.paths, 0); - } - else if(anyPathsExist && !PathMainMenu.paths.Any(p => p != null && p.State == State.Creating)) - { - AddNewPathToPathsCollection(PathMainMenu.paths, PathMainMenu.paths.IndexOf(PathMainMenu.paths.Where(p => p.State == State.Finished).Last()) + 1); - } - - var firstNonNullPath = PathMainMenu.paths.Where(p => p != null && p.State == State.Creating).First(); - var pathIndex = PathMainMenu.paths.IndexOf(firstNonNullPath); - var pathNumber = firstNonNullPath.Number; - var waypointNumber = PathMainMenu.paths[pathIndex].Waypoints.Count + 1; - DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; - - if (collectorWaypoint.Checked) - { - PathMainMenu.paths[pathIndex].Waypoints.Add(new Waypoint(firstNonNullPath, waypointNumber, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, CreateWaypointBlip(), true, collectorRadius.Value, speedZoneRadius.Value)); - } - else - { - PathMainMenu.paths[pathIndex].Waypoints.Add(new Waypoint(firstNonNullPath, waypointNumber, Game.LocalPlayer.Character.Position, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, CreateWaypointBlip())); - } - Logger.Log($"Path {pathNumber} Waypoint {waypointNumber} added [Driving style: {drivingFlag} | Stop waypoint: {stopWaypointType.Checked} | Speed: {waypointSpeed.Value} | Collector: {collectorWaypoint.Checked}]"); - - ToggleTrafficEndPathMenuItem(pathIndex); - collectorWaypoint.Enabled = true; - collectorWaypoint.Checked = false; - trafficRemoveWaypoint.Enabled = true; - PathMainMenu.createNewPath.Text = $"Continue Creating Path {pathNumber}"; - - float SetDriveSpeedForWaypoint() - { - float convertedSpeed; - if (SettingsMenu.speedUnits.SelectedItem == SpeedUnits.MPH) - { - //Logger.Log($"Original speed: {waypointSpeeds[waypointSpeed.Index]}{SettingsMenu.speedUnits.SelectedItem}"); - convertedSpeed = MathHelper.ConvertMilesPerHourToMetersPerSecond(waypointSpeed.Value); - //Logger.Log($"Converted speed: {convertedSpeed}m/s"); - } - else - { - //Logger.Log($"Original speed: {waypointSpeeds[waypointSpeed.Index]}{SettingsMenu.speedUnits.SelectedItem}"); - convertedSpeed = MathHelper.ConvertKilometersPerHourToMetersPerSecond(waypointSpeed.Value); - //Logger.Log($"Converted speed: {convertedSpeed}m/s"); - } - - return convertedSpeed; - } - - Blip CreateWaypointBlip() - { - var spriteNumericalEnum = pathIndex + 17; // 17 because the numerical value of these sprites are always 17 more than the path index - var blip = new Blip(Game.LocalPlayer.Character.Position) - { - Scale = 0.5f, - Sprite = (BlipSprite)spriteNumericalEnum - }; - - if (collectorWaypoint.Checked) - { - blip.Color = Color.Blue; - } - else if (stopWaypointType.Checked) - { - blip.Color = Color.Red; - } - else - { - blip.Color = Color.Green; - } - - if (!SettingsMenu.mapBlips.Checked) - { - blip.Alpha = 0f; - } - - return blip; - } + AddNewWaypoint(GetMousePositionInWorld()); } if (selectedItem == trafficRemoveWaypoint) { - // Loop through each path and find the first one which isn't finished, then delete the path's last waypoint and corresponding blip - for (int i = 0; i < PathMainMenu.paths.Count; i++) - { - if (PathMainMenu.paths.ElementAtOrDefault(i) != null && PathMainMenu.paths[i].State == State.Creating) - { - Logger.Log($"[Path {i + 1}] {PathMainMenu.paths[i].Waypoints.Last().DrivingFlagType} waypoint removed"); - PathMainMenu.paths[i].Waypoints.Last().Blip.Delete(); - PathMainMenu.paths[i].Waypoints.Last().RemoveSpeedZone(); - - if (PathMainMenu.paths[i].Waypoints.Last().CollectorRadiusBlip) - { - PathMainMenu.paths[i].Waypoints.Last().CollectorRadiusBlip.Delete(); - } - PathMainMenu.paths[i].Waypoints.RemoveAt(PathMainMenu.paths[i].Waypoints.IndexOf(PathMainMenu.paths[i].Waypoints.Last())); - - ToggleTrafficEndPathMenuItem(i); - - // If the path has no waypoints, disable the menu option to remove a waypoint - if (PathMainMenu.paths[i].Waypoints.Count == 0) - { - collectorWaypoint.Checked = true; - collectorWaypoint.Enabled = false; - speedZoneRadius.Enabled = true; - collectorRadius.Enabled = true; - trafficRemoveWaypoint.Enabled = false; - trafficEndPath.Enabled = false; - } - } - } + RemoveWaypoint(); } if (selectedItem == trafficEndPath) { - // Loop through each path and find the first one which isn't finished - for (int i = 0; i < PathMainMenu.paths.Count; i++) - { - var currentPath = PathMainMenu.paths[i]; - if (PathMainMenu.paths.ElementAtOrDefault(i) != null && currentPath.State == State.Creating) - { - Logger.Log($"[Path Creation] Path {currentPath.Number} finished with {currentPath.Waypoints.Count} waypoints."); - Game.DisplayNotification($"~o~Scene Manager\n~g~[Success]~w~ Path {i + 1} complete."); - currentPath.State = State.Finished; - currentPath.IsEnabled = true; - currentPath.Number = i + 1; - currentPath.LoopForVehiclesToBeDismissed(); - - GameFiber.StartNew(() => - { - currentPath.LoopWaypointCollection(); - //foreach(Waypoint waypoint in PathMainMenu.paths[i].Waypoints) - //{ - // GameFiber WaypointVehicleCollectorFiber = new GameFiber(() => waypoint.CollectVehicles(PathMainMenu.paths)); - // WaypointVehicleCollectorFiber.Start(); - // GameFiber.Sleep(1000); - //} - }); - - PathMainMenu.createNewPath.Text = "Create New Path"; - PathMainMenu.BuildPathMenu(); - PathMainMenu.pathMainMenu.RefreshIndex(); - pathCreationMenu.RefreshIndex(); - waypointSpeed.Index = 0; - collectorWaypoint.Enabled = false; - collectorWaypoint.Checked = true; - speedZoneRadius.Enabled = true; - speedZoneRadius.Index = 0; - collectorRadius.Enabled = true; - collectorRadius.Index = 0; - stopWaypointType.Checked = false; - directWaypointBehavior.Checked = false; - trafficEndPath.Enabled = false; - PathMainMenu.pathMainMenu.Visible = true; - - break; - } - } + EndPath(); } } @@ -248,22 +100,300 @@ namespace SceneManager { if (collectorRadius.Value > speedZoneRadius.Value) { - while(collectorRadius.Value > speedZoneRadius.Value) + while (collectorRadius.Value > speedZoneRadius.Value) { speedZoneRadius.ScrollToNextOption(); } } } - if(scrollerItem == speedZoneRadius) + if (scrollerItem == speedZoneRadius) { - if(speedZoneRadius.Value < collectorRadius.Value) + if (speedZoneRadius.Value < collectorRadius.Value) { collectorRadius.Value = speedZoneRadius.Value; } } } + private static void PathCreation_OnMouseDown(UIMenu menu) + { + GameFiber.StartNew(() => + { + while (menu.Visible) + { + var selectedScroller = menu.MenuItems.Where(x => (x == collectorRadius || x == speedZoneRadius || x == waypointSpeed) && x.Selected).FirstOrDefault(); + if (selectedScroller != null) + { + HandleScrollerItemsWithMouseWheel(selectedScroller); + } + + // Draw marker at mouse position + DrawWaypointMarker(GetMousePositionInWorld()); + + // Add waypoint if menu item is selected and user left clicks + if (Game.IsKeyDown(Keys.LButton)) + { + OnCheckboxItemClicked(); + OnMenuItemClicked(); + } + GameFiber.Yield(); + } + }); + + void OnCheckboxItemClicked() + { + if (collectorWaypoint.Selected && collectorWaypoint.Enabled) + { + collectorWaypoint.Checked = !collectorWaypoint.Checked; + } + else if (stopWaypointType.Selected) + { + stopWaypointType.Checked = !stopWaypointType.Checked; + } + else if (directWaypointBehavior.Selected) + { + directWaypointBehavior.Checked = !directWaypointBehavior.Checked; + } + } + + void OnMenuItemClicked() + { + if (trafficAddWaypoint.Selected) + { + AddNewWaypoint(GetMousePositionInWorld()); + } + else if (trafficRemoveWaypoint.Selected) + { + RemoveWaypoint(); + } + else if (trafficEndPath.Selected) + { + EndPath(); + } + } + + void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) + { + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + while (Game.IsShiftKeyDownRightNow) + { + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + CompareScrollerValues(); + DrawWaypointMarker(GetMousePositionInWorld()); + GameFiber.Yield(); + } + + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + if (Game.GetMouseWheelDelta() > 0) + { + if (selectedScroller == collectorRadius) + { + collectorRadius.ScrollToNextOption(); + } + else if (selectedScroller == speedZoneRadius) + { + speedZoneRadius.ScrollToNextOption(); + } + else if (selectedScroller == waypointSpeed) + { + waypointSpeed.ScrollToNextOption(); + } + } + else if (Game.GetMouseWheelDelta() < 0) + { + if (selectedScroller == collectorRadius) + { + collectorRadius.ScrollToPreviousOption(); + } + else if (selectedScroller == speedZoneRadius) + { + speedZoneRadius.ScrollToPreviousOption(); + } + else if (selectedScroller == waypointSpeed) + { + waypointSpeed.ScrollToPreviousOption(); + } + } + } + + void CompareScrollerValues() + { + if (selectedScroller == collectorRadius && collectorRadius.Value > speedZoneRadius.Value) + { + while (collectorRadius.Value > speedZoneRadius.Value) + { + speedZoneRadius.ScrollToNextOption(); + } + } + if (selectedScroller == speedZoneRadius && speedZoneRadius.Value < collectorRadius.Value) + { + collectorRadius.Value = speedZoneRadius.Value; + } + } + } + } + + private static void AddNewWaypoint(Vector3 waypointPosition) + { + var anyPathsExist = PathMainMenu.paths.Count > 0; + + if (!anyPathsExist) + { + AddNewPathToPathsCollection(PathMainMenu.paths, 0); + } + else if (anyPathsExist && !PathMainMenu.paths.Any(p => p != null && p.State == State.Creating)) + { + AddNewPathToPathsCollection(PathMainMenu.paths, PathMainMenu.paths.IndexOf(PathMainMenu.paths.Where(p => p.State == State.Finished).Last()) + 1); + } + + var firstNonNullPath = PathMainMenu.paths.Where(p => p != null && p.State == State.Creating).First(); + var pathIndex = PathMainMenu.paths.IndexOf(firstNonNullPath); + var pathNumber = firstNonNullPath.Number; + var waypointNumber = PathMainMenu.paths[pathIndex].Waypoints.Count + 1; + DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; + + if (collectorWaypoint.Checked) + { + PathMainMenu.paths[pathIndex].Waypoints.Add(new Waypoint(firstNonNullPath, waypointNumber, waypointPosition, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, CreateWaypointBlip(), true, collectorRadius.Value, speedZoneRadius.Value)); + } + else + { + PathMainMenu.paths[pathIndex].Waypoints.Add(new Waypoint(firstNonNullPath, waypointNumber, waypointPosition, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, CreateWaypointBlip())); + } + Game.LogTrivial($"Path {pathNumber} Waypoint {waypointNumber} added [Driving style: {drivingFlag} | Stop waypoint: {stopWaypointType.Checked} | Speed: {waypointSpeed.Value} | Collector: {collectorWaypoint.Checked}]"); + + ToggleTrafficEndPathMenuItem(pathIndex); + collectorWaypoint.Enabled = true; + collectorWaypoint.Checked = false; + trafficRemoveWaypoint.Enabled = true; + PathMainMenu.createNewPath.Text = $"Continue Creating Path {pathNumber}"; + + float SetDriveSpeedForWaypoint() + { + float convertedSpeed; + if (SettingsMenu.speedUnits.SelectedItem == SpeedUnits.MPH) + { + //Logger.Log($"Original speed: {waypointSpeeds[waypointSpeed.Index]}{SettingsMenu.speedUnits.SelectedItem}"); + convertedSpeed = MathHelper.ConvertMilesPerHourToMetersPerSecond(waypointSpeed.Value); + //Logger.Log($"Converted speed: {convertedSpeed}m/s"); + } + else + { + //Logger.Log($"Original speed: {waypointSpeeds[waypointSpeed.Index]}{SettingsMenu.speedUnits.SelectedItem}"); + convertedSpeed = MathHelper.ConvertKilometersPerHourToMetersPerSecond(waypointSpeed.Value); + //Logger.Log($"Converted speed: {convertedSpeed}m/s"); + } + + return convertedSpeed; + } + + Blip CreateWaypointBlip() + { + var spriteNumericalEnum = pathIndex + 17; // 17 because the numerical value of these sprites are always 17 more than the path index + var blip = new Blip(waypointPosition) + { + Scale = 0.5f, + Sprite = (BlipSprite)spriteNumericalEnum + }; + + if (collectorWaypoint.Checked) + { + blip.Color = Color.Blue; + } + else if (stopWaypointType.Checked) + { + blip.Color = Color.Red; + } + else + { + blip.Color = Color.Green; + } + + if (!SettingsMenu.mapBlips.Checked) + { + blip.Alpha = 0f; + } + + return blip; + } + } + + private static void RemoveWaypoint() + { + for (int i = 0; i < PathMainMenu.paths.Count; i++) + { + if (PathMainMenu.paths.ElementAtOrDefault(i) != null && PathMainMenu.paths[i].State == State.Creating) + { + Game.LogTrivial($"[Path {i + 1}] {PathMainMenu.paths[i].Waypoints.Last().DrivingFlagType} waypoint removed"); + PathMainMenu.paths[i].Waypoints.Last().Blip.Delete(); + PathMainMenu.paths[i].Waypoints.Last().RemoveSpeedZone(); + + if (PathMainMenu.paths[i].Waypoints.Last().CollectorRadiusBlip) + { + PathMainMenu.paths[i].Waypoints.Last().CollectorRadiusBlip.Delete(); + } + PathMainMenu.paths[i].Waypoints.RemoveAt(PathMainMenu.paths[i].Waypoints.IndexOf(PathMainMenu.paths[i].Waypoints.Last())); + + ToggleTrafficEndPathMenuItem(i); + + // If the path has no waypoints, disable the menu option to remove a waypoint + if (PathMainMenu.paths[i].Waypoints.Count == 0) + { + collectorWaypoint.Checked = true; + collectorWaypoint.Enabled = false; + speedZoneRadius.Enabled = true; + collectorRadius.Enabled = true; + trafficRemoveWaypoint.Enabled = false; + trafficEndPath.Enabled = false; + } + } + } + } + + private static void EndPath() + { + for (int i = 0; i < PathMainMenu.paths.Count; i++) + { + var currentPath = PathMainMenu.paths[i]; + if (PathMainMenu.paths.ElementAtOrDefault(i) != null && currentPath.State == State.Creating) + { + Game.LogTrivial($"[Path Creation] Path {currentPath.Number} finished with {currentPath.Waypoints.Count} waypoints."); + Game.DisplayNotification($"~o~Scene Manager ~g~[Success]\n~w~Path {i + 1} complete."); + currentPath.State = State.Finished; + currentPath.IsEnabled = true; + currentPath.Number = i + 1; + currentPath.LoopForVehiclesToBeDismissed(); + + GameFiber.StartNew(() => + { + currentPath.LoopWaypointCollection(); + }); + + PathMainMenu.createNewPath.Text = "Create New Path"; + PathMainMenu.BuildPathMenu(); + PathMainMenu.pathMainMenu.RefreshIndex(); + pathCreationMenu.Clear(); + PathMainMenu.pathMainMenu.Visible = true; + break; + } + } + } + private static void ToggleTrafficEndPathMenuItem(int pathIndex) { if (PathMainMenu.paths[pathIndex].Waypoints.Count > 0) @@ -279,11 +409,59 @@ namespace SceneManager internal static void AddNewPathToPathsCollection(List paths, int pathIndex) { var pathNum = pathIndex + 1; - Logger.Log($"Creating path {pathNum}"); + Game.LogTrivial($"Creating path {pathNum}"); Game.DisplayNotification($"~o~Scene Manager\n~y~[Creating]~w~ Path {pathNum} started."); paths.Insert(pathIndex, new Path(pathNum, State.Creating)); trafficRemoveWaypoint.Enabled = false; trafficEndPath.Enabled = false; } + + private static void DrawWaypointMarker(Vector3 waypointPosition) + { + if (SettingsMenu.threeDWaypoints.Checked && collectorWaypoint.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); + } + else if (stopWaypointType.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); + } + else + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + } + } + + private static Vector3 GetMousePositionInWorld() + { + HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + + HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + { + Vector3 direction = GetPlayerLookingDirection(out start); + end = start + (maxTraceDistance * direction); + return World.TraceLine(start, end, flags); + } + + Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + { + if (Camera.RenderingCamera) + { + camPosition = Camera.RenderingCamera.Position; + return Camera.RenderingCamera.Direction; + } + else + { + float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); + float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + + camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); + return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + } + } + + return TracePlayerView(100f, TraceFlags.IntersectWorld).HitPosition; + } } } diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index 5c41188..d17bbf5 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -2,25 +2,20 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; namespace SceneManager { - public enum DismissOption - { - FromPath = 0, - FromWaypoint = 1, - FromWorld = 2, - FromPlayer = 3, - FromDirected = 4 - } + static class PathMainMenu { internal static List paths = new List() { }; - private static List dismissOptions = new List() { "From path", "From waypoint", "From world" }; + private static string[] dismissOptions = new string[] { "From path", "From waypoint", "From world" }; + //private static List dismissOptions = new List() { "From path", "From waypoint", "From world" }; internal static UIMenu pathMainMenu = new UIMenu("Scene Manager", "~o~Path Manager Main Menu"); internal static UIMenuItem createNewPath; @@ -41,13 +36,13 @@ namespace SceneManager { pathMainMenu.ParentMenu = MainMenu.mainMenu; MenuManager.menuPool.Add(pathMainMenu); + pathMainMenu.OnItemSelect += PathMenu_OnItemSelected; + pathMainMenu.OnCheckboxChange += PathMenu_OnCheckboxChange; + pathMainMenu.OnMenuOpen += PathMenu_OnMouseDown; } internal static void BuildPathMenu() { - // Need to unsubscribe from events, else there will be duplicate firings if the user left the menu and re-entered - ResetEventHandlerSubscriptions(); - MenuManager.menuPool.CloseAllMenus(); pathMainMenu.Clear(); @@ -81,14 +76,6 @@ namespace SceneManager } MenuManager.menuPool.RefreshIndex(); - - void ResetEventHandlerSubscriptions() - { - pathMainMenu.OnItemSelect -= PathMenu_OnItemSelected; - pathMainMenu.OnCheckboxChange -= PathMenu_OnCheckboxChange; - pathMainMenu.OnItemSelect += PathMenu_OnItemSelected; - pathMainMenu.OnCheckboxChange += PathMenu_OnCheckboxChange; - } } private static bool VehicleAndDriverValid(this Vehicle v) @@ -103,6 +90,68 @@ namespace SceneManager } } + private static void GoToPathCreationMenu() + { + if (createNewPath.Text.Contains("Continue")) + { + pathMainMenu.Visible = false; + PathCreationMenu.pathCreationMenu.Visible = true; + } + else + { + PathCreationMenu.pathCreationMenu.Clear(); + PathCreationMenu.BuildPathCreationMenu(); + pathMainMenu.Visible = false; + PathCreationMenu.pathCreationMenu.Visible = true; + //Draw3DWaypointOnPlayer(); + + // For each element in paths, determine if the element exists but is not finished yet, or if it doesn't exist, create it. + for (int i = 0; i <= paths.Count; i++) + { + if (paths.ElementAtOrDefault(i) != null && paths[i].State == State.Creating) + { + //Game.LogTrivial($"Resuming path {paths[i].Number}"); + Game.DisplayNotification($"~o~Scene Manager~y~[Creating]\n~w~Resuming path {paths[i].Number}"); + break; + } + } + } + } + + private static void DisableAllPaths() + { + if (disableAllPaths.Checked) + { + foreach (Path path in paths) + { + path.DisablePath(); + } + Game.LogTrivial($"All paths disabled."); + } + else + { + foreach (Path path in paths) + { + path.EnablePath(); + } + Game.LogTrivial($"All paths enabled."); + } + } + + private static void DeleteAllPaths() + { + for (int i = 0; i < paths.Count; i++) + { + DeletePath(paths[i], Delete.All); + } + disableAllPaths.Checked = false; + paths.Clear(); + BuildPathMenu(); + pathMainMenu.Visible = true; + Game.LogTrivial($"All paths deleted"); + Game.DisplayNotification($"~o~Scene Manager\n~w~All paths deleted."); + } + internal static void DeletePath(Path path, Delete pathsToDelete) { //Game.LogTrivial($"Preparing to delete path {path.Number}"); @@ -196,129 +245,114 @@ namespace SceneManager } } - private static void PathMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) + private static void DirectDriver() { - if (selectedItem == createNewPath) - { - pathMainMenu.Visible = false; - PathCreationMenu.pathCreationMenu.Visible = true; - Draw3DWaypointOnPlayer(); + var nearbyVehicle = Game.LocalPlayer.Character.GetNearbyVehicles(16).Where(v => v != Game.LocalPlayer.Character.CurrentVehicle && v.VehicleAndDriverValid()).FirstOrDefault(); + var path = paths[directDriver.Index]; + var collectedVehicle = path.CollectedVehicles.Where(cv => cv.Vehicle == nearbyVehicle).FirstOrDefault(); + var waypoints = path.Waypoints; + var firstWaypoint = waypoints.First(); + var nearestWaypoint = waypoints.Where(wp => wp.Position.DistanceTo2D(nearbyVehicle.FrontPosition) < wp.Position.DistanceTo2D(nearbyVehicle.RearPosition)).OrderBy(wp => wp.Position.DistanceTo2D(nearbyVehicle)).FirstOrDefault(); - // For each element in paths, determine if the element exists but is not finished yet, or if it doesn't exist, create it. - for (int i = 0; i <= paths.Count; i++) + if (nearbyVehicle) + { + var nearbyVehiclePath = paths.Where(p => p.CollectedVehicles.Any(v => v.Vehicle == nearbyVehicle)).FirstOrDefault(); + if (nearbyVehiclePath != null) { - if (paths.ElementAtOrDefault(i) != null && paths[i].State == State.Creating) + var nearbyCollectedVehicle = nearbyVehiclePath.CollectedVehicles.Where(v => v.Vehicle == nearbyVehicle).FirstOrDefault(); + if (nearbyCollectedVehicle != null) { - //Game.LogTrivial($"Resuming path {paths[i].Number}"); - Game.DisplayNotification($"~o~Scene Manager\n~y~[Creating]~w~ Resuming path {paths[i].Number}"); - break; - } - } - } - - if (selectedItem == editPath) - { - pathMainMenu.Visible = false; - EditPathMenu.editPathMenu.Visible = true; - } - - if (selectedItem == deleteAllPaths) - { - // Iterate through each item in paths and delete it - for (int i = 0; i < paths.Count; i++) - { - DeletePath(paths[i], Delete.All); - } - disableAllPaths.Checked = false; - paths.Clear(); - BuildPathMenu(); - pathMainMenu.Visible = true; - Game.LogTrivial($"All paths deleted"); - Game.DisplayNotification($"~o~Scene Manager\n~w~All paths deleted."); - } - - if (selectedItem == directDriver) - { - var nearbyVehicle = Game.LocalPlayer.Character.GetNearbyVehicles(16).Where(v => v != Game.LocalPlayer.Character.CurrentVehicle && v.VehicleAndDriverValid()).FirstOrDefault(); - var path = paths[directDriver.Index]; - var collectedVehicle = path.CollectedVehicles.Where(cv => cv.Vehicle == nearbyVehicle).FirstOrDefault(); - var waypoints = path.Waypoints; - var firstWaypoint = waypoints.First(); - var nearestWaypoint = waypoints.Where(wp => wp.Position.DistanceTo2D(nearbyVehicle.FrontPosition) < wp.Position.DistanceTo2D(nearbyVehicle.RearPosition)).OrderBy(wp => wp.Position.DistanceTo2D(nearbyVehicle)).FirstOrDefault(); - - if (nearbyVehicle) - { - var nearbyVehiclePath = paths.Where(p => p.CollectedVehicles.Any(v => v.Vehicle == nearbyVehicle)).FirstOrDefault(); - if(nearbyVehiclePath != null) - { - var nearbyCollectedVehicle = nearbyVehiclePath.CollectedVehicles.Where(v => v.Vehicle == nearbyVehicle).FirstOrDefault(); - if (nearbyCollectedVehicle != null) - { - nearbyCollectedVehicle.Dismiss(DismissOption.FromDirected, path); - if (directOptions.SelectedItem == "First waypoint") - { - GameFiber.StartNew(() => - { - AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, firstWaypoint); - }); - } - else - { - if (nearestWaypoint != null) - { - GameFiber.StartNew(() => - { - AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, nearestWaypoint); - }); - } - } - return; - } - } - - // The vehicle should only be added to the collection when it's not null AND if the selected item is First Waypoint OR if the selected item is nearestWaypoint AND nearestWaypoint is not null - if (collectedVehicle == null && directOptions.SelectedItem == "First waypoint" || (directOptions.SelectedItem == "Nearest waypoint" && nearestWaypoint != null)) - { - Game.LogTrivial($"[Direct Driver] Adding {nearbyVehicle.Model.Name} to collection."); - path.CollectedVehicles.Add(new CollectedVehicle(nearbyVehicle, path)); - collectedVehicle = path.CollectedVehicles.Where(cv => cv.Vehicle == nearbyVehicle).FirstOrDefault(); - //Logger.Log($"Collected vehicle is {collectedVehicle.Vehicle.Model.Name}"); - } - - if (collectedVehicle == null) - { - return; - } - collectedVehicle.Directed = true; - collectedVehicle.Driver.Tasks.Clear(); - - //Logger.Log($"Collected vehicle properties: Dismissed [{collectedVehicle.Dismissed}], Directed [{collectedVehicle.Directed}], StopppedAtWaypoint [{collectedVehicle.StoppedAtWaypoint}]"); - if (directOptions.SelectedItem == "First waypoint") - { - GameFiber.StartNew(() => - { - AITasking.AssignWaypointTasks(collectedVehicle, path, firstWaypoint); - }); - } - else - { - if (nearestWaypoint != null) + nearbyCollectedVehicle.Dismiss(DismissOption.FromDirected, path); + if (directOptions.SelectedItem == "First waypoint") { GameFiber.StartNew(() => { - AITasking.AssignWaypointTasks(collectedVehicle, path, nearestWaypoint); + AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, firstWaypoint); }); } + else + { + if (nearestWaypoint != null) + { + GameFiber.StartNew(() => + { + AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, nearestWaypoint); + }); + } + } + return; + } + } + + // The vehicle should only be added to the collection when it's not null AND if the selected item is First Waypoint OR if the selected item is nearestWaypoint AND nearestWaypoint is not null + if (collectedVehicle == null && directOptions.SelectedItem == "First waypoint" || (directOptions.SelectedItem == "Nearest waypoint" && nearestWaypoint != null)) + { + Game.LogTrivial($"[Direct Driver] Adding {nearbyVehicle.Model.Name} to collection."); + path.CollectedVehicles.Add(new CollectedVehicle(nearbyVehicle, path)); + collectedVehicle = path.CollectedVehicles.Where(cv => cv.Vehicle == nearbyVehicle).FirstOrDefault(); + //Logger.Log($"Collected vehicle is {collectedVehicle.Vehicle.Model.Name}"); + } + + if (collectedVehicle == null) + { + return; + } + collectedVehicle.Directed = true; + collectedVehicle.Driver.Tasks.Clear(); + + //Logger.Log($"Collected vehicle properties: Dismissed [{collectedVehicle.Dismissed}], Directed [{collectedVehicle.Directed}], StopppedAtWaypoint [{collectedVehicle.StoppedAtWaypoint}]"); + if (directOptions.SelectedItem == "First waypoint") + { + GameFiber.StartNew(() => + { + AITasking.AssignWaypointTasks(collectedVehicle, path, firstWaypoint); + }); + } + else + { + if (nearestWaypoint != null) + { + GameFiber.StartNew(() => + { + AITasking.AssignWaypointTasks(collectedVehicle, path, nearestWaypoint); + }); } } } + } - if (selectedItem == dismissDriver) + private static void DismissDriver() + { + var nearbyVehicle = Game.LocalPlayer.Character.GetNearbyVehicles(16).Where(v => v != Game.LocalPlayer.Character.CurrentVehicle && v.VehicleAndDriverValid()).FirstOrDefault(); + if (nearbyVehicle) { - var nearbyVehicle = Game.LocalPlayer.Character.GetNearbyVehicles(16).Where(v => v != Game.LocalPlayer.Character.CurrentVehicle && v.VehicleAndDriverValid()).FirstOrDefault(); - if (nearbyVehicle) + if (!paths.Any() && dismissDriver.Index == (int)DismissOption.FromWorld) { - if (!paths.Any() && dismissDriver.Index == (int)DismissOption.FromWorld) + Game.LogTrivial($"Dismissed {nearbyVehicle.Model.Name} from the world"); + while (nearbyVehicle && nearbyVehicle.HasOccupants) + { + foreach (Ped occupant in nearbyVehicle.Occupants) + { + occupant.Delete(); + } + GameFiber.Yield(); + } + if (nearbyVehicle) + { + nearbyVehicle.Delete(); + } + return; + } + + foreach (Path path in paths) + { + var collectedVehicle = path.CollectedVehicles.Where(cv => cv.Vehicle == nearbyVehicle).FirstOrDefault(); + if (collectedVehicle != null) + { + collectedVehicle.Dismiss((DismissOption)dismissDriver.Index); + break; + } + else if (dismissDriver.Index == (int)DismissOption.FromWorld) { Game.LogTrivial($"Dismissed {nearbyVehicle.Model.Name} from the world"); while (nearbyVehicle && nearbyVehicle.HasOccupants) @@ -333,91 +367,200 @@ namespace SceneManager { nearbyVehicle.Delete(); } - return; - } - - foreach(Path path in paths) - { - var collectedVehicle = path.CollectedVehicles.Where(cv => cv.Vehicle == nearbyVehicle).FirstOrDefault(); - if (collectedVehicle != null) - { - collectedVehicle.Dismiss((DismissOption)dismissDriver.Index); - break; - } - else if (dismissDriver.Index == (int)DismissOption.FromWorld) - { - Game.LogTrivial($"Dismissed {nearbyVehicle.Model.Name} from the world"); - while (nearbyVehicle && nearbyVehicle.HasOccupants) - { - foreach (Ped occupant in nearbyVehicle.Occupants) - { - occupant.Delete(); - } - GameFiber.Yield(); - } - if (nearbyVehicle) - { - nearbyVehicle.Delete(); - } - break; - } + break; } } } } + private static void PathMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) + { + if (selectedItem == createNewPath) + { + GoToPathCreationMenu(); + } + + if (selectedItem == editPath) + { + pathMainMenu.Visible = false; + EditPathMenu.editPathMenu.Visible = true; + } + + if (selectedItem == deleteAllPaths) + { + DeleteAllPaths(); + } + + if (selectedItem == directDriver) + { + DirectDriver(); + } + + if (selectedItem == dismissDriver) + { + DismissDriver(); + } + } + private static void PathMenu_OnCheckboxChange(UIMenu sender, UIMenuCheckboxItem checkboxItem, bool @checked) { if (checkboxItem == disableAllPaths) { - if (disableAllPaths.Checked) - { - foreach (Path path in paths) - { - path.DisablePath(); - } - Game.LogTrivial($"All paths disabled."); - } - else - { - foreach (Path path in paths) - { - path.EnablePath(); - } - Game.LogTrivial($"All paths enabled."); - } + DisableAllPaths(); } } - private static void Draw3DWaypointOnPlayer() + private static void PathMenu_OnMouseDown(UIMenu menu) { GameFiber.StartNew(() => { - while (SettingsMenu.threeDWaypoints.Checked) + while (menu.Visible) { - if (PathCreationMenu.pathCreationMenu.Visible) + var selectedScroller = menu.MenuItems.Where(x => (x == directOptions || x == directDriver || x == dismissDriver || x == editPath) && x.Selected).FirstOrDefault(); + if (selectedScroller != null) { - if (PathCreationMenu.collectorWaypoint.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); - } - else if (PathCreationMenu.stopWaypointType.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); - } - else - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); - } + HandleScrollerItemsWithMouseWheel(selectedScroller); } - else + + // Add waypoint if menu item is selected and user left clicks + if (Game.IsKeyDown(Keys.LButton)) { - break; + OnCheckboxItemClicked(); + OnMenuItemClicked(); } GameFiber.Yield(); } }); + + void OnCheckboxItemClicked() + { + if (disableAllPaths.Selected && disableAllPaths.Enabled) + { + disableAllPaths.Checked = !disableAllPaths.Checked; + DisableAllPaths(); + } + } + + void OnMenuItemClicked() + { + if (createNewPath.Selected) + { + GoToPathCreationMenu(); + } + else if (editPath.Selected) + { + menu.Visible = false; + EditPathMenu.editPathMenu.Visible = true; + } + else if (deleteAllPaths.Selected) + { + DeleteAllPaths(); + } + else if (directDriver.Selected) + { + DirectDriver(); + } + else if (dismissDriver.Selected) + { + DismissDriver(); + } + } + + void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) + { + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + while (Game.IsShiftKeyDownRightNow) + { + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + GameFiber.Yield(); + } + + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + if (Game.GetMouseWheelDelta() > 0) + { + if (selectedScroller == editPath) + { + editPath.ScrollToNextOption(); + } + else if (selectedScroller == directOptions) + { + directOptions.ScrollToNextOption(); + } + else if (selectedScroller == directDriver) + { + directDriver.ScrollToNextOption(); + } + else if (selectedScroller == dismissDriver) + { + dismissDriver.ScrollToNextOption(); + } + } + else if (Game.GetMouseWheelDelta() < 0) + { + if (selectedScroller == editPath) + { + editPath.ScrollToPreviousOption(); + } + else if (selectedScroller == directOptions) + { + directOptions.ScrollToPreviousOption(); + } + else if (selectedScroller == directDriver) + { + directDriver.ScrollToPreviousOption(); + } + else if (selectedScroller == dismissDriver) + { + dismissDriver.ScrollToPreviousOption(); + } + } + } + } } + + //private static void Draw3DWaypointOnPlayer() + //{ + // GameFiber.StartNew(() => + // { + // while (SettingsMenu.threeDWaypoints.Checked) + // { + // if (PathCreationMenu.pathCreationMenu.Visible) + // { + // if (PathCreationMenu.collectorWaypoint.Checked) + // { + // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); + // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); + // } + // else if (PathCreationMenu.stopWaypointType.Checked) + // { + // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); + // } + // else + // { + // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + // } + // } + // else + // { + // break; + // } + // GameFiber.Yield(); + // } + // }); + //} } } diff --git a/SceneManager/Menus/SettingsMenu.cs b/SceneManager/Menus/SettingsMenu.cs index 4bd6db2..24e89cd 100644 --- a/SceneManager/Menus/SettingsMenu.cs +++ b/SceneManager/Menus/SettingsMenu.cs @@ -2,6 +2,8 @@ using RAGENativeUI; using RAGENativeUI.Elements; using System; +using System.Linq; +using System.Windows.Forms; namespace SceneManager { @@ -19,6 +21,10 @@ namespace SceneManager { settingsMenu.ParentMenu = MainMenu.mainMenu; MenuManager.menuPool.Add(settingsMenu); + settingsMenu.OnCheckboxChange += SettingsMenu_OnCheckboxChange; + settingsMenu.OnScrollerChange += SettingsMenu_OnScrollerChange; + settingsMenu.OnItemSelect += SettingsMenu_OnItemSelected; + settingsMenu.OnMenuOpen += SettingsMenu_OnMouseDown; } internal static void BuildSettingsMenu() @@ -30,18 +36,38 @@ namespace SceneManager speedUnits.Index = Array.IndexOf(speedArray, Settings.SpeedUnit); settingsMenu.AddItem(saveSettings); saveSettings.ForeColor = System.Drawing.Color.Gold; - - settingsMenu.OnCheckboxChange += SettingsMenu_OnCheckboxChange; - settingsMenu.OnScrollerChange += SettingsMenu_OnScrollerChange; - settingsMenu.OnItemSelect += SettingsMenu_OnItemSelected; } + internal static void ToggleMapBlips() + { + if (mapBlips.Checked) + { + foreach (Path path in PathMainMenu.paths) + { + foreach (Waypoint wp in path.Waypoints) + { + wp.EnableBlip(); + } + } + } + else + { + foreach (Path path in PathMainMenu.paths) + { + foreach (Waypoint wp in path.Waypoints) + { + wp.DisableBlip(); + } + } + } + } + private static void SettingsMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) { if(selectedItem == saveSettings) { Settings.UpdateSettings(threeDWaypoints.Checked, mapBlips.Checked, hints.Checked, speedUnits.SelectedItem); - Game.DisplayHelp($"Settings saved"); + Game.DisplayHelp($"Scene Manager settings saved"); } } @@ -49,26 +75,7 @@ namespace SceneManager { if (checkboxItem == mapBlips) { - if (mapBlips.Checked) - { - foreach(Path path in PathMainMenu.paths) - { - foreach(Waypoint wp in path.Waypoints) - { - wp.EnableBlip(); - } - } - } - else - { - foreach (Path path in PathMainMenu.paths) - { - foreach (Waypoint wp in path.Waypoints) - { - wp.DisableBlip(); - } - } - } + ToggleMapBlips(); } if (checkboxItem == hints) @@ -86,5 +93,100 @@ namespace SceneManager PathCreationMenu.BuildPathCreationMenu(); } } + + private static void SettingsMenu_OnMouseDown(UIMenu menu) + { + GameFiber.StartNew(() => + { + while (menu.Visible) + { + var selectedScroller = menu.MenuItems.Where(x => x == speedUnits && x.Selected).FirstOrDefault(); + if (selectedScroller != null) + { + HandleScrollerItemsWithMouseWheel(selectedScroller); + } + + // Add waypoint if menu item is selected and user left clicks + if (Game.IsKeyDown(Keys.LButton)) + { + OnCheckboxItemClicked(); + OnMenuItemClicked(); + } + GameFiber.Yield(); + } + }); + + void OnCheckboxItemClicked() + { + if (threeDWaypoints.Selected && threeDWaypoints.Enabled) + { + threeDWaypoints.Checked = !threeDWaypoints.Checked; + } + else if (mapBlips.Selected) + { + mapBlips.Checked = !mapBlips.Checked; + ToggleMapBlips(); + } + else if (hints.Selected) + { + hints.Checked = !hints.Checked; + Hints.Enabled = hints.Checked ? true : false; + } + } + + void OnMenuItemClicked() + { + if (saveSettings.Selected) + { + Settings.UpdateSettings(threeDWaypoints.Checked, mapBlips.Checked, hints.Checked, speedUnits.SelectedItem); + Game.DisplayHelp($"Scene Manager settings saved"); + } + } + + void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) + { + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + while (Game.IsShiftKeyDownRightNow) + { + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + GameFiber.Yield(); + } + + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + if (Game.GetMouseWheelDelta() > 0) + { + if (selectedScroller == speedUnits) + { + speedUnits.ScrollToNextOption(); + PathCreationMenu.pathCreationMenu.Clear(); + PathCreationMenu.BuildPathCreationMenu(); + } + } + else if (Game.GetMouseWheelDelta() < 0) + { + if (selectedScroller == speedUnits) + { + speedUnits.ScrollToPreviousOption(); + PathCreationMenu.pathCreationMenu.Clear(); + PathCreationMenu.BuildPathCreationMenu(); + } + } + } + } + } } } \ No newline at end of file From 0af97e2b2de4f884abe3339e54d7023d52d8c320 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:22:52 -0600 Subject: [PATCH 02/74] Added check for driver's current vehicle when releasing from Stop waypoint in case the ped is not in a vehicle. --- SceneManager/Object Classes/CollectedVehicle.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index 2638b1e..ea3c4fd 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -75,7 +75,10 @@ namespace SceneManager //Logger.Log($"Unstucking {Vehicle.Model.Name}"); StoppedAtWaypoint = false; Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); - Driver.Tasks.CruiseWithVehicle(5f); + if (Driver.CurrentVehicle) + { + Driver.Tasks.CruiseWithVehicle(5f); + } } Driver.Tasks.Clear(); @@ -113,11 +116,11 @@ namespace SceneManager { if (CurrentWaypoint == null || Path == null) { - Logger.Log($"CurrentWaypoint or Path are null"); + Game.LogTrivial($"CurrentWaypoint or Path are null"); } else if (CurrentWaypoint?.Number != Path?.Waypoints.Count) { - Logger.Log($"Dismissed from waypoint."); + Game.LogTrivial($"Dismissed from waypoint."); SkipWaypoint = true; } else if (CurrentWaypoint?.Number == Path?.Waypoints.Count) @@ -128,7 +131,7 @@ namespace SceneManager void DismissFromPath() { - Logger.Log($"Dismissing from path"); + Game.LogTrivial($"Dismissing from path"); Dismissed = true; // Check if the vehicle is near any of the path's collector waypoints @@ -146,7 +149,7 @@ namespace SceneManager } else { - Logger.Log($"Nearest collector is null"); + Game.LogTrivial($"Nearest collector is null"); } if (!Vehicle || !Driver) @@ -157,7 +160,7 @@ namespace SceneManager if (!Directed) { Path.CollectedVehicles.Remove(this); - Logger.Log($"{Vehicle.Model.Name} dismissed successfully."); + Game.LogTrivial($"{Vehicle.Model.Name} dismissed successfully."); if (Driver) { if (Driver.GetAttachedBlip()) From adf40c25ec2d615a04cddfd26fb772f486ffb2ee Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:23:50 -0600 Subject: [PATCH 03/74] Lines are now only drawn between waypoint markers under the same conditions that waypoint markers are drawn --- SceneManager/Object Classes/Path.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SceneManager/Object Classes/Path.cs b/SceneManager/Object Classes/Path.cs index e2e5bca..6730044 100644 --- a/SceneManager/Object Classes/Path.cs +++ b/SceneManager/Object Classes/Path.cs @@ -81,9 +81,9 @@ namespace SceneManager { GameFiber.StartNew(() => { - while (SettingsMenu.threeDWaypoints.Checked) + while(true) { - if (MenuManager.menuPool.IsAnyMenuOpen()) + if (Settings.Enable3DWaypoints && (State == State.Finished && MenuManager.menuPool.IsAnyMenuOpen()) || (State == State.Creating && PathCreationMenu.pathCreationMenu.Visible)) { for (int i = 0; i < Waypoints.Count; i++) { @@ -133,7 +133,6 @@ namespace SceneManager internal void LoopWaypointCollection() { uint lastProcessTime = Game.GameTime; // Store the last time the full loop finished; this is a value in ms - int timeBetweenChecks = 1000; // How many ms to wait between outer loops int yieldAfterChecks = 50; // How many calculations to do before yielding while (PathMainMenu.paths.Contains(this)) { @@ -177,7 +176,7 @@ namespace SceneManager { var collectedVehicle = new CollectedVehicle(vehicle, this); CollectedVehicles.Add(collectedVehicle); - Logger.Log($"Added {vehicle.Model.Name} to collection from path {Number} waypoint {1}."); + Game.LogTrivial($"Added {vehicle.Model.Name} to collection from path {Number} waypoint {1}."); return collectedVehicle; } From 1788264977417144cfc647e78a25a40f46cff1ec Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:24:30 -0600 Subject: [PATCH 04/74] Updated marker position to be player's mouse position --- SceneManager/Object Classes/Waypoint.cs | 73 +++++++++++++++++-------- 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/SceneManager/Object Classes/Waypoint.cs b/SceneManager/Object Classes/Waypoint.cs index 92b4d30..8e94ee8 100644 --- a/SceneManager/Object Classes/Waypoint.cs +++ b/SceneManager/Object Classes/Waypoint.cs @@ -6,12 +6,6 @@ using System.Linq; namespace SceneManager { - public enum DrivingFlagType - { - Normal = 263075, - Direct = 17040259 - } - public class Waypoint { internal Path Path { get; set; } @@ -60,7 +54,7 @@ namespace SceneManager DrawWaypointMarker(); } - internal void UpdateWaypoint(Waypoint currentWaypoint, DrivingFlagType drivingFlag, bool stopWaypoint, float speed, bool collectorWaypointChecked, float collectorRadius, float speedZoneRadius, bool updateWaypointPositionChecked) + internal void UpdateWaypoint(Waypoint currentWaypoint, Vector3 newWaypointPosition, DrivingFlagType drivingFlag, bool stopWaypoint, float speed, bool collectorWaypointChecked, float collectorRadius, float speedZoneRadius, bool updateWaypointPositionChecked) { if(IsStopWaypoint != stopWaypoint) { @@ -71,7 +65,7 @@ namespace SceneManager UpdateCollectorOptions(); if (updateWaypointPositionChecked) { - UpdateWaypointPosition(Game.LocalPlayer.Character.Position); + UpdateWaypointPosition(); } void UpdateIfStopWaypoint() @@ -140,7 +134,7 @@ namespace SceneManager } } - void UpdateWaypointPosition(Vector3 newWaypointPosition) + void UpdateWaypointPosition() { Position = newWaypointPosition; RemoveSpeedZone(); @@ -199,27 +193,27 @@ namespace SceneManager { if (EditWaypointMenu.updateWaypointPosition.Checked) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, 1f, 80, 130, 255, 100, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, 1f, 255, 185, 80, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, GetMousePositionInWorld(), 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, 1f, 80, 130, 255, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, GetMousePositionInWorld(), 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, 1f, 255, 185, 80, 100, false, false, 2, false, 0, 0, false); } - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, 2f, 80, 130, 255, 100, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, 2f, 255, 185, 80, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, (float)EditWaypointMenu.changeCollectorRadius.Value * 2, 2f, 80, 130, 255, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, (float)EditWaypointMenu.changeSpeedZoneRadius.Value * 2, 2f, 255, 185, 80, 100, false, false, 2, false, 0, 0, false); } else if (EditWaypointMenu.stopWaypointType.Checked) { if (EditWaypointMenu.updateWaypointPosition.Checked) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, GetMousePositionInWorld(), 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 100, false, false, 2, false, 0, 0, false); } - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 2f, 255, 65, 65, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, 1f, 1f, 2f, 255, 65, 65, 100, false, false, 2, false, 0, 0, false); } else { if (EditWaypointMenu.updateWaypointPosition.Checked) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, GetMousePositionInWorld(), 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 100, false, false, 2, false, 0, 0, false); } - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 2f, 65, 255, 65, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, 1f, 1f, 2f, 65, 255, 65, 100, false, false, 2, false, 0, 0, false); } } else if ((Path.State == State.Finished && MenuManager.menuPool.IsAnyMenuOpen()) || (Path.State == State.Creating && PathCreationMenu.pathCreationMenu.Visible)) @@ -231,16 +225,16 @@ namespace SceneManager } if (IsCollector) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, CollectorRadius * 2, CollectorRadius * 2, markerHeight, 80, 130, 255, 100, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, SpeedZoneRadius * 2, SpeedZoneRadius * 2, markerHeight, 255, 185, 80, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, CollectorRadius * 2, CollectorRadius * 2, markerHeight, 80, 130, 255, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, SpeedZoneRadius * 2, SpeedZoneRadius * 2, markerHeight, 255, 185, 80, 100, false, false, 2, false, 0, 0, false); } else if (IsStopWaypoint) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, markerHeight, 255, 65, 65, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, 1f, 1f, markerHeight, 255, 65, 65, 100, false, false, 2, false, 0, 0, false); } else { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position.X, Position.Y, Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, markerHeight, 65, 255, 65, 100, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Position, 0, 0, 0, 0, 0, 0, 1f, 1f, markerHeight, 65, 255, 65, 100, false, false, 2, false, 0, 0, false); } } } @@ -292,7 +286,7 @@ namespace SceneManager internal void CollectVehicles(List paths) { var sleepInterval = 1000; - Logger.Log($"Starting collection loop on waypoint {Number}"); + Game.LogTrivial($"Starting collection loop on waypoint {Number}"); while (paths.Contains(Path) && Path.Waypoints.Contains(this)) { if (Path.IsEnabled && IsCollector) @@ -309,7 +303,7 @@ namespace SceneManager if (collectedVehiclePlayerIsIn != null) { collectedVehiclePlayerIsIn.Dismiss(DismissOption.FromPlayer); - Logger.Log($"Dismissed a collected vehicle the player was in."); + Game.LogTrivial($"Dismissed a collected vehicle the player was in."); } GameFiber.Sleep(sleepInterval); } @@ -343,7 +337,7 @@ namespace SceneManager { var collectedVehicle = new CollectedVehicle(vehicle, Path, this); Path.CollectedVehicles.Add(collectedVehicle); - Logger.Log($"Added {vehicle.Model.Name} to collection from path {Path.Number} waypoint {this.Number}."); + Game.LogTrivial($"Added {vehicle.Model.Name} to collection from path {Path.Number} waypoint {this.Number}."); return collectedVehicle; } @@ -385,5 +379,36 @@ namespace SceneManager } } } + + private static Vector3 GetMousePositionInWorld() + { + HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + + HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + { + Vector3 direction = GetPlayerLookingDirection(out start); + end = start + (maxTraceDistance * direction); + return World.TraceLine(start, end, flags); + } + + Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + { + if (Camera.RenderingCamera) + { + camPosition = Camera.RenderingCamera.Position; + return Camera.RenderingCamera.Direction; + } + else + { + float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); + float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + + camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); + return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + } + } + + return TracePlayerView(100f, TraceFlags.IntersectWorld).HitPosition; + } } } From 3c3ad3d7423ffea45bdb79af8e2d9c95ced214a2 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:24:40 -0600 Subject: [PATCH 05/74] Version update --- SceneManager/Properties/AssemblyInfo.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index e2ce833..638a4e7 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -32,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.1.0")] -[assembly: AssemblyFileVersion("2.0.1.0")] +[assembly: AssemblyVersion("2.0.1.2")] +[assembly: AssemblyFileVersion("2.0.1.2")] From f64438a39b4bea21503d3434d847538732e0c8aa Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:26:37 -0600 Subject: [PATCH 06/74] Added logic to update waypoint position during driving task if the waypoint position was changed before the driver arrived. --- SceneManager/AITasking.cs | 70 +++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/SceneManager/AITasking.cs b/SceneManager/AITasking.cs index ea6b2d2..4a6e810 100644 --- a/SceneManager/AITasking.cs +++ b/SceneManager/AITasking.cs @@ -11,6 +11,8 @@ namespace SceneManager { internal static void AssignWaypointTasks(CollectedVehicle collectedVehicle, Path path, Waypoint currentWaypoint) { + float acceptedDistance = GetAcceptedStoppingDistance(path.Waypoints, path.Waypoints.IndexOf(currentWaypoint)); + Vector3 oldPosition = currentWaypoint.Position; if (!VehicleAndDriverAreValid(collectedVehicle)) { return; @@ -29,14 +31,14 @@ namespace SceneManager if (currentWaypoint != null && collectedVehicle.Directed) { collectedVehicle.Dismissed = false; - float acceptedDistance = GetAcceptedStoppingDistance(path.Waypoints, path.Waypoints.IndexOf(currentWaypoint)); + while (!collectedVehicle.ReadyForDirectTasks) { GameFiber.Yield(); } collectedVehicle.Driver.Tasks.Clear(); - AssignTasksForDirectedDriver(acceptedDistance); - LoopWhileDrivingToDirectedWaypoint(acceptedDistance); + AssignTasksForDirectedDriver(); + LoopWhileDrivingToDirectedWaypoint(); if(collectedVehicle != null) { collectedVehicle.Directed = false; @@ -44,7 +46,7 @@ namespace SceneManager if (collectedVehicle.Vehicle) { collectedVehicle.Driver.Tasks.PerformDrivingManeuver(collectedVehicle.Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} directed task is complete, directed is now false"); + Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} directed task is complete, directed is now false"); } } @@ -61,26 +63,26 @@ namespace SceneManager { return; } - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} all Path {path.Number} tasks complete."); + Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} all Path {path.Number} tasks complete."); if(!collectedVehicle.Dismissed) { collectedVehicle.Dismiss(); } - void AssignTasksForDirectedDriver(float acceptedDistance) + void AssignTasksForDirectedDriver() { - //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} (directed)"); - //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} Dismissed: {collectedVehicle.Dismissed}, Directed: {collectedVehicle.Directed}"); + Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {currentWaypoint.Number} (directed)"); collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)currentWaypoint.DrivingFlagType, acceptedDistance); } - void LoopWhileDrivingToDirectedWaypoint(float acceptedDistance) + void LoopWhileDrivingToDirectedWaypoint() { - while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(currentWaypoint.Position) > acceptedDistance) + while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(oldPosition) > acceptedDistance) { - //Logger.Log($"Looping while {collectedVehicle.Vehicle.Model.Name} drives to path {path.Number} waypoint {currentWaypoint.Number}"); + if (oldPosition != currentWaypoint.Position) + { + oldPosition = currentWaypoint.Position; + } GameFiber.Yield(); } } @@ -90,42 +92,40 @@ namespace SceneManager { if (!VehicleAndDriverAreValid(collectedVehicle) || currentWaypoint == null || currentWaypoint.Path == null) { - Logger.Log($"Vehicle, driver, waypoint, or path is null."); + Game.LogTrivial($"Vehicle, driver, waypoint, or path is null."); return; } var vehicle = collectedVehicle.Vehicle; var driver = vehicle.Driver; - Logger.Log($"Preparing to run task loop for {collectedVehicle.Vehicle.Model.Name} on path {path.Number}"); + Game.LogTrivial($"Preparing to run task loop for {collectedVehicle.Vehicle.Model.Name} on path {path.Number}"); //Logger.Log($"Current path: {collectedVehicle.Path.Number}, Current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); for (int currentWaypointTask = currentWaypoint.Number; currentWaypointTask < path.Waypoints.Count; currentWaypointTask++) { - //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} in the task loop"); - //Logger.Log($"Dismissed: {collectedVehicle.Dismissed}, Directed: {collectedVehicle.Directed}, StoppedAtWaypoint: {collectedVehicle.StoppedAtWaypoint}"); + var oldPosition = path.Waypoints[currentWaypointTask].Position; collectedVehicle.SkipWaypoint = false; if (collectedVehicle == null || !collectedVehicle.Vehicle || collectedVehicle.Dismissed || collectedVehicle.Directed) { - Logger.Log($"Vehicle dismissed, directed, or null, return"); + Game.LogTrivial($"Vehicle dismissed, directed, or null, return"); return; } if(collectedVehicle.Driver == null || !collectedVehicle.Driver || !collectedVehicle.Vehicle.HasDriver || !collectedVehicle.Driver.IsAlive || collectedVehicle.Vehicle.Driver == Game.LocalPlayer.Character) { - Logger.Log($"{vehicle.Model.Name} does not have a driver/driver is null or driver is dead."); + Game.LogTrivial($"{vehicle.Model.Name} does not have a driver/driver is null or driver is dead."); return; } if (path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && !collectedVehicle.StoppedAtWaypoint) { collectedVehicle.CurrentWaypoint = path.Waypoints[currentWaypointTask]; - //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); float acceptedDistance = GetAcceptedStoppingDistance(path.Waypoints, currentWaypointTask); - Logger.Log($"{vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {path.Waypoints[currentWaypointTask].Number} (Stop: {currentWaypoint.IsStopWaypoint}, Driving flag: {currentWaypoint.DrivingFlagType})"); + Game.LogTrivial($"{vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {path.Waypoints[currentWaypointTask].Number} (Stop: {currentWaypoint.IsStopWaypoint}, Driving flag: {currentWaypoint.DrivingFlagType})"); //Logger.Log($"{vehicle.Model.Name} driver is persistent: {driver.IsPersistent}"); driver.Tasks.DriveToPosition(path.Waypoints[currentWaypointTask].Position, path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); - LoopWhileDrivingToWaypoint(currentWaypointTask, acceptedDistance); + LoopWhileDrivingToWaypoint(currentWaypointTask, acceptedDistance, oldPosition); if (!VehicleAndDriverAreValid(collectedVehicle)) { @@ -150,18 +150,22 @@ namespace SceneManager driver.Tasks.PerformDrivingManeuver(collectedVehicle.Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); // Do we need this? - if (driver) - { - driver.Tasks.Clear(); - } + //if (driver) + //{ + // driver.Tasks.Clear(); + //} } } - void LoopWhileDrivingToWaypoint(int nextWaypoint, float acceptedDistance) + void LoopWhileDrivingToWaypoint(int currentWaypointTask, float acceptedDistance, Vector3 oldPosition) { - while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && !collectedVehicle.Directed && path.Waypoints.ElementAtOrDefault(nextWaypoint) != null && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(path.Waypoints[nextWaypoint].Position) > acceptedDistance) + while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && !collectedVehicle.Directed && path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(path.Waypoints[currentWaypointTask].Position) > acceptedDistance) { - //Logger.Log($"Looping while {vehicle.Model.Name} drives to waypoint."); + if (oldPosition != path.Waypoints[currentWaypointTask].Position) + { + oldPosition = path.Waypoints[currentWaypointTask].Position; + driver.Tasks.DriveToPosition(path.Waypoints[currentWaypointTask].Position, path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); + } GameFiber.Sleep(100); } } @@ -187,12 +191,12 @@ namespace SceneManager { if (collectedVehicle == null) { - Logger.Log($"CollectedVehicle is null"); + Game.LogTrivial($"CollectedVehicle is null"); return false; } if (!collectedVehicle.Vehicle && !collectedVehicle.Dismissed) { - Logger.Log($"Vehicle is null"); + Game.LogTrivial($"Vehicle is null"); collectedVehicle.Dismiss(); return false; } @@ -213,7 +217,7 @@ namespace SceneManager } var stoppingDistance = GetAcceptedStoppingDistance(currentWaypoint.Path.Waypoints, currentWaypoint.Path.Waypoints.IndexOf(currentWaypoint)); - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} stopping at path {currentWaypoint.Path.Number} waypoint."); + Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} stopping at path {currentWaypoint.Path.Number} waypoint."); Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(collectedVehicle.Vehicle, stoppingDistance, -1, true); collectedVehicle.StoppedAtWaypoint = true; @@ -223,7 +227,7 @@ namespace SceneManager } if(collectedVehicle.Vehicle && collectedVehicle.Driver) { - Logger.Log($"{collectedVehicle.Vehicle.Model.Name} releasing from stop waypoint."); + Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} releasing from stop waypoint."); Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(collectedVehicle.Vehicle, 0f, 1, true); collectedVehicle.Driver.Tasks.CruiseWithVehicle(5f); } From 72db1d41719be355220f857f7c36a69fb4236a4d Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:27:25 -0600 Subject: [PATCH 07/74] Removed unused usings. Refactored debug statements to use Game.LogTrivial instead of Logger.Log --- SceneManager/EntryPoint.cs | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/SceneManager/EntryPoint.cs b/SceneManager/EntryPoint.cs index c8ee0e8..a0d4d86 100644 --- a/SceneManager/EntryPoint.cs +++ b/SceneManager/EntryPoint.cs @@ -1,6 +1,4 @@ using System; -using System.ComponentModel.Design.Serialization; -using System.Drawing.Text; using System.IO; using System.Linq; using System.Reflection; @@ -36,7 +34,7 @@ namespace SceneManager void GetAssemblyVersion() { string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); - Logger.Log($"Scene Manager V{version} is ready."); + Game.LogTrivial($"Scene Manager V{version} is ready."); } } private static bool CheckRNUIVersion() @@ -45,7 +43,7 @@ namespace SceneManager var exists = File.Exists(directory + @"\RAGENativeUI.dll"); if (!exists) { - Logger.Log($"RNUI was not found in the user's GTA V directory."); + 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; } @@ -54,7 +52,7 @@ namespace SceneManager Version requiredMinimumVersion = new Version("1.7.0.0"); if(userVersion >= requiredMinimumVersion) { - Logger.Log($"User's RNUI version: {userVersion}"); + Game.LogTrivial($"User's RNUI version: {userVersion}"); return true; } else @@ -68,22 +66,21 @@ namespace SceneManager { 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"); + 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"); + 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"); + 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"); + 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 @@ -102,12 +99,8 @@ namespace SceneManager PathMainMenu.DeletePath(PathMainMenu.paths[i], PathMainMenu.Delete.All); } - // Clear everything - BarrierMenu.barriers.Clear(); - PathMainMenu.paths.Clear(); - - Logger.Log($"Plugin has shut down."); - Game.DisplayNotification($"~o~Scene Manager ~r~[Terminated]\n~w~ The plugin has shut down."); + Game.LogTrivial($"Plugin has shut down."); + Game.DisplayNotification($"~o~Scene Manager ~r~[Terminated]\n~w~The plugin has shut down."); } } } From d7843a9e5a81669dd08d1a9af282f19b9022b7b8 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:27:35 -0600 Subject: [PATCH 08/74] Removed class --- SceneManager/Logger.cs | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 SceneManager/Logger.cs diff --git a/SceneManager/Logger.cs b/SceneManager/Logger.cs deleted file mode 100644 index d92eba5..0000000 --- a/SceneManager/Logger.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Rage; - -namespace SceneManager -{ - class Logger - { - internal static void Log(string message) - { -#if DEBUG - Game.LogTrivialDebug($"{message}"); -#else - Game.LogTrivial($"{message}"); -#endif - } - } -} From e09188af2e6bccd066956a7f11d7552387129555 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:27:47 -0600 Subject: [PATCH 09/74] Removed Logger class --- SceneManager/SceneManager.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/SceneManager/SceneManager.csproj b/SceneManager/SceneManager.csproj index e629da2..9b598e6 100644 --- a/SceneManager/SceneManager.csproj +++ b/SceneManager/SceneManager.csproj @@ -52,7 +52,6 @@ - From dcc9594f00e0e44ffc05960ef3c681a3e17fa9bc Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 23 Oct 2020 06:28:27 -0600 Subject: [PATCH 10/74] Consolidated all custom enums to this class. Added default waypoint settings from .ini --- SceneManager/Settings.cs | 61 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/SceneManager/Settings.cs b/SceneManager/Settings.cs index d4b50b4..a5b604d 100644 --- a/SceneManager/Settings.cs +++ b/SceneManager/Settings.cs @@ -17,19 +17,43 @@ namespace SceneManager KPH } + internal enum DrivingFlagType + { + Normal = 263075, + Direct = 17040259 + } + + public enum DismissOption + { + FromPath = 0, + FromWaypoint = 1, + FromWorld = 2, + FromPlayer = 3, + FromDirected = 4 + } + internal static class Settings { internal static readonly InitializationFile ini = new InitializationFile("Plugins/SceneManager.ini"); + // Keybindings internal static Keys ToggleKey = Keys.T; internal static Keys ModifierKey = Keys.LShiftKey; internal static ControllerButtons ToggleButton = ControllerButtons.Y; internal static ControllerButtons ModifierButton = ControllerButtons.A; + // Plugin Settings internal static bool Enable3DWaypoints = true; internal static bool EnableMapBlips = true; internal static bool EnableHints = true; internal static SpeedUnits SpeedUnit = SpeedUnits.MPH; internal static float BarrierPlacementDistance = 30f; + // Default Waypoint Settings + internal static int CollectorRadius = 1; + internal static int SpeedZoneRadius = 5; + internal static bool StopWaypoint = false; + internal static bool DirectDrivingBehavior = false; + internal static int WaypointSpeed = 5; + // Barriers internal static List barrierKeys = new List(); internal static List barrierValues = new List(); @@ -38,16 +62,25 @@ namespace SceneManager Game.LogTrivial("Loading SceneManager.ini settings"); ini.Create(); + // Keybindings ToggleKey = ini.ReadEnum("Keybindings", "ToggleKey", Keys.T); ModifierKey = ini.ReadEnum("Keybindings", "ModifierKey", Keys.LShiftKey); ToggleButton = ini.ReadEnum("Keybindings", "ToggleButton", ControllerButtons.A); ModifierButton = ini.ReadEnum("Keybindings", "ModifierButton", ControllerButtons.DPadDown); - Enable3DWaypoints = ini.ReadBoolean("Other Settings", "Enable3DWaypoints", true); - EnableMapBlips = ini.ReadBoolean("Other Settings", "EnableMapBlips", true); - EnableHints = ini.ReadBoolean("Other Settings", "EnableHints", true); - SpeedUnit = ini.ReadEnum("Other Settings", "SpeedUnits", SpeedUnits.MPH); - BarrierPlacementDistance = ini.ReadInt32("Other Settings", "BarrierPlacementDistance", 30); - + // Plugin Settings + Enable3DWaypoints = ini.ReadBoolean("Plugin Settings", "Enable3DWaypoints", true); + EnableMapBlips = ini.ReadBoolean("Plugin Settings", "EnableMapBlips", true); + EnableHints = ini.ReadBoolean("Plugin Settings", "EnableHints", true); + SpeedUnit = ini.ReadEnum("Plugin Settings", "SpeedUnits", SpeedUnits.MPH); + BarrierPlacementDistance = ini.ReadInt32("Plugin Settings", "BarrierPlacementDistance", 30); + // Default Waypoint Settings + CollectorRadius = ini.ReadInt32("Default Waypoint Settings", "CollectorRadius", 1); + SpeedZoneRadius = ini.ReadInt32("Default Waypoint Settings", "SpeedZoneRadius", 5); + StopWaypoint = ini.ReadBoolean("Default Waypoint Settings", "StopWaypoint", false); + DirectDrivingBehavior = ini.ReadBoolean("Default Waypoint Settings", "DirectDrivingBehavior", false); + WaypointSpeed = ini.ReadInt32("Default Waypoint Settings", "WaypointSpeed", 5); + CheckForValidWaypointSettings(); + // Barriers foreach(string key in ini.GetKeyNames("Barriers")) { barrierKeys.Add(key.Trim()); @@ -55,6 +88,22 @@ namespace SceneManager if (m.IsValid) barrierValues.Add(m.Name); } + + void CheckForValidWaypointSettings() + { + if(CollectorRadius > 50 || CollectorRadius < 1) + { + CollectorRadius = 1; + } + if(SpeedZoneRadius > 200 || SpeedZoneRadius < 5) + { + SpeedZoneRadius = 5; + } + if(WaypointSpeed > 100 || WaypointSpeed < 5) + { + WaypointSpeed = 5; + } + } } internal static void UpdateSettings(bool threeDWaypointsEnabled, bool mapBlipsEnabled, bool hintsEnabled, SpeedUnits unit) From e6563461108ad64f7c06e496bfd3760a8cb7e888 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:45:01 -0600 Subject: [PATCH 11/74] Modified a hint message --- SceneManager/Menus/EditWaypointMenu.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index c0d9ea5..8b32974 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -103,7 +103,7 @@ namespace SceneManager Game.LogTrivial($"Path {currentPath.Number} Waypoint {currentWaypoint.Number} updated [Driving style: {drivingFlag} | Stop waypoint: {stopWaypointType.Checked} | Speed: {changeWaypointSpeed.Value} | Collector: {currentWaypoint.IsCollector}]"); updateWaypointPosition.Checked = false; - Game.DisplayNotification($"~o~Scene Manager\n~g~[Success]~w~ Waypoint {currentWaypoint.Number} updated."); + Game.DisplayNotification($"~o~Scene Manager ~g~[Success]~w~\nWaypoint {currentWaypoint.Number} updated."); } private static void RemoveWaypoint(Path currentPath, Waypoint currentWaypoint, DrivingFlagType drivingFlag) @@ -125,7 +125,6 @@ namespace SceneManager foreach (Waypoint wp in currentPath.Waypoints) { wp.Number = currentPath.Waypoints.IndexOf(wp) + 1; - //Logger.Log($"Waypoint at index {currentPath.Waypoints.IndexOf(wp)} is now waypoint #{wp.Number}"); } editWaypointMenu.Clear(); @@ -133,7 +132,7 @@ namespace SceneManager if (currentPath.Waypoints.Count == 1) { - Hints.Display($"~o~Scene Manager\n~y~[Hint]~w~ Your path's first waypoint ~b~must~w~ be a collector. If it's not, it will automatically be made into one."); + Hints.Display($"~o~Scene Manager ~y~[Hint]~w~\nYour path's first waypoint ~b~must~w~ be a collector. If it's not, it will automatically be made into one."); Game.LogTrivial($"The path only has 1 waypoint left, this waypoint must be a collector."); currentPath.Waypoints[0].UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); collectorWaypoint.Checked = true; @@ -295,6 +294,16 @@ namespace SceneManager if (collectorWaypoint.Selected && collectorWaypoint.Enabled) { collectorWaypoint.Checked = !collectorWaypoint.Checked; + if (collectorWaypoint.Checked) + { + changeCollectorRadius.Enabled = true; + changeSpeedZoneRadius.Enabled = true; + } + else + { + changeCollectorRadius.Enabled = false; + changeSpeedZoneRadius.Enabled = false; + } } else if (stopWaypointType.Selected) { From c3b174ddbfd7dced31c8a6740d056dd2e51f527a Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:45:44 -0600 Subject: [PATCH 12/74] Fixed collector options not being enabled/disabled when Collector box is checked --- SceneManager/Menus/PathCreationMenu.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/SceneManager/Menus/PathCreationMenu.cs b/SceneManager/Menus/PathCreationMenu.cs index 9855cb5..15e5dae 100644 --- a/SceneManager/Menus/PathCreationMenu.cs +++ b/SceneManager/Menus/PathCreationMenu.cs @@ -146,6 +146,16 @@ namespace SceneManager if (collectorWaypoint.Selected && collectorWaypoint.Enabled) { collectorWaypoint.Checked = !collectorWaypoint.Checked; + if (collectorWaypoint.Checked) + { + collectorRadius.Enabled = true; + speedZoneRadius.Enabled = true; + } + else + { + collectorRadius.Enabled = false; + speedZoneRadius.Enabled = false; + } } else if (stopWaypointType.Selected) { @@ -280,6 +290,16 @@ namespace SceneManager ToggleTrafficEndPathMenuItem(pathIndex); collectorWaypoint.Enabled = true; collectorWaypoint.Checked = false; + if (collectorWaypoint.Checked) + { + collectorRadius.Enabled = true; + speedZoneRadius.Enabled = true; + } + else + { + collectorRadius.Enabled = false; + speedZoneRadius.Enabled = false; + } trafficRemoveWaypoint.Enabled = true; PathMainMenu.createNewPath.Text = $"Continue Creating Path {pathNumber}"; From ebf88848427b1ddbd13869318e501121603e7099 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:46:40 -0600 Subject: [PATCH 13/74] Refactored AITasking into CollectedVehicle. --- SceneManager/Menus/PathMainMenu.cs | 13 +- .../Object Classes/CollectedVehicle.cs | 250 +++++++++++++++++- SceneManager/Object Classes/Path.cs | 3 +- 3 files changed, 254 insertions(+), 12 deletions(-) diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index d17bbf5..a847034 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -110,7 +110,6 @@ namespace SceneManager { if (paths.ElementAtOrDefault(i) != null && paths[i].State == State.Creating) { - //Game.LogTrivial($"Resuming path {paths[i].Number}"); Game.DisplayNotification($"~o~Scene Manager~y~[Creating]\n~w~Resuming path {paths[i].Number}"); break; } @@ -267,7 +266,8 @@ namespace SceneManager { GameFiber.StartNew(() => { - AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, firstWaypoint); + nearbyCollectedVehicle.AssignWaypointTasks(path, firstWaypoint); + //AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, firstWaypoint); }); } else @@ -276,7 +276,8 @@ namespace SceneManager { GameFiber.StartNew(() => { - AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, nearestWaypoint); + nearbyCollectedVehicle.AssignWaypointTasks(path, nearestWaypoint); + //AITasking.AssignWaypointTasks(nearbyCollectedVehicle, path, nearestWaypoint); }); } } @@ -305,7 +306,8 @@ namespace SceneManager { GameFiber.StartNew(() => { - AITasking.AssignWaypointTasks(collectedVehicle, path, firstWaypoint); + collectedVehicle.AssignWaypointTasks(path, firstWaypoint); + //AITasking.AssignWaypointTasks(collectedVehicle, path, firstWaypoint); }); } else @@ -314,7 +316,8 @@ namespace SceneManager { GameFiber.StartNew(() => { - AITasking.AssignWaypointTasks(collectedVehicle, path, nearestWaypoint); + collectedVehicle.AssignWaypointTasks(path, nearestWaypoint); + //AITasking.AssignWaypointTasks(collectedVehicle, path, nearestWaypoint); }); } } diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index ea3c4fd..bf996a2 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -1,4 +1,5 @@ using Rage; +using System.Collections.Generic; using System.Linq; namespace SceneManager @@ -33,12 +34,250 @@ namespace SceneManager SetPersistence(); } - internal void SetPersistence() + private void SetPersistence() { Vehicle.IsPersistent = true; Driver.IsPersistent = true; Driver.BlockPermanentEvents = true; - //Logger.Log($"{Vehicle.Model.Name} and driver are now persistent."); + } + + internal void AssignWaypointTasks(Path path, Waypoint currentWaypoint) + { + // Driving styles https://gtaforums.com/topic/822314-guide-driving-styles/ + // also https://vespura.com/fivem/drivingstyle/ + + if (!VehicleAndDriverAreValid()) + { + return; + } + + AssignPathAndCurrentWaypoint(); + + AssignDirectedTask(); + + if (currentWaypoint.IsStopWaypoint) + { + StopAtWaypoint(); + } + if (path?.Waypoints?.Count > 0 && currentWaypoint != path?.Waypoints?.Last()) + { + DriveToNextWaypoint(); + } + + if (!VehicleAndDriverAreValid() || Directed) + { + return; + } + + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] all Path {path.Number} tasks complete."); + if (!Dismissed) + { + Dismiss(); + } + + void AssignPathAndCurrentWaypoint() + { + Path = path; + if (currentWaypoint != null) + { + CurrentWaypoint = currentWaypoint; + } + else + { + CurrentWaypoint = path.Waypoints[0]; + } + } + + void AssignDirectedTask() + { + if (currentWaypoint != null && Directed) + { + Dismissed = false; + + while (!ReadyForDirectTasks) + { + GameFiber.Yield(); + } + if (!VehicleAndDriverAreValid()) + { + return; + } + Driver.Tasks.Clear(); + DriveToDirectedWaypoint(); + } + } + + void DriveToDirectedWaypoint() + { + Dismissed = false; + + while (!ReadyForDirectTasks) + { + GameFiber.Yield(); + } + Driver.Tasks.Clear(); + AssignTasksForDirectedDriver(); + + void AssignTasksForDirectedDriver() + { + float acceptedDistance = GetAcceptedStoppingDistance(Path.Waypoints, Path.Waypoints.IndexOf(currentWaypoint)); + Vector3 oldPosition = currentWaypoint.Position; + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] is driving to path {currentWaypoint.Path.Number} waypoint {currentWaypoint.Number} (directed)"); + Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)currentWaypoint.DrivingFlagType, acceptedDistance); + LoopWhileDrivingToDirectedWaypoint(); + + void LoopWhileDrivingToDirectedWaypoint() + { + while (VehicleAndDriverAreValid() && !Dismissed && !SkipWaypoint && Vehicle.FrontPosition.DistanceTo2D(oldPosition) > acceptedDistance) + { + if (oldPosition != currentWaypoint.Position) + { + oldPosition = currentWaypoint.Position; + } + GameFiber.Yield(); + } + if (Vehicle) + { + Driver.Tasks.PerformDrivingManeuver(Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] directed task is complete, directed is now false"); + } + Directed = false; + } + } + } + + void DriveToNextWaypoint() + { + if (!VehicleAndDriverAreValid() || CurrentWaypoint == null || Path == null) + { + Game.LogTrivial($"Vehicle, driver, waypoint, or path is null."); + return; + } + + Game.LogTrivial($"Preparing to run task loop for {Vehicle.Model.Name} [{Vehicle.Handle}] on path {Path.Number}"); + for (int currentWaypointTask = CurrentWaypoint.Number; currentWaypointTask < Path.Waypoints.Count; currentWaypointTask++) + { + var oldPosition = Path.Waypoints[currentWaypointTask].Position; + SkipWaypoint = false; + + if (this == null || !Vehicle || Dismissed || Directed) + { + Game.LogTrivial($"Vehicle dismissed, directed, or null, return"); + return; + } + if (Driver == null || !Driver || !Vehicle.HasDriver || !Driver.IsAlive || Vehicle.Driver == Game.LocalPlayer.Character) + { + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] does not have a driver/driver is null or driver is dead."); + return; + } + + if (Path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && !StoppedAtWaypoint) + { + CurrentWaypoint = Path.Waypoints[currentWaypointTask]; + float acceptedDistance = GetAcceptedStoppingDistance(Path.Waypoints, currentWaypointTask); + + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] is driving to path {Path.Number} waypoint {Path.Waypoints[currentWaypointTask].Number} (Stop: {CurrentWaypoint.IsStopWaypoint}, Driving flag: {CurrentWaypoint.DrivingFlagType})"); + Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); + LoopWhileDrivingToWaypoint(currentWaypointTask, acceptedDistance, oldPosition); + + if (!VehicleAndDriverAreValid()) + { + return; + } + + if (SkipWaypoint) + { + SkipWaypoint = false; + continue; + } + + if (!Dismissed && !Directed && Path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && Path.Waypoints[currentWaypointTask].IsStopWaypoint) + { + StopAtWaypoint(); + } + + if (!VehicleAndDriverAreValid() || Dismissed || Directed) + { + return; + } + + Driver.Tasks.PerformDrivingManeuver(Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); + } + } + + void LoopWhileDrivingToWaypoint(int currentWaypointTask, float acceptedDistance, Vector3 oldPosition) + { + while (VehicleAndDriverAreValid() && !Dismissed && !SkipWaypoint && !Directed && Path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && Vehicle.FrontPosition.DistanceTo2D(Path.Waypoints[currentWaypointTask].Position) > acceptedDistance) + { + if (oldPosition != Path.Waypoints[currentWaypointTask].Position) + { + oldPosition = Path.Waypoints[currentWaypointTask].Position; + Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); + } + GameFiber.Sleep(100); + } + } + } + + float GetAcceptedStoppingDistance(List waypoints, int nextWaypoint) + { + float dist; + if (Settings.SpeedUnit == SpeedUnits.MPH) + { + dist = (MathHelper.ConvertMilesPerHourToKilometersPerHour(waypoints[nextWaypoint].Speed) * MathHelper.ConvertMilesPerHourToKilometersPerHour(waypoints[nextWaypoint].Speed)) / (250 * 0.8f); + } + else + { + dist = (waypoints[nextWaypoint].Speed * waypoints[nextWaypoint].Speed) / (250 * 0.8f); + } + var acceptedDistance = MathHelper.Clamp(dist, 2, 10); + return acceptedDistance; + } + + void StopAtWaypoint() + { + if (!VehicleAndDriverAreValid()) + { + return; + } + + var stoppingDistance = GetAcceptedStoppingDistance(currentWaypoint.Path.Waypoints, currentWaypoint.Path.Waypoints.IndexOf(currentWaypoint)); + Game.LogTrivial($"{Vehicle.Model.Name} stopping at path {currentWaypoint.Path.Number} waypoint."); + Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, stoppingDistance, -1, true); + StoppedAtWaypoint = true; + + while (currentWaypoint != null && VehicleAndDriverAreValid() && StoppedAtWaypoint && !Directed) + { + GameFiber.Yield(); + } + if (Vehicle && Driver) + { + Game.LogTrivial($"{Vehicle.Model.Name} releasing from stop waypoint."); + Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); + Driver.Tasks.CruiseWithVehicle(5f); + } + } + + bool VehicleAndDriverAreValid() + { + if (this == null) + { + Game.LogTrivial($"CollectedVehicle is null"); + return false; + } + if (!Vehicle && !Dismissed) + { + Game.LogTrivial($"Vehicle is null"); + Dismiss(); + return false; + } + if (Driver == null || !Driver || !Driver.IsAlive && !Dismissed) + { + Dismiss(); + return false; + } + return true; + } } internal void Dismiss(DismissOption dismissOption = DismissOption.FromPath, Path newPath = null) @@ -72,7 +311,6 @@ namespace SceneManager if(StoppedAtWaypoint) { - //Logger.Log($"Unstucking {Vehicle.Model.Name}"); StoppedAtWaypoint = false; Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); if (Driver.CurrentVehicle) @@ -99,7 +337,7 @@ namespace SceneManager void DismissFromWorld() { - Game.LogTrivial($"Dismissed {Vehicle.Model.Name} from the world"); + Game.LogTrivial($"Dismissed {Vehicle.Model.Name} [{Vehicle.Handle}] from the world"); while (Vehicle.HasOccupants) { foreach (Ped occupant in Vehicle.Occupants) @@ -120,7 +358,7 @@ namespace SceneManager } else if (CurrentWaypoint?.Number != Path?.Waypoints.Count) { - Game.LogTrivial($"Dismissed from waypoint."); + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] dismissed from waypoint."); SkipWaypoint = true; } else if (CurrentWaypoint?.Number == Path?.Waypoints.Count) @@ -160,7 +398,7 @@ namespace SceneManager if (!Directed) { Path.CollectedVehicles.Remove(this); - Game.LogTrivial($"{Vehicle.Model.Name} dismissed successfully."); + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] dismissed successfully."); if (Driver) { if (Driver.GetAttachedBlip()) diff --git a/SceneManager/Object Classes/Path.cs b/SceneManager/Object Classes/Path.cs index 6730044..0eb5714 100644 --- a/SceneManager/Object Classes/Path.cs +++ b/SceneManager/Object Classes/Path.cs @@ -150,7 +150,8 @@ namespace SceneManager if (IsNearWaypoint(v, waypoint) && IsValidForCollection(v)) { CollectedVehicle newCollectedVehicle = AddVehicleToCollection(v); - GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(newCollectedVehicle, this, waypoint)); + GameFiber AssignTasksFiber = new GameFiber(() => newCollectedVehicle.AssignWaypointTasks(this, waypoint)); + //GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(newCollectedVehicle, this, waypoint)); AssignTasksFiber.Start(); } From a187d8bac9e14b88e4f18b37b5ed1c3cc0b7b670 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:47:09 -0600 Subject: [PATCH 14/74] Updated reference to vehicle tasking based on AITasking refactor. Fixed speed zone radius not updating correctly. --- SceneManager/Object Classes/Waypoint.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SceneManager/Object Classes/Waypoint.cs b/SceneManager/Object Classes/Waypoint.cs index 8e94ee8..d84f4b5 100644 --- a/SceneManager/Object Classes/Waypoint.cs +++ b/SceneManager/Object Classes/Waypoint.cs @@ -97,7 +97,7 @@ namespace SceneManager { IsCollector = true; RemoveSpeedZone(); - SpeedZone = World.AddSpeedZone(currentWaypoint.Position, SpeedZoneRadius, speed); + SpeedZone = World.AddSpeedZone(currentWaypoint.Position, speedZoneRadius, speed); Blip.Color = Color.Blue; if (CollectorRadiusBlip) { @@ -321,8 +321,8 @@ namespace SceneManager if (collectedVehicle == null) { CollectedVehicle newCollectedVehicle = AddVehicleToCollection(vehicle); - //Logger.Log($"Vehicle's front position distance to waypoint: {vehicle.FrontPosition.DistanceTo2D(waypoint.Position)}, collector radius: {waypoint.CollectorRadius}"); - GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(newCollectedVehicle, Path, this)); + GameFiber AssignTasksFiber = new GameFiber(() => newCollectedVehicle.AssignWaypointTasks(Path, this)); + //GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(newCollectedVehicle, Path, this)); AssignTasksFiber.Start(); } } From 0fd8aa183e38fee0ed02b94ab619dcf98097f3cd Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:47:15 -0600 Subject: [PATCH 15/74] Version update --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 638a4e7..8b529cf 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.1.2")] -[assembly: AssemblyFileVersion("2.0.1.2")] +[assembly: AssemblyVersion("2.0.1.3")] +[assembly: AssemblyFileVersion("2.0.1.3")] From 36fa5ffbf3bfc5e642664c6172d79c8019a6d8cd Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:47:29 -0600 Subject: [PATCH 16/74] Refactored AITasking into CollectedVehicle --- SceneManager/AITasking.cs | 306 ++++++++++---------------------------- 1 file changed, 78 insertions(+), 228 deletions(-) diff --git a/SceneManager/AITasking.cs b/SceneManager/AITasking.cs index 4a6e810..d59f310 100644 --- a/SceneManager/AITasking.cs +++ b/SceneManager/AITasking.cs @@ -1,236 +1,86 @@ -using Rage; -using System.Collections.Generic; -using System.Linq; +//using Rage; +//using System.Collections.Generic; +//using System.Linq; -namespace SceneManager -{ - // Driving styles https://gtaforums.com/topic/822314-guide-driving-styles/ - // also https://vespura.com/fivem/drivingstyle/ +//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, Path path, Waypoint currentWaypoint) - { - float acceptedDistance = GetAcceptedStoppingDistance(path.Waypoints, path.Waypoints.IndexOf(currentWaypoint)); - Vector3 oldPosition = currentWaypoint.Position; - if (!VehicleAndDriverAreValid(collectedVehicle)) - { - return; - } +// class AITasking +// { +// internal static void AssignWaypointTasks(CollectedVehicle collectedVehicle, Path path, Waypoint currentWaypoint) +// { +// if (!VehicleAndDriverAreValid(collectedVehicle)) +// { +// return; +// } - collectedVehicle.Path = path; - if(currentWaypoint != null) - { - collectedVehicle.CurrentWaypoint = currentWaypoint; - } - else - { - collectedVehicle.CurrentWaypoint = path.Waypoints[0]; - } +// collectedVehicle.Path = path; +// if(currentWaypoint != null) +// { +// collectedVehicle.CurrentWaypoint = currentWaypoint; +// } +// else +// { +// collectedVehicle.CurrentWaypoint = path.Waypoints[0]; +// } - if (currentWaypoint != null && collectedVehicle.Directed) - { - collectedVehicle.Dismissed = false; +// if (currentWaypoint != null && collectedVehicle.Directed) +// { +// collectedVehicle.Dismissed = false; - while (!collectedVehicle.ReadyForDirectTasks) - { - GameFiber.Yield(); - } - collectedVehicle.Driver.Tasks.Clear(); - AssignTasksForDirectedDriver(); - LoopWhileDrivingToDirectedWaypoint(); - if(collectedVehicle != null) - { - collectedVehicle.Directed = false; - } - if (collectedVehicle.Vehicle) - { - collectedVehicle.Driver.Tasks.PerformDrivingManeuver(collectedVehicle.Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); - Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} directed task is complete, directed is now false"); - } - } +// while (!collectedVehicle.ReadyForDirectTasks) +// { +// GameFiber.Yield(); +// } +// if (!VehicleAndDriverAreValid(collectedVehicle)) +// { +// return; +// } +// collectedVehicle.Driver.Tasks.Clear(); +// collectedVehicle.DriveToDirectedWaypoint(currentWaypoint); +// } - if (currentWaypoint.IsStopWaypoint) - { - StopVehicleAtWaypoint(currentWaypoint, collectedVehicle); - } - if(path?.Waypoints?.Count > 0 && currentWaypoint != path?.Waypoints?.Last()) - { - DriveVehicleToNextWaypoint(collectedVehicle, path, currentWaypoint); - } +// if (currentWaypoint.IsStopWaypoint) +// { +// collectedVehicle.StopAtWaypoint(currentWaypoint); +// } +// if(path?.Waypoints?.Count > 0 && currentWaypoint != path?.Waypoints?.Last()) +// { +// collectedVehicle.DriveToNextWaypoint(); +// } - if (!VehicleAndDriverAreValid(collectedVehicle) || collectedVehicle.Directed) - { - return; - } - Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} all Path {path.Number} tasks complete."); - if(!collectedVehicle.Dismissed) - { - collectedVehicle.Dismiss(); - } +// if (!VehicleAndDriverAreValid(collectedVehicle) || collectedVehicle.Directed) +// { +// return; +// } +// Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} all Path {path.Number} tasks complete."); +// if(!collectedVehicle.Dismissed) +// { +// collectedVehicle.Dismiss(); +// } +// } - void AssignTasksForDirectedDriver() - { - Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {currentWaypoint.Number} (directed)"); - collectedVehicle.Driver.Tasks.DriveToPosition(currentWaypoint.Position, currentWaypoint.Speed, (VehicleDrivingFlags)currentWaypoint.DrivingFlagType, acceptedDistance); - } - - void LoopWhileDrivingToDirectedWaypoint() - { - while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(oldPosition) > acceptedDistance) - { - if (oldPosition != currentWaypoint.Position) - { - oldPosition = currentWaypoint.Position; - } - GameFiber.Yield(); - } - } - } - - private static void DriveVehicleToNextWaypoint(CollectedVehicle collectedVehicle, Path path, Waypoint currentWaypoint) - { - if (!VehicleAndDriverAreValid(collectedVehicle) || currentWaypoint == null || currentWaypoint.Path == null) - { - Game.LogTrivial($"Vehicle, driver, waypoint, or path is null."); - return; - } - - var vehicle = collectedVehicle.Vehicle; - var driver = vehicle.Driver; - - Game.LogTrivial($"Preparing to run task loop for {collectedVehicle.Vehicle.Model.Name} on path {path.Number}"); - //Logger.Log($"Current path: {collectedVehicle.Path.Number}, Current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); - for (int currentWaypointTask = currentWaypoint.Number; currentWaypointTask < path.Waypoints.Count; currentWaypointTask++) - { - var oldPosition = path.Waypoints[currentWaypointTask].Position; - collectedVehicle.SkipWaypoint = false; - - if (collectedVehicle == null || !collectedVehicle.Vehicle || collectedVehicle.Dismissed || collectedVehicle.Directed) - { - Game.LogTrivial($"Vehicle dismissed, directed, or null, return"); - return; - } - if(collectedVehicle.Driver == null || !collectedVehicle.Driver || !collectedVehicle.Vehicle.HasDriver || !collectedVehicle.Driver.IsAlive || collectedVehicle.Vehicle.Driver == Game.LocalPlayer.Character) - { - Game.LogTrivial($"{vehicle.Model.Name} does not have a driver/driver is null or driver is dead."); - return; - } - - if (path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && !collectedVehicle.StoppedAtWaypoint) - { - collectedVehicle.CurrentWaypoint = path.Waypoints[currentWaypointTask]; - float acceptedDistance = GetAcceptedStoppingDistance(path.Waypoints, currentWaypointTask); - - Game.LogTrivial($"{vehicle.Model.Name} is driving to path {currentWaypoint.Path.Number} waypoint {path.Waypoints[currentWaypointTask].Number} (Stop: {currentWaypoint.IsStopWaypoint}, Driving flag: {currentWaypoint.DrivingFlagType})"); - //Logger.Log($"{vehicle.Model.Name} driver is persistent: {driver.IsPersistent}"); - driver.Tasks.DriveToPosition(path.Waypoints[currentWaypointTask].Position, path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); - LoopWhileDrivingToWaypoint(currentWaypointTask, acceptedDistance, oldPosition); - - if (!VehicleAndDriverAreValid(collectedVehicle)) - { - return; - } - - if (collectedVehicle.SkipWaypoint) - { - collectedVehicle.SkipWaypoint = false; - continue; - } - - if (!collectedVehicle.Dismissed && !collectedVehicle.Directed && path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && path.Waypoints[currentWaypointTask].IsStopWaypoint) - { - StopVehicleAtWaypoint(path.Waypoints[currentWaypointTask], collectedVehicle); - } - - if (!VehicleAndDriverAreValid(collectedVehicle) || collectedVehicle.Dismissed || collectedVehicle.Directed) - { - return; - } - - driver.Tasks.PerformDrivingManeuver(collectedVehicle.Vehicle, VehicleManeuver.GoForwardWithCustomSteeringAngle, 3).WaitForCompletion(); - // Do we need this? - //if (driver) - //{ - // driver.Tasks.Clear(); - //} - } - } - - void LoopWhileDrivingToWaypoint(int currentWaypointTask, float acceptedDistance, Vector3 oldPosition) - { - while (VehicleAndDriverAreValid(collectedVehicle) && !collectedVehicle.Dismissed && !collectedVehicle.SkipWaypoint && !collectedVehicle.Directed && path.Waypoints.ElementAtOrDefault(currentWaypointTask) != null && collectedVehicle.Vehicle.FrontPosition.DistanceTo2D(path.Waypoints[currentWaypointTask].Position) > acceptedDistance) - { - if (oldPosition != path.Waypoints[currentWaypointTask].Position) - { - oldPosition = path.Waypoints[currentWaypointTask].Position; - driver.Tasks.DriveToPosition(path.Waypoints[currentWaypointTask].Position, path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); - } - GameFiber.Sleep(100); - } - } - } - - private static float GetAcceptedStoppingDistance(List waypoints, int nextWaypoint) - { - float dist; - if(Settings.SpeedUnit == SpeedUnits.MPH) - { - dist = (MathHelper.ConvertMilesPerHourToKilometersPerHour(waypoints[nextWaypoint].Speed) * MathHelper.ConvertMilesPerHourToKilometersPerHour(waypoints[nextWaypoint].Speed)) / (250 * 0.8f); - } - else - { - dist = (waypoints[nextWaypoint].Speed * waypoints[nextWaypoint].Speed) / (250 * 0.8f); - } - var acceptedDistance = MathHelper.Clamp(dist, 2, 10); - //Logger.Log($"Accepted distance: {acceptedDistance}"); - return acceptedDistance; - } - - private static bool VehicleAndDriverAreValid(CollectedVehicle collectedVehicle) - { - if (collectedVehicle == null) - { - Game.LogTrivial($"CollectedVehicle is null"); - return false; - } - if (!collectedVehicle.Vehicle && !collectedVehicle.Dismissed) - { - Game.LogTrivial($"Vehicle is null"); - collectedVehicle.Dismiss(); - return false; - } - if (collectedVehicle.Driver == null || !collectedVehicle.Driver || !collectedVehicle.Driver.IsAlive && !collectedVehicle.Dismissed) - { - collectedVehicle.Dismiss(); - //Logger.Log($"{collectedVehicle.Vehicle.Model.Name} driver is null or dead"); - return false; - } - return true; - } - - private static void StopVehicleAtWaypoint(Waypoint currentWaypoint, CollectedVehicle collectedVehicle) - { - if (!VehicleAndDriverAreValid(collectedVehicle)) - { - return; - } - - var stoppingDistance = GetAcceptedStoppingDistance(currentWaypoint.Path.Waypoints, currentWaypoint.Path.Waypoints.IndexOf(currentWaypoint)); - Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} stopping at path {currentWaypoint.Path.Number} waypoint."); - Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(collectedVehicle.Vehicle, stoppingDistance, -1, true); - collectedVehicle.StoppedAtWaypoint = true; - - while (currentWaypoint != null && VehicleAndDriverAreValid(collectedVehicle) && collectedVehicle.StoppedAtWaypoint && !collectedVehicle.Directed) - { - GameFiber.Yield(); - } - if(collectedVehicle.Vehicle && collectedVehicle.Driver) - { - Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} releasing from stop waypoint."); - Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(collectedVehicle.Vehicle, 0f, 1, true); - collectedVehicle.Driver.Tasks.CruiseWithVehicle(5f); - } - } - } -} +// private static bool VehicleAndDriverAreValid(CollectedVehicle collectedVehicle) +// { +// if (collectedVehicle == null) +// { +// Game.LogTrivial($"CollectedVehicle is null"); +// return false; +// } +// if (!collectedVehicle.Vehicle && !collectedVehicle.Dismissed) +// { +// Game.LogTrivial($"Vehicle is null"); +// collectedVehicle.Dismiss(); +// return false; +// } +// if (collectedVehicle.Driver == null || !collectedVehicle.Driver || !collectedVehicle.Driver.IsAlive && !collectedVehicle.Dismissed) +// { +// collectedVehicle.Dismiss(); +// return false; +// } +// return true; +// } +// } +//} From 1321b0b91da5a781b04f2095af762028571a8013 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sat, 24 Oct 2020 07:48:05 -0600 Subject: [PATCH 17/74] Added check for CollectorRadius being more than SpeedZoneRadius. Added debug messages when values are reset to default. --- SceneManager/Settings.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/SceneManager/Settings.cs b/SceneManager/Settings.cs index a5b604d..2d5dba7 100644 --- a/SceneManager/Settings.cs +++ b/SceneManager/Settings.cs @@ -67,12 +67,14 @@ namespace SceneManager ModifierKey = ini.ReadEnum("Keybindings", "ModifierKey", Keys.LShiftKey); ToggleButton = ini.ReadEnum("Keybindings", "ToggleButton", ControllerButtons.A); ModifierButton = ini.ReadEnum("Keybindings", "ModifierButton", ControllerButtons.DPadDown); + // Plugin Settings Enable3DWaypoints = ini.ReadBoolean("Plugin Settings", "Enable3DWaypoints", true); EnableMapBlips = ini.ReadBoolean("Plugin Settings", "EnableMapBlips", true); EnableHints = ini.ReadBoolean("Plugin Settings", "EnableHints", true); SpeedUnit = ini.ReadEnum("Plugin Settings", "SpeedUnits", SpeedUnits.MPH); BarrierPlacementDistance = ini.ReadInt32("Plugin Settings", "BarrierPlacementDistance", 30); + // Default Waypoint Settings CollectorRadius = ini.ReadInt32("Default Waypoint Settings", "CollectorRadius", 1); SpeedZoneRadius = ini.ReadInt32("Default Waypoint Settings", "SpeedZoneRadius", 5); @@ -80,6 +82,7 @@ namespace SceneManager DirectDrivingBehavior = ini.ReadBoolean("Default Waypoint Settings", "DirectDrivingBehavior", false); WaypointSpeed = ini.ReadInt32("Default Waypoint Settings", "WaypointSpeed", 5); CheckForValidWaypointSettings(); + // Barriers foreach(string key in ini.GetKeyNames("Barriers")) { @@ -94,14 +97,23 @@ namespace SceneManager if(CollectorRadius > 50 || CollectorRadius < 1) { CollectorRadius = 1; + Game.LogTrivial($"Invalid value for CollectorRadius in user settings, resetting to default."); } if(SpeedZoneRadius > 200 || SpeedZoneRadius < 5) { SpeedZoneRadius = 5; + Game.LogTrivial($"Invalid value for SpeedZoneRadius in user settings, resetting to default."); } - if(WaypointSpeed > 100 || WaypointSpeed < 5) + if (CollectorRadius > SpeedZoneRadius) + { + CollectorRadius = 1; + SpeedZoneRadius = 5; + Game.LogTrivial($"CollectorRadius is greater than SpeedZoneRadius in user settings, resetting to defaults."); + } + if (WaypointSpeed > 100 || WaypointSpeed < 5) { WaypointSpeed = 5; + Game.LogTrivial($"Invalid value for WaypointSpeed in user settings, resetting to default."); } } } From 2505d2899c844972866e20e9343a0e364cba7393 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:37:35 -0600 Subject: [PATCH 18/74] Added hint message if player tries to edit waypoints while 3D waypoints are disabled --- SceneManager/Menus/EditPathMenu.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SceneManager/Menus/EditPathMenu.cs b/SceneManager/Menus/EditPathMenu.cs index dc22dd3..dca5a5b 100644 --- a/SceneManager/Menus/EditPathMenu.cs +++ b/SceneManager/Menus/EditPathMenu.cs @@ -35,6 +35,10 @@ namespace SceneManager private static void EditPathWaypoints() { + if (!SettingsMenu.threeDWaypoints.Checked) + { + Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~You have 3D waypoints disabled in your settings. It's recommended to enable 3D waypoints while working with waypoints."); + } EditWaypointMenu.BuildEditWaypointMenu(); } From 11c441ebfcd929efa66951d1e751fa4e470b260b Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:38:25 -0600 Subject: [PATCH 19/74] Fixed a bug where a 3D waypoint marker would be drawn even if 3D waypoints were disabled --- SceneManager/Menus/EditWaypointMenu.cs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index 8b32974..f6d1419 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -452,18 +452,21 @@ namespace SceneManager private static void DrawWaypointMarker(Vector3 waypointPosition) { - if (SettingsMenu.threeDWaypoints.Checked && collectorWaypoint.Checked) + if (SettingsMenu.threeDWaypoints.Checked) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); - } - else if (stopWaypointType.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); - } - else - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + if (collectorWaypoint.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); + } + else if (stopWaypointType.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); + } + else + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + } } } From 3e59e08b59bebb019edc8322c975c9375c09febb Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:39:35 -0600 Subject: [PATCH 20/74] Removed unnecessary property setting when a vehicle is being removed from a path. --- SceneManager/Menus/PathMainMenu.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index a847034..8c2f25e 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -186,7 +186,7 @@ namespace SceneManager { Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(cv.Vehicle, 1f, 1, true); } - cv.StoppedAtWaypoint = false; + //cv.StoppedAtWaypoint = false; if (cv.Driver.GetAttachedBlip()) { cv.Driver.GetAttachedBlip().Delete(); From 667bea553da028b181abb1a9acd27c97a3a6dce2 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:40:17 -0600 Subject: [PATCH 21/74] Added a check for if the driver loses their task and reassigns it. --- .../Object Classes/CollectedVehicle.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index bf996a2..cb72bc2 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -6,16 +6,16 @@ namespace SceneManager { internal class CollectedVehicle { - internal Ped Driver { get; set; } - internal Vehicle Vehicle { get; set; } - internal Path Path { get; set; } - internal Waypoint CurrentWaypoint { get; set; } + internal Ped Driver { get; private set; } + internal Vehicle Vehicle { get; private set; } + internal Path Path { get; private set; } + internal Waypoint CurrentWaypoint { get; private set; } internal Waypoint NextWaypoint { get; private set; } - internal bool StoppedAtWaypoint { get; set; } = false; - internal bool Dismissed { get; set; } = false; + internal bool StoppedAtWaypoint { get; private set; } = false; + internal bool Dismissed { get; private set; } = false; internal bool Directed { get; set; } = false; - internal bool SkipWaypoint { get; set; } = false; - internal bool ReadyForDirectTasks { get; set; } = true; + internal bool SkipWaypoint { get; private set; } = false; + internal bool ReadyForDirectTasks { get; private set; } = true; internal CollectedVehicle(Vehicle vehicle, Path path, Waypoint currentWaypoint) { @@ -214,6 +214,12 @@ namespace SceneManager oldPosition = Path.Waypoints[currentWaypointTask].Position; Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); } + if(Driver.Tasks.CurrentTaskStatus == TaskStatus.NoTask) + { + //Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n{Vehicle.Model.Name} [{Vehicle.Handle}] driver [{Driver.Handle}] has no task. Reassiging current waypoint task."); + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] driver [{Driver.Handle}] has no task. Reassiging current waypoint task."); + Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); + } GameFiber.Sleep(100); } } From d819c1b82b47ffa77a90064e05117e2dfcd55c74 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:40:45 -0600 Subject: [PATCH 22/74] Fixed a bug where the 3D line between waypoints was still being drawn even though 3D waypoints were disabled in the settings menu. --- SceneManager/Object Classes/Path.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SceneManager/Object Classes/Path.cs b/SceneManager/Object Classes/Path.cs index 0eb5714..7c62061 100644 --- a/SceneManager/Object Classes/Path.cs +++ b/SceneManager/Object Classes/Path.cs @@ -83,7 +83,7 @@ namespace SceneManager { while(true) { - if (Settings.Enable3DWaypoints && (State == State.Finished && MenuManager.menuPool.IsAnyMenuOpen()) || (State == State.Creating && PathCreationMenu.pathCreationMenu.Visible)) + if (SettingsMenu.threeDWaypoints.Checked && (State == State.Finished && MenuManager.menuPool.IsAnyMenuOpen()) || (State == State.Creating && PathCreationMenu.pathCreationMenu.Visible)) { for (int i = 0; i < Waypoints.Count; i++) { From f39c102ea4c92ce2bf656e5553fccc77c56048be Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:40:59 -0600 Subject: [PATCH 23/74] Updated version --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 8b529cf..08c897d 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.1.3")] -[assembly: AssemblyFileVersion("2.0.1.3")] +[assembly: AssemblyVersion("2.1.0.0")] +[assembly: AssemblyFileVersion("2.1.0.0")] From 891a04fdcfc47439cfe399c3c32f8522676d1986 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:41:15 -0600 Subject: [PATCH 24/74] Added console command to show info about collected vehicles. --- SceneManager/ConsoleCommands.cs | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 SceneManager/ConsoleCommands.cs diff --git a/SceneManager/ConsoleCommands.cs b/SceneManager/ConsoleCommands.cs new file mode 100644 index 0000000..a9cf5bf --- /dev/null +++ b/SceneManager/ConsoleCommands.cs @@ -0,0 +1,34 @@ +using Rage; +using Rage.Attributes; +using Rage.ConsoleCommands.AutoCompleters; +using System.Linq; + +namespace SceneManager +{ + internal static class ConsoleCommands + { + [ConsoleCommand] + internal static void Command_ShowCollectedVehicleInfo([ConsoleCommandParameter(AutoCompleterType = typeof(ConsoleCommandAutoCompleterVehicle))] Vehicle vehicle) + { + foreach(Path path in PathMainMenu.paths) + { + var collectedVehicle = path.CollectedVehicles.Where(v => v.Vehicle == vehicle).FirstOrDefault(); + if(collectedVehicle != null) + { + Game.LogTrivial($"Vehicle: {collectedVehicle.Vehicle.Model.Name} [{collectedVehicle.Vehicle.Handle}]"); + Game.LogTrivial($"Driver handle: {collectedVehicle.Driver.Handle}"); + Game.LogTrivial($"Path: {collectedVehicle.Path.Number}"); + Game.LogTrivial($"Current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); + Game.LogTrivial($"StoppedAtWaypoint: {collectedVehicle.StoppedAtWaypoint}"); + Game.LogTrivial($"SkipWaypoint: {collectedVehicle.SkipWaypoint}"); + Game.LogTrivial($"ReadyForDirectTasks: {collectedVehicle.ReadyForDirectTasks}"); + Game.LogTrivial($"Directed: {collectedVehicle.Directed}"); + Game.LogTrivial($"Dismissed: {collectedVehicle.Dismissed}"); + Game.LogTrivial($"Task status: {collectedVehicle.Driver.Tasks.CurrentTaskStatus}"); + return; + } + } + Game.LogTrivial($"{vehicle.Model.Name} [{vehicle.Handle}] was not found collected by any path."); + } + } +} From b233602ebdc4a9f4c4eeb6e961945cf12a36aedf Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:41:38 -0600 Subject: [PATCH 25/74] Added ConsoleCommand class, removed AITasking class. --- SceneManager/SceneManager.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SceneManager/SceneManager.csproj b/SceneManager/SceneManager.csproj index 9b598e6..3b42a7c 100644 --- a/SceneManager/SceneManager.csproj +++ b/SceneManager/SceneManager.csproj @@ -50,7 +50,7 @@ - + From 92bf6de34ce6a475629a6c43a5334275b21f5400 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 25 Oct 2020 08:41:52 -0600 Subject: [PATCH 26/74] Removed class after refactoring into CollectedVehicle --- SceneManager/AITasking.cs | 86 --------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 SceneManager/AITasking.cs diff --git a/SceneManager/AITasking.cs b/SceneManager/AITasking.cs deleted file mode 100644 index d59f310..0000000 --- a/SceneManager/AITasking.cs +++ /dev/null @@ -1,86 +0,0 @@ -//using Rage; -//using System.Collections.Generic; -//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, Path path, Waypoint currentWaypoint) -// { -// if (!VehicleAndDriverAreValid(collectedVehicle)) -// { -// return; -// } - -// collectedVehicle.Path = path; -// if(currentWaypoint != null) -// { -// collectedVehicle.CurrentWaypoint = currentWaypoint; -// } -// else -// { -// collectedVehicle.CurrentWaypoint = path.Waypoints[0]; -// } - -// if (currentWaypoint != null && collectedVehicle.Directed) -// { -// collectedVehicle.Dismissed = false; - -// while (!collectedVehicle.ReadyForDirectTasks) -// { -// GameFiber.Yield(); -// } -// if (!VehicleAndDriverAreValid(collectedVehicle)) -// { -// return; -// } -// collectedVehicle.Driver.Tasks.Clear(); -// collectedVehicle.DriveToDirectedWaypoint(currentWaypoint); -// } - -// if (currentWaypoint.IsStopWaypoint) -// { -// collectedVehicle.StopAtWaypoint(currentWaypoint); -// } -// if(path?.Waypoints?.Count > 0 && currentWaypoint != path?.Waypoints?.Last()) -// { -// collectedVehicle.DriveToNextWaypoint(); -// } - -// if (!VehicleAndDriverAreValid(collectedVehicle) || collectedVehicle.Directed) -// { -// return; -// } -// Game.LogTrivial($"{collectedVehicle.Vehicle.Model.Name} all Path {path.Number} tasks complete."); -// if(!collectedVehicle.Dismissed) -// { -// collectedVehicle.Dismiss(); -// } -// } - -// private static bool VehicleAndDriverAreValid(CollectedVehicle collectedVehicle) -// { -// if (collectedVehicle == null) -// { -// Game.LogTrivial($"CollectedVehicle is null"); -// return false; -// } -// if (!collectedVehicle.Vehicle && !collectedVehicle.Dismissed) -// { -// Game.LogTrivial($"Vehicle is null"); -// collectedVehicle.Dismiss(); -// return false; -// } -// if (collectedVehicle.Driver == null || !collectedVehicle.Driver || !collectedVehicle.Driver.IsAlive && !collectedVehicle.Dismissed) -// { -// collectedVehicle.Dismiss(); -// return false; -// } -// return true; -// } -// } -//} From e2149d739052e35e91b1d7280127c22d0515fd7a Mon Sep 17 00:00:00 2001 From: Rich <23438379+Rich-Dunne@users.noreply.github.com> Date: Sun, 25 Oct 2020 08:42:33 -0600 Subject: [PATCH 27/74] Update README.md --- README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 2a7d381..c1577f9 100644 --- a/README.md +++ b/README.md @@ -8,33 +8,33 @@ Drag and drop the contents from within the downloaded GTA V folder into where yo ### Using the Menus: Menu options with gold colored text are selectable, which means when you select these menu items, something will happen (opening a new menu, adding a waypoint, placing a barrier, etc). Menu options with white colored text are interactable (can be scrolled through, for example), but nothing will happen if you try to select them. -![Menus](https://i.imgur.com/dOCtdQN.jpg) +![Menus](https://i.imgur.com/GQNZrm4.jpg) ### Creating Paths: 1. To create paths, open the Scene Manager menu by pressing Left Shift + T (default). Select "Path Menu," then "Create New Path." 2. In the Path Creation menu, you can specify different waypoint options, as well as add and remove waypoints. The settings for each waypoint are how the AI will drive to **that** waypoint from the **previous** waypoint. -3. Adding a waypoint will create a waypoint at your player's position. -4. The first waypoint of a path **must** be a collector waypoint. If you have 3D waypoints enabled, the blue marker is the collection radius and the orange marker is the speed zone radius. +3. Adding a waypoint will create a waypoint at your mouse position in the world (where you're aiming). +4. The first waypoint of a path **must** be a collector waypoint. If you have 3D waypoints enabled, the blue marker is the collection radius and the orange marker is the speed zone radius. **NOTE:** Not every waypoint has to be a collector waypoint. Too many collector waypoints will impact performance for lower-end systems. 5. As you add and remove waypoints, blips and world markers will appear and disappear if enabled in your settings. Blips are numbered to correspond with their path. Blips and markers are also colored to designate the following: Blue are collector waypoints, green are Drive waypoints, and red are Stop waypoints. 6. The path will activate once you select "End path creation," and cars will automatically follow the path when they are within the collection radius. 7. After creating paths, you can delete them via the Path Menu. -![Creating a path](https://i.imgur.com/h52Y2SY.jpg) -![Finishg a path](https://i.imgur.com/MGGfGQB.jpg) +![Creating a path](https://i.imgur.com/v7s1QMf.jpg) +![Finishg a path](https://i.imgur.com/75OhNS5.jpg) ### Other Path Menu Options 1. The "Direct nearest driver to path" option in the Path Manager Main Menu allows you to manually direct the nearest vehicle to a path of your choice. You may either direct a driver to the nearest path's first waypoint or the nearest waypoint in front of the driver. 2. The "Dismiss nearest driver" option in the Path Manager Main Menu allows you to dismiss vehicles from their path, their current waypoint, or from their current position. Dismissing from a path will clear all driver tasks and they will no longer be controlled by Scene Manager. Dismissing from their current waypoint will either give the driver their next waypoint task, or dismiss them from the path if they were already going to the path's final waypoint. The Dismiss from World option will delete the vehicle and all occupants from the world. -![Other path menu options](https://i.imgur.com/3tpiitR.jpg) +![Other path menu options](https://i.imgur.com/4PIbnYM.jpg) ### Editing Paths and Waypoints 1. In the Edit Path menu, you can disable and delete individual paths. When a path is disabled, it will not collect any new vehicles at collector waypoints. However, vehicles can still be manually directed to disabled paths. 2. In the Edit Waypoint menu, you can change the settings of each path's individual waypoints. -3. You can add new waypoints to the end of the path by selecting the Add as New Waypoint option in the Edit Waypoint menu. It is recommended to have the Update Waypoint Position option checked as you do this since it will create a 3D marker (if enabled in the settings) around your player so you can see the waypoint's settings as you change them. +3. You can add new waypoints to the end of the path by selecting the Add as New Waypoint option in the Edit Waypoint menu. You should have the Update Waypoint Position option checked as you do this since it will create a 3D marker (if enabled in the settings) around your player so you can see the waypoint's settings as you change them. -![Edit path waypoints](https://i.imgur.com/V8q5wvp.jpg) +![Edit path waypoints](https://i.imgur.com/DzwuK4t.jpg) ### Barrier Management 1. To place barriers, open the Scene Manager menu by pressing Left Shift + T (default). @@ -43,17 +43,18 @@ Menu options with gold colored text are selectable, which means when you select 4. The spawn position is wherever you aim your mouse. If you aim your mouse too far away, the shadow barrier will disappear and you won't be able to spawn the barrier. You can change the maximum spawn distance in the plugin's .ini file. 5. The AI will not drive around barriers on their own. Barrier placement should be done in conjunction with your paths. -![Barrier menu](https://i.imgur.com/kxMGhIF.jpg) -![Placing barriers](https://i.imgur.com/FanVlGP.jpg) +![Barrier menu](https://i.imgur.com/Sp3uc7c.jpg) +![Placing barriers](https://i.imgur.com/8YXzlWN.jpg) ### Other Notes 1. Paths and barriers will remain in the world after you die. Be sure to delete them when you're done! -2. The first waypoint of a path must be a collector waypoint. If you edit the only waypoint of a path to not be a collector, it will automatically be turned into a collector. +2. The first waypoint of a path **must** be a collector waypoint. If you edit the only waypoint of a path to not be a collector, it will automatically be turned into a collector. 3. Some settings in Scene Manager's .ini file can be updated in-game using the Settings menu. Saving these settings in-game will update the .ini so you don't have to change the settings every time you load the plugin. 4. You can add custom barrier objects to the barrier menu by adding them to the Barriers section of the .ini file. A link is provided in the .ini file to find object model names. +5. You should have the 3D Waypoints setting enabled anytime you work with waypoints. -![Scene overview](https://i.imgur.com/lB2pdh6.jpg) +![Scene overview](https://i.imgur.com/Rd5Z5qe.jpg) ## CREDITS * Author: Rich -* Additional credit: PNWParksFan for code assistance and extensive testing, Sereous, OJdoesIt, Vincentsgm, EchoWolf, FactionsBrutus \ No newline at end of file +* Additional credit: PNWParksFan for code assistance and extensive testing, Sereous, OJdoesIt, Vincentsgm, EchoWolf, FactionsBrutus From 8ad0f282db1e7daebbb7a7cacd9b044df65a4beb Mon Sep 17 00:00:00 2001 From: Rich <23438379+Rich-Dunne@users.noreply.github.com> Date: Mon, 26 Oct 2020 14:56:04 -0600 Subject: [PATCH 28/74] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c1577f9..363ab6c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ Drag and drop the contents from within the downloaded GTA V folder into where your GTA V is installed. ![How to drag and drop](https://i.imgur.com/nnxqgtn.jpg) +## GET SUPPORT AND REPORT PROBLEMS +For the fastest support, [join my Discord](https://discord.gg/cUQaTNQ) and ask your question in the **correct category/channel**. For slower support, [use this thread on the LSPDFR forums](https://www.lcpdfr.com/forums/topic/107730-richs-plugin-support-thread/). + ## HOW TO USE SCENE MANAGER ### Using the Menus: Menu options with gold colored text are selectable, which means when you select these menu items, something will happen (opening a new menu, adding a waypoint, placing a barrier, etc). Menu options with white colored text are interactable (can be scrolled through, for example), but nothing will happen if you try to select them. From 46d5686bc37275740cedef994e0469092927d525 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 8 Nov 2020 11:04:36 -0700 Subject: [PATCH 29/74] Added ini setting for Advanced Barrier Options. Added enum for TrafficLight state. Added debug message for invalid barriers. --- SceneManager/Settings.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/SceneManager/Settings.cs b/SceneManager/Settings.cs index 2d5dba7..08d3b4f 100644 --- a/SceneManager/Settings.cs +++ b/SceneManager/Settings.cs @@ -23,7 +23,7 @@ namespace SceneManager Direct = 17040259 } - public enum DismissOption + internal enum DismissOption { FromPath = 0, FromWaypoint = 1, @@ -32,6 +32,14 @@ namespace SceneManager FromDirected = 4 } + internal enum TrafficLight + { + Green = 0, + Red = 1, + Yellow = 2, + None = 3 + } + internal static class Settings { internal static readonly InitializationFile ini = new InitializationFile("Plugins/SceneManager.ini"); @@ -41,18 +49,22 @@ namespace SceneManager internal static Keys ModifierKey = Keys.LShiftKey; internal static ControllerButtons ToggleButton = ControllerButtons.Y; internal static ControllerButtons ModifierButton = ControllerButtons.A; + // Plugin Settings internal static bool Enable3DWaypoints = true; internal static bool EnableMapBlips = true; internal static bool EnableHints = true; internal static SpeedUnits SpeedUnit = SpeedUnits.MPH; internal static float BarrierPlacementDistance = 30f; + internal static bool EnableAdvancedBarricadeOptions = false; + // Default Waypoint Settings internal static int CollectorRadius = 1; internal static int SpeedZoneRadius = 5; internal static bool StopWaypoint = false; internal static bool DirectDrivingBehavior = false; internal static int WaypointSpeed = 5; + // Barriers internal static List barrierKeys = new List(); internal static List barrierValues = new List(); @@ -74,6 +86,7 @@ namespace SceneManager EnableHints = ini.ReadBoolean("Plugin Settings", "EnableHints", true); SpeedUnit = ini.ReadEnum("Plugin Settings", "SpeedUnits", SpeedUnits.MPH); BarrierPlacementDistance = ini.ReadInt32("Plugin Settings", "BarrierPlacementDistance", 30); + EnableAdvancedBarricadeOptions = ini.ReadBoolean("Plugin Settings", "EnableAdvancedBarricadeOptions", false); // Default Waypoint Settings CollectorRadius = ini.ReadInt32("Default Waypoint Settings", "CollectorRadius", 1); @@ -89,7 +102,13 @@ namespace SceneManager barrierKeys.Add(key.Trim()); var m = new Model(ini.ReadString("Barriers", key)); if (m.IsValid) + { barrierValues.Add(m.Name); + } + else + { + Game.LogTrivial($"{m.Name} is not valid."); + } } void CheckForValidWaypointSettings() From 3639c2e956dea8494df5fa7ac3bd2ddbe7c757b7 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 8 Nov 2020 11:06:33 -0700 Subject: [PATCH 30/74] Updated version --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 08c897d..d184f1b 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.1.0.0")] -[assembly: AssemblyFileVersion("2.1.0.0")] +[assembly: AssemblyVersion("2.0.1.10")] +[assembly: AssemblyFileVersion("2.0.1.10")] From 3f05139c59153f859ae6069ab2b5ffd56e255900 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 8 Nov 2020 11:08:27 -0700 Subject: [PATCH 31/74] Added MousePositionInWorld and RNUIMouseInputHandler classes --- SceneManager/MousePositionInWorld.cs | 42 +++++ SceneManager/RNUIMouseInputHandler.cs | 253 ++++++++++++++++++++++++++ SceneManager/SceneManager.csproj | 2 + 3 files changed, 297 insertions(+) create mode 100644 SceneManager/MousePositionInWorld.cs create mode 100644 SceneManager/RNUIMouseInputHandler.cs diff --git a/SceneManager/MousePositionInWorld.cs b/SceneManager/MousePositionInWorld.cs new file mode 100644 index 0000000..5d1b9e5 --- /dev/null +++ b/SceneManager/MousePositionInWorld.cs @@ -0,0 +1,42 @@ +using Rage; +using RAGENativeUI.Elements; + +namespace SceneManager +{ + internal static class MousePositionInWorld + { + internal static Vector3 GetPosition { get { return GetMousePositionInWorld(); } } + internal static Vector3 GetPositionForBarrier { get { return GetMousePositionInWorld(Settings.BarrierPlacementDistance); } } + + private static Vector3 GetMousePositionInWorld(float maxDistance = 100f) + { + HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + + HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + { + Vector3 direction = GetPlayerLookingDirection(out start); + end = start + (maxTraceDistance * direction); + return World.TraceLine(start, end, flags); + } + + Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + { + if (Camera.RenderingCamera) + { + camPosition = Camera.RenderingCamera.Position; + return Camera.RenderingCamera.Direction; + } + else + { + float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); + float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + + camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); + return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + } + } + + return TracePlayerView(maxDistance, TraceFlags.IntersectWorld).HitPosition; + } + } +} diff --git a/SceneManager/RNUIMouseInputHandler.cs b/SceneManager/RNUIMouseInputHandler.cs new file mode 100644 index 0000000..2335aa6 --- /dev/null +++ b/SceneManager/RNUIMouseInputHandler.cs @@ -0,0 +1,253 @@ +using Rage; +using RAGENativeUI; +using RAGENativeUI.Elements; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace SceneManager +{ + internal class RNUIMouseInputHandler + { + internal delegate void Function(); + + internal static void Initialize(UIMenu menu, List scrollerItems, Dictionary checkboxItems, Dictionary selectItems) + { + GameFiber.StartNew(() => + { + while (menu.Visible) + { + var selectedScroller = menu.MenuItems.Where(x => scrollerItems.Contains(x) && x.Selected && x.Enabled).FirstOrDefault(); + if (selectedScroller != null) + { + OnWheelScroll(menu, selectedScroller, scrollerItems); + } + + if (Game.IsKeyDown(Keys.LButton)) + { + var selectedItem = menu.MenuItems.Where(x => x.Enabled && x.Selected).FirstOrDefault(); + if (selectedItem != null) + { + //Game.LogTrivial($"selectedItem: {selectedItem.Text}"); + //Game.LogTrivial($"scrollerItems contains: {scrollerItems.Contains(selectedItem)}"); + if (selectItems.ContainsKey(selectedItem)) + { + OnMenuItemClicked(selectItems); + } + else if (!scrollerItems.Contains(selectedItem) && checkboxItems.ContainsKey((UIMenuCheckboxItem)selectedItem)) + { + OnCheckboxItemClicked(checkboxItems); + } + } + + if(menu.SubtitleText == "~o~Main Menu") + { + menu.Visible = false; + } + } + + if (menu.SubtitleText.Contains("Path Creation Menu")) + { + DrawWaypointMarker(); + } + GameFiber.Yield(); + } + }); + } + + internal static void OnCheckboxItemClicked(Dictionary checkboxItems) + { + var checkedItem = checkboxItems.Keys.Where(x => x.Selected && x.Enabled).FirstOrDefault(); + if(checkedItem != null) + { + checkedItem.Checked = !checkedItem.Checked; + if(checkboxItems.TryGetValue(checkedItem, out Function func)) + { + func?.Invoke(); + } + } + } + + internal static void OnMenuItemClicked(Dictionary selectItems) + { + var selectedItem = selectItems.Keys.Where(x => x.Selected && x.Enabled).FirstOrDefault(); + //Game.LogTrivial($"selectedItem: {selectedItem?.Text}"); + if (selectedItem != null) + { + if (selectItems.TryGetValue(selectedItem, out Function func)) + { + func?.Invoke(); + } + } + } + + internal static void OnWheelScroll(UIMenu menu, UIMenuItem selectedScroller, List scrollerItems) + { + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + + while (Game.IsShiftKeyDownRightNow) + { + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + if (menu.SubtitleText.Contains("Path Creation Menu") || menu.SubtitleText.Contains("Edit Waypoint")) + { + CompareScrollerValues(); + } + if(menu.SubtitleText.Contains("Path Creation Menu")) + { + DrawWaypointMarker(); + } + GameFiber.Yield(); + } + + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + //Game.LogTrivial($"Selected scroller: {selectedScroller.Text}"); + if (Game.GetMouseWheelDelta() > 0) + { + foreach (var item in scrollerItems) + { + if (item == selectedScroller) + { + //Game.LogTrivial($"item text: {item.Text}"); + item.ScrollToNextOption(); + if (menu.SubtitleText.ToLower().Contains("barrier")) + { + HandleBarrierMenuItems(item); + } + if(item.Text == "Edit Waypoint") + { + UpdateEditWaypointMenuItems(); + } + } + } + } + else if (Game.GetMouseWheelDelta() < 0) + { + foreach (var item in scrollerItems) + { + if (item == selectedScroller) + { + item.ScrollToPreviousOption(); + if (menu.SubtitleText.ToLower().Contains("barrier")) + { + HandleBarrierMenuItems(item); + } + if (item.Text == "Edit Waypoint") + { + UpdateEditWaypointMenuItems(); + } + } + } + } + + void HandleBarrierMenuItems(UIMenuItem item) + { + if (item.Text == "Spawn Barrier") + { + if (BarrierMenu.shadowBarrier) + { + BarrierMenu.shadowBarrier.Delete(); + } + var changeTextureItem = scrollerItems.Where(x => x.Text == "Change Texture").FirstOrDefault().Index = 0; + var listScrollerItem = (UIMenuListScrollerItem)item; + if (listScrollerItem.SelectedItem == "Flare") + { + scrollerItems.Where(x => x.Text == "Rotate Barrier").FirstOrDefault().Enabled = false; + } + else + { + scrollerItems.Where(x => x.Text == "Rotate Barrier").FirstOrDefault().Enabled = true; + } + menu.Width = BarrierMenu.SetMenuWidth(); + } + else if (item.Text == "Rotate Barrier") + { + BarrierMenu.RotateBarrier(); + } + else if(item.Text == "Change Texture") + { + var numericScrollerItem = (UIMenuNumericScrollerItem)item; + Rage.Native.NativeFunction.Natives.x971DA0055324D033(BarrierMenu.shadowBarrier, numericScrollerItem.Value); + } + } + + void UpdateEditWaypointMenuItems() + { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + var editWaypoint = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Edit Waypoint").FirstOrDefault(); + var collectorWaypoint = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Collector").FirstOrDefault(); + var changeCollectorRadius = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Collection Radius").FirstOrDefault(); + var changeSpeedZoneRadius = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Speed Zone Radius").FirstOrDefault(); + var stopWaypointType = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Is this a Stop waypoint?").FirstOrDefault(); + var directWaypointBehavior = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Drive directly to waypoint?").FirstOrDefault(); + var changeWaypointSpeed = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Waypoint Speed").FirstOrDefault(); + var updateWaypointPosition = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Update Waypoint Position").FirstOrDefault(); + var currentWaypoint = currentPath.Waypoints[editWaypoint.Value - 1]; + + changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); + stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; + directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; + collectorWaypoint.Checked = currentWaypoint.IsCollector; + changeCollectorRadius.Enabled = collectorWaypoint.Checked ? true : false; + changeCollectorRadius.Value = (int)currentWaypoint.CollectorRadius; + changeSpeedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; + changeSpeedZoneRadius.Value = (int)currentWaypoint.SpeedZoneRadius; + updateWaypointPosition.Checked = false; + } + } + + void CompareScrollerValues() + { + var collectorRadius = (UIMenuNumericScrollerItem)scrollerItems.Where(x => x.Text == "Collection Radius").FirstOrDefault(); + var speedZoneRadius = (UIMenuNumericScrollerItem)scrollerItems.Where(x => x.Text == "Speed Zone Radius").FirstOrDefault(); + + if (selectedScroller.Text == "Collection Radius" || selectedScroller.Text == "Speed Zone Radius") + { + if (selectedScroller == collectorRadius && collectorRadius.Value > speedZoneRadius.Value) + { + while (collectorRadius.Value > speedZoneRadius.Value) + { + speedZoneRadius.ScrollToNextOption(); + } + } + if (selectedScroller == speedZoneRadius && speedZoneRadius.Value < collectorRadius.Value) + { + collectorRadius.Value = speedZoneRadius.Value; + } + } + } + } + + private static void DrawWaypointMarker() + { + var waypointPosition = MousePositionInWorld.GetPosition; + if (SettingsMenu.threeDWaypoints.Checked && PathCreationMenu.collectorWaypoint.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); + } + else if (PathCreationMenu.stopWaypointType.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); + } + else + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + } + } + } +} diff --git a/SceneManager/SceneManager.csproj b/SceneManager/SceneManager.csproj index 3b42a7c..02725e6 100644 --- a/SceneManager/SceneManager.csproj +++ b/SceneManager/SceneManager.csproj @@ -51,6 +51,7 @@ + @@ -66,6 +67,7 @@ + From f0af9b6207435488fb1f088cfc3fd5e58ce70006 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 8 Nov 2020 11:08:40 -0700 Subject: [PATCH 32/74] Fixed a crash when a collected ped is arrested. --- SceneManager/Object Classes/CollectedVehicle.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index cb72bc2..3871598 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -256,7 +256,7 @@ namespace SceneManager { GameFiber.Yield(); } - if (Vehicle && Driver) + if (Driver && Driver.CurrentVehicle) { Game.LogTrivial($"{Vehicle.Model.Name} releasing from stop waypoint."); Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); From 467ca54c39cf6e5c3de12b1de777ee61a7b21711 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 8 Nov 2020 11:15:15 -0700 Subject: [PATCH 33/74] Refactored to implement RNUIMouseInputHandler class. --- SceneManager/Menus/BarrierMenu.cs | 476 ++++++++++++------------- SceneManager/Menus/EditPathMenu.cs | 46 +-- SceneManager/Menus/EditWaypointMenu.cs | 307 +++------------- SceneManager/Menus/MainMenu.cs | 60 ++-- SceneManager/Menus/PathCreationMenu.cs | 287 ++++----------- SceneManager/Menus/PathMainMenu.cs | 170 ++------- SceneManager/Menus/SettingsMenu.cs | 116 ++---- 7 files changed, 431 insertions(+), 1031 deletions(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index 1b3fdcd..4e2d8ff 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; -using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -10,13 +9,18 @@ namespace SceneManager { class BarrierMenu { + private static List trafficLightList = new List() { TrafficLight.Green, TrafficLight.Red, TrafficLight.Yellow, TrafficLight.None }; internal static UIMenu barrierMenu = new UIMenu("Scene Manager", "~o~Barrier Management"); internal static List barriers = new List(); private static UIMenuListScrollerItem barrierList = new UIMenuListScrollerItem("Spawn Barrier", "", Settings.barrierKeys); private static UIMenuNumericScrollerItem rotateBarrier = new UIMenuNumericScrollerItem("Rotate Barrier", "", 0, 350, 10); + private static UIMenuCheckboxItem invincible = new UIMenuCheckboxItem("Indestructible", false); + private static UIMenuNumericScrollerItem barrierTexture = new UIMenuNumericScrollerItem("Change Texture", "", 0, 15, 1); + private static UIMenuCheckboxItem setBarrierLights = new UIMenuCheckboxItem("Enable Barrier Lights", false); + private static UIMenuListScrollerItem setBarrierTrafficLight = new UIMenuListScrollerItem("Set Barrier Traffic Light", "", trafficLightList); private static UIMenuListScrollerItem removeBarrierOptions = new UIMenuListScrollerItem("Remove Barrier", "", new[] { "Last Barrier", "Nearest Barrier", "All Barriers" }); private static UIMenuItem resetBarriers = new UIMenuItem("Reset Barriers", "Reset all spawned barriers to their original position and rotation"); - internal static Rage.Object shadowBarrier; + internal static Object shadowBarrier; internal static void InstantiateMenu() { @@ -24,89 +28,133 @@ namespace SceneManager MenuManager.menuPool.Add(barrierMenu); barrierMenu.OnItemSelect += BarrierMenu_OnItemSelected; - barrierMenu.OnScrollerChange += BarrierMenu_OnScrollerChange; - barrierMenu.OnMenuOpen += BarrierMenu_OnMouseDown; + barrierMenu.OnScrollerChange += BarrierMenu_OnScrollerChanged; + barrierMenu.OnCheckboxChange += BarrierMenu_OnCheckboxChanged; + barrierMenu.OnMenuOpen += BarrierMenu_OnMenuOpen; } internal static void BuildBarrierMenu() { - barrierMenu.AddItem(resetBarriers); - resetBarriers.ForeColor = Color.Gold; - resetBarriers.Enabled = false; + barrierMenu.AddItem(barrierList); + barrierList.ForeColor = Color.Gold; - barrierMenu.AddItem(removeBarrierOptions, 0); + barrierMenu.AddItem(rotateBarrier); + + barrierMenu.AddItem(invincible); + + if (Settings.EnableAdvancedBarricadeOptions) + { + barrierMenu.AddItem(barrierTexture); + barrierTexture.Index = 0; + + barrierMenu.AddItem(setBarrierLights); + + barrierMenu.AddItem(setBarrierTrafficLight); + setBarrierTrafficLight.Index = 3; + } + + barrierMenu.AddItem(removeBarrierOptions); removeBarrierOptions.ForeColor = Color.Gold; removeBarrierOptions.Enabled = false; - barrierMenu.AddItem(rotateBarrier, 0); - - barrierMenu.AddItem(barrierList, 0); - barrierList.ForeColor = Color.Gold; + barrierMenu.AddItem(resetBarriers); + resetBarriers.ForeColor = Color.Gold; + resetBarriers.Enabled = false; } - internal static void CreateShadowBarrier(UIMenu barrierMenu) + internal static void CreateShadowBarrier() { - Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~The shadow cone will disappear if you aim too far away."); - if (shadowBarrier) + { shadowBarrier.Delete(); + } - shadowBarrier = new Object(Settings.barrierValues[barrierList.Index], GetMousePositionInWorld(), rotateBarrier.Value); + shadowBarrier = new Object(Settings.barrierValues[barrierList.Index], MousePositionInWorld.GetPosition, rotateBarrier.Value); if (!shadowBarrier) { barrierMenu.Close(); Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n~w~Something went wrong creating the shadow barrier. Please try again."); return; } + Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); shadowBarrier.IsGravityDisabled = true; shadowBarrier.IsCollisionEnabled = false; shadowBarrier.Opacity = 0.7f; - GameFiber ShadowConeLoopFiber = new GameFiber(() => LoopToDisplayShadowBarrier()); - ShadowConeLoopFiber.Start(); - - void LoopToDisplayShadowBarrier() + // Start with lights off for Parks's objects + if (Settings.EnableAdvancedBarricadeOptions) { - while (barrierMenu.Visible && shadowBarrier) + Rage.Native.NativeFunction.Natives.x971DA0055324D033(shadowBarrier, barrierTexture.Value); + SetBarrierLights(); + } + } + + private static void LoopToDisplayShadowBarrier() + { + while (barrierMenu.Visible) + { + if (barrierList.Selected || rotateBarrier.Selected || invincible.Selected || barrierTexture.Selected || setBarrierLights.Selected || setBarrierTrafficLight.Selected) { - if (barrierList.Selected || rotateBarrier.Selected) + if (shadowBarrier) { - shadowBarrier.IsVisible = true; UpdateShadowBarrierPosition(); } + else if(MousePositionInWorld.GetPositionForBarrier.DistanceTo2D(Game.LocalPlayer.Character.Position) <= Settings.BarrierPlacementDistance) + { + CreateShadowBarrier(); + } + } + else + { + if (shadowBarrier) + { + shadowBarrier.Delete(); + } + } + GameFiber.Yield(); + } + + if (shadowBarrier) + { + shadowBarrier.Delete(); + } + + void UpdateShadowBarrierPosition() + { + DisableBarrierMenuOptionsIfShadowConeTooFar(); + if (shadowBarrier) + { + shadowBarrier.Delete(); + CreateShadowBarrier(); + //shadowBarrier.Heading = rotateBarrier.Value; + //shadowBarrier.Position = MousePositionInWorld.GetPositionForBarrier; + //Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); + //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + } + + void DisableBarrierMenuOptionsIfShadowConeTooFar() + { + if (!shadowBarrier && MousePositionInWorld.GetPositionForBarrier.DistanceTo2D(Game.LocalPlayer.Character.Position) <= Settings.BarrierPlacementDistance) + { + CreateShadowBarrier(); + + } + else if (shadowBarrier && shadowBarrier.Position.DistanceTo2D(Game.LocalPlayer.Character.Position) > Settings.BarrierPlacementDistance) + { + barrierList.Enabled = false; + rotateBarrier.Enabled = false; + shadowBarrier.Delete(); + } + else if (shadowBarrier && shadowBarrier.Position.DistanceTo2D(Game.LocalPlayer.Character.Position) <= Settings.BarrierPlacementDistance && barrierList.SelectedItem == "Flare") + { + barrierList.Enabled = true; + rotateBarrier.Enabled = false; + } else { - shadowBarrier.IsVisible = false; - } - GameFiber.Yield(); - } - - if (shadowBarrier) - shadowBarrier.Delete(); - - void UpdateShadowBarrierPosition() - { - DisableBarrierMenuOptionsIfShadowConeTooFar(); - shadowBarrier.SetPositionWithSnap(GetMousePositionInWorld()); - - void DisableBarrierMenuOptionsIfShadowConeTooFar() - { - if (shadowBarrier.Position.DistanceTo2D(Game.LocalPlayer.Character.Position) > Settings.BarrierPlacementDistance) - { - barrierList.Enabled = false; - rotateBarrier.Enabled = false; - } - else if (shadowBarrier.Position.DistanceTo2D(Game.LocalPlayer.Character.Position) <= Settings.BarrierPlacementDistance && barrierList.SelectedItem == "Flare") - { - barrierList.Enabled = true; - rotateBarrier.Enabled = false; - } - else - { - barrierList.Enabled = true; - rotateBarrier.Enabled = true; - } + barrierList.Enabled = true; + rotateBarrier.Enabled = true; } } } @@ -114,39 +162,79 @@ namespace SceneManager private static void SpawnBarrier() { - var barrier = new Rage.Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); - barrier.SetPositionWithSnap(shadowBarrier.Position); - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(barrier, true); - barrier.IsPositionFrozen = false; - Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true); - - barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading)); - removeBarrierOptions.Enabled = true; - resetBarriers.Enabled = true; - } - - private static void SpawnFlare() - { - var flare = new Weapon("weapon_flare", shadowBarrier.Position, 1); - - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(flare, true); - GameFiber.StartNew(() => + if(barrierList.SelectedItem == "Flare") { - while (flare && flare.HeightAboveGround > 0.05f) + SpawnFlare(); + } + else + { + var barrier = new Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); + barrier.SetPositionWithSnap(shadowBarrier.Position); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(barrier, true); + barrier.IsPositionFrozen = false; + if (invincible.Checked) { - GameFiber.Yield(); + Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true); + if(barrier.Model.Name != "prop_barrier_wat_03a") + { + Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(barrier, true); + } } - GameFiber.Sleep(1000); - if (flare) + if (Settings.EnableAdvancedBarricadeOptions) { - flare.IsPositionFrozen = true; - } - }); + Rage.Native.NativeFunction.Natives.x971DA0055324D033(barrier, barrierTexture.Value); + if (setBarrierLights.Checked) + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(barrier, false); + } + else + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(barrier, true); + } - barriers.Add(new Barrier(flare, flare.Position, flare.Heading)); - removeBarrierOptions.Enabled = true; + Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(barrier, setBarrierTrafficLight.Index); + barrier.IsPositionFrozen = true; + GameFiber.Sleep(50); + if (barrier) + { + barrier.IsPositionFrozen = false; + } + } + barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading)); + removeBarrierOptions.Enabled = true; + resetBarriers.Enabled = true; + } + + void SpawnFlare() + { + var flare = new Weapon("weapon_flare", shadowBarrier.Position, 1); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(flare, true); + GameFiber.Sleep(1); + GameFiber.StartNew(() => + { + while (flare && flare.HeightAboveGround > 0.05f) + { + GameFiber.Yield(); + } + GameFiber.Sleep(1000); + if (flare) + { + flare.IsPositionFrozen = true; + } + }); + + barriers.Add(new Barrier(flare, flare.Position, flare.Heading)); + removeBarrierOptions.Enabled = true; + } } - + + internal static void RotateBarrier() + { + shadowBarrier.Heading = rotateBarrier.Value; + shadowBarrier.Position = MousePositionInWorld.GetPositionForBarrier; + Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); + } + private static void RemoveBarrier() { switch (removeBarrierOptions.Index) @@ -189,6 +277,13 @@ namespace SceneManager Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); newBarrier.IsPositionFrozen = false; Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); + Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(newBarrier, setBarrierTrafficLight.Index); + newBarrier.IsPositionFrozen = true; + GameFiber.Sleep(50); + if (newBarrier) + { + newBarrier.IsPositionFrozen = false; + } barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading)); @@ -201,11 +296,37 @@ namespace SceneManager currentBarriers.Clear(); } - private static void BarrierMenu_OnScrollerChange(UIMenu sender, UIMenuScrollerItem scrollerItem, int oldIndex, int newIndex) + private static void SetBarrierLights() + { + if (setBarrierLights.Checked) + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(shadowBarrier, false); + } + else + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(shadowBarrier, true); + } + + Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + } + + private static void BarrierMenu_OnCheckboxChanged(UIMenu sender, UIMenuCheckboxItem checkbox, bool @checked) + { + if(checkbox == setBarrierLights) + { + SetBarrierLights(); + } + } + + private static void BarrierMenu_OnScrollerChanged(UIMenu sender, UIMenuScrollerItem scrollerItem, int oldIndex, int newIndex) { if (scrollerItem == barrierList) { - CreateShadowBarrier(barrierMenu); + if (shadowBarrier) + { + shadowBarrier.Delete(); + } + barrierTexture.Index = 0; if(barrierList.SelectedItem == "Flare") { @@ -219,9 +340,19 @@ namespace SceneManager barrierMenu.Width = SetMenuWidth(); } + if (scrollerItem == barrierTexture) + { + Rage.Native.NativeFunction.Natives.x971DA0055324D033(shadowBarrier, barrierTexture.Value); + } + + if (scrollerItem == setBarrierTrafficLight) + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + } + if (scrollerItem == rotateBarrier) { - shadowBarrier.Heading = rotateBarrier.Value; + RotateBarrier(); } } @@ -229,17 +360,7 @@ namespace SceneManager { if (selectedItem == barrierList) { - // Attach some invisible object to the cone which the AI try to drive around - // Barrier rotates with cone and becomes invisible similar to ASC when created - if(barrierList.SelectedItem == "Flare") - { - SpawnFlare(); - } - else - { - SpawnBarrier(); - } - + SpawnBarrier(); } if (selectedItem == removeBarrierOptions) @@ -253,166 +374,27 @@ namespace SceneManager } } - private static void BarrierMenu_OnMouseDown(UIMenu menu) + private static void BarrierMenu_OnMenuOpen(UIMenu menu) { - GameFiber.StartNew(() => + var scrollerItems = new List { barrierList, barrierTexture, setBarrierTrafficLight, rotateBarrier, removeBarrierOptions }; + var checkboxItems = new Dictionary() { { invincible, null }, {setBarrierLights, SetBarrierLights} }; + var selectItems = new Dictionary() { - while (menu.Visible) - { - var selectedScroller = menu.MenuItems.Where(x => (x == barrierList || x == rotateBarrier || x == removeBarrierOptions) && x.Selected).FirstOrDefault(); - if (selectedScroller != null) - { - HandleScrollerItemsWithMouseWheel(selectedScroller); - } + { barrierList, SpawnBarrier }, + { removeBarrierOptions, RemoveBarrier }, + { resetBarriers, ResetBarriers }, + }; - // Add waypoint if menu item is selected and user left clicks - if (Game.IsKeyDown(Keys.LButton)) - { - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); + Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~The shadow barrier will disappear if you aim too far away."); + CreateShadowBarrier(); - void OnMenuItemClicked() - { - if (barrierList.Selected) - { - if (barrierList.SelectedItem == "Flare") - { - SpawnFlare(); - } - else - { - SpawnBarrier(); - } - } - else if (removeBarrierOptions.Selected) - { - RemoveBarrier(); - } - else if (resetBarriers.Selected) - { - ResetBarriers(); - } - } + GameFiber ShadowConeLoopFiber = new GameFiber(() => LoopToDisplayShadowBarrier()); + ShadowConeLoopFiber.Start(); - void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) - { - var menuScrollingDisabled = false; - var menuItems = menu.MenuItems.Where(x => x != selectedScroller); - while (Game.IsShiftKeyDownRightNow) - { - menu.ResetKey(Common.MenuControls.Up); - menu.ResetKey(Common.MenuControls.Down); - menuScrollingDisabled = true; - ScrollMenuItem(); - GameFiber.Yield(); - } - - if (menuScrollingDisabled) - { - menuScrollingDisabled = false; - menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); - menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); - menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); - menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); - } - - void ScrollMenuItem() - { - if (Game.GetMouseWheelDelta() > 0) - { - if (selectedScroller == barrierList) - { - barrierList.ScrollToNextOption(); - CreateShadowBarrier(barrierMenu); - - if (barrierList.SelectedItem == "Flare") - { - rotateBarrier.Enabled = false; - } - else - { - rotateBarrier.Enabled = true; - } - - barrierMenu.Width = SetMenuWidth(); - } - else if (selectedScroller == rotateBarrier) - { - rotateBarrier.ScrollToNextOption(); - shadowBarrier.Heading = rotateBarrier.Value; - } - else if (selectedScroller == removeBarrierOptions) - { - removeBarrierOptions.ScrollToNextOption(); - } - } - else if (Game.GetMouseWheelDelta() < 0) - { - if (selectedScroller == barrierList) - { - barrierList.ScrollToPreviousOption(); - CreateShadowBarrier(barrierMenu); - - if (barrierList.SelectedItem == "Flare") - { - rotateBarrier.Enabled = false; - } - else - { - rotateBarrier.Enabled = true; - } - - barrierMenu.Width = SetMenuWidth(); - } - else if (selectedScroller == rotateBarrier) - { - rotateBarrier.ScrollToPreviousOption(); - shadowBarrier.Heading = rotateBarrier.Value; - } - else if(selectedScroller == removeBarrierOptions) - { - removeBarrierOptions.ScrollToPreviousOption(); - } - } - } - } + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } - private static Vector3 GetMousePositionInWorld() - { - HitResult TracePlayerView(float maxTraceDistance = 30f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); - - HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) - { - Vector3 direction = GetPlayerLookingDirection(out start); - end = start + (maxTraceDistance * direction); - return World.TraceLine(start, end, flags); - } - - Vector3 GetPlayerLookingDirection(out Vector3 camPosition) - { - if (Camera.RenderingCamera) - { - camPosition = Camera.RenderingCamera.Position; - return Camera.RenderingCamera.Direction; - } - else - { - float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); - float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); - - camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); - return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); - } - } - - return TracePlayerView(Settings.BarrierPlacementDistance, TraceFlags.IntersectWorld).HitPosition; - } - - private static float SetMenuWidth() + internal static float SetMenuWidth() { float defaultWidth = UIMenu.DefaultWidth; float width = barrierMenu.Width; diff --git a/SceneManager/Menus/EditPathMenu.cs b/SceneManager/Menus/EditPathMenu.cs index dca5a5b..52fb1e2 100644 --- a/SceneManager/Menus/EditPathMenu.cs +++ b/SceneManager/Menus/EditPathMenu.cs @@ -1,4 +1,5 @@ -using System.Drawing; +using System.Collections.Generic; +using System.Drawing; using System.Linq; using System.Windows.Forms; using Rage; @@ -19,7 +20,7 @@ namespace SceneManager MenuManager.menuPool.Add(editPathMenu); editPathMenu.OnItemSelect += EditPath_OnItemSelected; editPathMenu.OnCheckboxChange += EditPath_OnCheckboxChange; - editPathMenu.OnMenuOpen += EditPath_OnMouseDown; + editPathMenu.OnMenuOpen += EditPath_OnMenuOpen; } internal static void BuildEditPathMenu() @@ -84,42 +85,17 @@ namespace SceneManager } } - private static void EditPath_OnMouseDown(UIMenu menu) + private static void EditPath_OnMenuOpen(UIMenu menu) { - GameFiber.StartNew(() => + var scrollerItems = new List { }; + var checkboxItems = new Dictionary() { { disablePath, DisablePath } }; + var selectItems = new Dictionary() { - while (menu.Visible) - { - // Add waypoint if menu item is selected and user left clicks - if (Game.IsKeyDown(Keys.LButton)) - { - OnCheckboxItemClicked(); - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); + { editPathWaypoints, EditPathWaypoints }, + { deletePath, DeletePath } + }; - void OnCheckboxItemClicked() - { - if (disablePath.Selected && disablePath.Enabled) - { - disablePath.Checked = !disablePath.Checked; - DisablePath(); - } - } - - void OnMenuItemClicked() - { - if (editPathWaypoints.Selected) - { - EditPathWaypoints(); - } - else if (deletePath.Selected) - { - DeletePath(); - } - } + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } } } diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index f6d1419..1b3615b 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -1,7 +1,6 @@ -using System; +using System.Collections.Generic; using System.Drawing; using System.Linq; -using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -10,8 +9,6 @@ namespace SceneManager { class EditWaypointMenu { - private static VehicleDrivingFlags[] drivingFlags = new VehicleDrivingFlags[] { VehicleDrivingFlags.Normal, VehicleDrivingFlags.IgnorePathFinding, VehicleDrivingFlags.StopAtDestination }; - private static string[] waypointTypes = new string[] { "Drive To (Normal)", "Drive To (Direct)", "Stop" }; internal static UIMenu editWaypointMenu = new UIMenu("Scene Manager", "~o~Edit Waypoint"); internal static UIMenuItem updateWaypoint = new UIMenuItem("Update Waypoint"); internal static UIMenuItem removeWaypoint = new UIMenuItem("Remove Waypoint"); @@ -33,13 +30,12 @@ namespace SceneManager editWaypointMenu.OnScrollerChange += EditWaypoint_OnScrollerChanged; editWaypointMenu.OnCheckboxChange += EditWaypoint_OnCheckboxChanged; editWaypointMenu.OnItemSelect += EditWaypoint_OnItemSelected; - editWaypointMenu.OnMenuOpen += EditWaypoint_OnMouseDown; + editWaypointMenu.OnMenuOpen += EditWaypoint_OnMenuOpen; } internal static void BuildEditWaypointMenu() { var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Value-1]; - //Logger.Log($"Current path: {currentPath.Number}"); editWaypoint = new UIMenuNumericScrollerItem("Edit Waypoint", "", currentPath.Waypoints.First().Number, currentPath.Waypoints.Last().Number, 1); editWaypointMenu.Clear(); @@ -47,7 +43,6 @@ namespace SceneManager editWaypoint.Index = 0; var currentWaypoint = currentPath.Waypoints.Where(wp => wp.Number == editWaypoint.Value).FirstOrDefault(); - //Logger.Log($"Current waypoint: {currentWaypoint.Number}, Driving flag: {currentWaypoint.DrivingFlag.ToString()}"); if(currentWaypoint != null) { editWaypointMenu.AddItem(collectorWaypoint = new UIMenuCheckboxItem("Collector", currentWaypoint.IsCollector, "If this waypoint will collect vehicles to follow the path")); @@ -89,15 +84,33 @@ namespace SceneManager } } - private static void UpdateWaypoint(Path currentPath, Waypoint currentWaypoint, DrivingFlagType drivingFlag) + private static void UpdateCollectorMenuOptionsStatus() { - if (currentPath.Waypoints.Count == 1) + if (collectorWaypoint.Checked) { - currentWaypoint.UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + changeCollectorRadius.Enabled = true; + changeSpeedZoneRadius.Enabled = true; } else { - currentWaypoint.UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), collectorWaypoint.Checked, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + changeCollectorRadius.Enabled = false; + changeSpeedZoneRadius.Enabled = false; + } + } + + private static void UpdateWaypoint() + { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + var currentWaypoint = currentPath.Waypoints[editWaypoint.Index]; + DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; + + if (currentPath.Waypoints.Count == 1) + { + currentWaypoint.UpdateWaypoint(currentWaypoint, MousePositionInWorld.GetPosition, drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + } + else + { + currentWaypoint.UpdateWaypoint(currentWaypoint, MousePositionInWorld.GetPosition, drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), collectorWaypoint.Checked, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); } Game.LogTrivial($"Path {currentPath.Number} Waypoint {currentWaypoint.Number} updated [Driving style: {drivingFlag} | Stop waypoint: {stopWaypointType.Checked} | Speed: {changeWaypointSpeed.Value} | Collector: {currentWaypoint.IsCollector}]"); @@ -106,8 +119,12 @@ namespace SceneManager Game.DisplayNotification($"~o~Scene Manager ~g~[Success]~w~\nWaypoint {currentWaypoint.Number} updated."); } - private static void RemoveWaypoint(Path currentPath, Waypoint currentWaypoint, DrivingFlagType drivingFlag) + private static void RemoveWaypoint() { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + var currentWaypoint = currentPath.Waypoints[editWaypoint.Index]; + DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; + if (currentPath.Waypoints.Count == 1) { Game.LogTrivial($"Deleting the last waypoint from the path."); @@ -134,7 +151,7 @@ namespace SceneManager { Hints.Display($"~o~Scene Manager ~y~[Hint]~w~\nYour path's first waypoint ~b~must~w~ be a collector. If it's not, it will automatically be made into one."); Game.LogTrivial($"The path only has 1 waypoint left, this waypoint must be a collector."); - currentPath.Waypoints[0].UpdateWaypoint(currentWaypoint, GetMousePositionInWorld(), drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); + currentPath.Waypoints[0].UpdateWaypoint(currentWaypoint, MousePositionInWorld.GetPosition, drivingFlag, stopWaypointType.Checked, SetDriveSpeedForWaypoint(), true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value, updateWaypointPosition.Checked); collectorWaypoint.Checked = true; changeCollectorRadius.Enabled = true; changeSpeedZoneRadius.Enabled = true; @@ -142,8 +159,11 @@ namespace SceneManager } } - private static void AddAsNewWaypoint(Path currentPath, DrivingFlagType drivingFlag) + private static void AddAsNewWaypoint() { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; + DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; + var pathIndex = PathMainMenu.paths.IndexOf(currentPath); var newWaypointBlip = CreateNewWaypointBlip(); if (!currentPath.IsEnabled) @@ -153,11 +173,11 @@ namespace SceneManager if (collectorWaypoint.Checked) { - currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, GetMousePositionInWorld(), SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip, true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value)); + currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, MousePositionInWorld.GetPosition, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip, true, changeCollectorRadius.Value, changeSpeedZoneRadius.Value)); } else { - currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, GetMousePositionInWorld(), SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip)); + currentPath.Waypoints.Add(new Waypoint(currentPath, currentPath.Waypoints.Last().Number + 1, MousePositionInWorld.GetPosition, SetDriveSpeedForWaypoint(), drivingFlag, stopWaypointType.Checked, newWaypointBlip)); } editWaypointMenu.RemoveItemAt(0); @@ -171,7 +191,7 @@ namespace SceneManager Blip CreateNewWaypointBlip() { var spriteNumericalEnum = pathIndex + 17; // 17 because the numerical value of these sprites are always 17 more than the path index - var blip = new Blip(GetMousePositionInWorld()) + var blip = new Blip(MousePositionInWorld.GetPosition) { Scale = 0.5f, Sprite = (BlipSprite)spriteNumericalEnum @@ -254,251 +274,38 @@ namespace SceneManager if (selectedItem == updateWaypoint) { - UpdateWaypoint(currentPath, currentWaypoint, drivingFlag); + UpdateWaypoint(); } if (selectedItem == addAsNewWaypoint) { - AddAsNewWaypoint(currentPath, drivingFlag); + AddAsNewWaypoint(); } if (selectedItem == removeWaypoint) { - RemoveWaypoint(currentPath, currentWaypoint, drivingFlag); + RemoveWaypoint(); } } - private static void EditWaypoint_OnMouseDown(UIMenu menu) + private static void EditWaypoint_OnMenuOpen(UIMenu menu) { - GameFiber.StartNew(() => + var scrollerItems = new List { editWaypoint, changeWaypointSpeed, changeCollectorRadius, changeSpeedZoneRadius }; + var checkboxItems = new Dictionary() + { + { collectorWaypoint, UpdateCollectorMenuOptionsStatus }, + { stopWaypointType, null }, + { directWaypointBehavior, null }, + { updateWaypointPosition, null } + }; + var selectItems = new Dictionary() { - while (menu.Visible) - { - var selectedScroller = menu.MenuItems.Where(x => (x == editWaypoint || x == changeWaypointSpeed || x == changeCollectorRadius || x == changeSpeedZoneRadius) && x.Selected).FirstOrDefault(); - if (selectedScroller != null) - { - HandleScrollerItemsWithMouseWheel(selectedScroller); - } + { updateWaypoint, UpdateWaypoint }, + { removeWaypoint, RemoveWaypoint }, + { addAsNewWaypoint, AddAsNewWaypoint } + }; - if (Game.IsKeyDown(Keys.LButton)) - { - OnCheckboxItemClicked(); - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); - - void OnCheckboxItemClicked() - { - if (collectorWaypoint.Selected && collectorWaypoint.Enabled) - { - collectorWaypoint.Checked = !collectorWaypoint.Checked; - if (collectorWaypoint.Checked) - { - changeCollectorRadius.Enabled = true; - changeSpeedZoneRadius.Enabled = true; - } - else - { - changeCollectorRadius.Enabled = false; - changeSpeedZoneRadius.Enabled = false; - } - } - else if (stopWaypointType.Selected) - { - stopWaypointType.Checked = !stopWaypointType.Checked; - } - else if (directWaypointBehavior.Selected) - { - directWaypointBehavior.Checked = !directWaypointBehavior.Checked; - } - else if (updateWaypointPosition.Selected) - { - updateWaypointPosition.Checked = !updateWaypointPosition.Checked; - if (updateWaypointPosition.Checked) - { - DrawWaypointMarker(GetMousePositionInWorld()); - } - - } - } - - void OnMenuItemClicked() - { - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - var currentWaypoint = currentPath.Waypoints[editWaypoint.Index]; - DrivingFlagType drivingFlag = directWaypointBehavior.Checked ? DrivingFlagType.Direct : DrivingFlagType.Normal; - - if (updateWaypoint.Selected) - { - UpdateWaypoint(currentPath, currentWaypoint, drivingFlag); - } - else if (removeWaypoint.Selected) - { - RemoveWaypoint(currentPath, currentWaypoint, drivingFlag); - } - else if (addAsNewWaypoint.Selected) - { - AddAsNewWaypoint(currentPath, drivingFlag); - } - } - - void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) - { - var menuScrollingDisabled = false; - var menuItems = menu.MenuItems.Where(x => x != selectedScroller); - while (Game.IsShiftKeyDownRightNow) - { - menu.ResetKey(Common.MenuControls.Up); - menu.ResetKey(Common.MenuControls.Down); - menuScrollingDisabled = true; - ScrollMenuItem(); - CompareScrollerValues(); - GameFiber.Yield(); - } - - if (menuScrollingDisabled) - { - menuScrollingDisabled = false; - menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); - menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); - menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); - menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); - } - - void ScrollMenuItem() - { - if (Game.GetMouseWheelDelta() > 0) - { - if (selectedScroller == changeCollectorRadius) - { - changeCollectorRadius.ScrollToNextOption(); - } - else if (selectedScroller == changeSpeedZoneRadius) - { - changeSpeedZoneRadius.ScrollToNextOption(); - } - else if (selectedScroller == changeWaypointSpeed) - { - changeWaypointSpeed.ScrollToNextOption(); - } - else if(selectedScroller == editWaypoint) - { - editWaypoint.ScrollToNextOption(); - - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - var currentWaypoint = currentPath.Waypoints[editWaypoint.Value - 1]; - changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); - stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; - directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; - collectorWaypoint.Checked = currentWaypoint.IsCollector; - changeCollectorRadius.Enabled = collectorWaypoint.Checked ? true : false; - changeCollectorRadius.Value = (int)currentWaypoint.CollectorRadius; - changeSpeedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; - changeSpeedZoneRadius.Value = (int)currentWaypoint.SpeedZoneRadius; - updateWaypointPosition.Checked = false; - } - } - else if (Game.GetMouseWheelDelta() < 0) - { - if (selectedScroller == changeCollectorRadius) - { - changeCollectorRadius.ScrollToPreviousOption(); - } - else if (selectedScroller == changeSpeedZoneRadius) - { - changeSpeedZoneRadius.ScrollToPreviousOption(); - } - else if (selectedScroller == changeWaypointSpeed) - { - changeWaypointSpeed.ScrollToPreviousOption(); - } - else if (selectedScroller == editWaypoint) - { - editWaypoint.ScrollToPreviousOption(); - - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - var currentWaypoint = currentPath.Waypoints[editWaypoint.Value - 1]; - changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); - stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; - directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; - collectorWaypoint.Checked = currentWaypoint.IsCollector; - changeCollectorRadius.Enabled = collectorWaypoint.Checked ? true : false; - changeCollectorRadius.Value = (int)currentWaypoint.CollectorRadius; - changeSpeedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; - changeSpeedZoneRadius.Value = (int)currentWaypoint.SpeedZoneRadius; - updateWaypointPosition.Checked = false; - } - } - } - - void CompareScrollerValues() - { - if (selectedScroller == changeCollectorRadius && changeCollectorRadius.Value > changeSpeedZoneRadius.Value) - { - while (changeCollectorRadius.Value > changeSpeedZoneRadius.Value) - { - changeSpeedZoneRadius.ScrollToNextOption(); - } - } - if (selectedScroller == changeSpeedZoneRadius && changeSpeedZoneRadius.Value < changeCollectorRadius.Value) - { - changeCollectorRadius.Value = changeSpeedZoneRadius.Value; - } - } - } - } - - private static void DrawWaypointMarker(Vector3 waypointPosition) - { - if (SettingsMenu.threeDWaypoints.Checked) - { - if (collectorWaypoint.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); - } - else if (stopWaypointType.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); - } - else - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); - } - } - } - - private static Vector3 GetMousePositionInWorld() - { - HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); - - HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) - { - Vector3 direction = GetPlayerLookingDirection(out start); - end = start + (maxTraceDistance * direction); - return World.TraceLine(start, end, flags); - } - - Vector3 GetPlayerLookingDirection(out Vector3 camPosition) - { - if (Camera.RenderingCamera) - { - camPosition = Camera.RenderingCamera.Position; - return Camera.RenderingCamera.Direction; - } - else - { - float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); - float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); - - camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); - return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); - } - } - - return TracePlayerView(100f, TraceFlags.IntersectWorld).HitPosition; + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } private static float SetDriveSpeedForWaypoint() @@ -506,15 +313,11 @@ namespace SceneManager float convertedSpeed; if (SettingsMenu.speedUnits.SelectedItem == SpeedUnits.MPH) { - //Logger.Log($"Original speed: {waypointSpeeds[waypointSpeed.Index]}{SettingsMenu.speedUnits.SelectedItem}"); convertedSpeed = MathHelper.ConvertMilesPerHourToMetersPerSecond(changeWaypointSpeed.Value); - //Logger.Log($"Converted speed: {convertedSpeed}m/s"); } else { - //Logger.Log($"Original speed: {waypointSpeeds[waypointSpeed.Index]}{SettingsMenu.speedUnits.SelectedItem}"); convertedSpeed = MathHelper.ConvertKilometersPerHourToMetersPerSecond(changeWaypointSpeed.Value); - //Logger.Log($"Converted speed: {convertedSpeed}m/s"); } return convertedSpeed; diff --git a/SceneManager/Menus/MainMenu.cs b/SceneManager/Menus/MainMenu.cs index fe80425..a0b0841 100644 --- a/SceneManager/Menus/MainMenu.cs +++ b/SceneManager/Menus/MainMenu.cs @@ -1,6 +1,7 @@ using Rage; using RAGENativeUI; using RAGENativeUI.Elements; +using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; @@ -18,7 +19,7 @@ namespace SceneManager MenuManager.menuPool.Add(mainMenu); } - public static void BuildMainMenu() + internal static void BuildMainMenu() { mainMenu.AddItem(navigateToPathMenu = new UIMenuItem("Path Menu")); navigateToPathMenu.ForeColor = Color.Gold; @@ -31,49 +32,36 @@ namespace SceneManager mainMenu.BindMenuToItem(SettingsMenu.settingsMenu, navigateToSettingsMenu); mainMenu.RefreshIndex(); - mainMenu.OnItemSelect += MainMenu_OnItemSelected; - mainMenu.OnMenuOpen += MainMenu_OnMouseDown; + mainMenu.OnMenuOpen += MainMenu_OnMenuOpen; } - private static void MainMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) + private static void ShowPathMainMenu() { - if (selectedItem == navigateToBarrierMenu) - { - BarrierMenu.CreateShadowBarrier(BarrierMenu.barrierMenu); - } + PathMainMenu.pathMainMenu.Visible = true; } - private static void MainMenu_OnMouseDown(UIMenu menu) + private static void ShowBarrierMenu() { - GameFiber.StartNew(() => - { - while (menu.Visible) - { - if (Game.IsKeyDown(Keys.LButton)) - { - menu.Visible = false; - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); + BarrierMenu.barrierMenu.Visible = true; + } - void OnMenuItemClicked() + private static void ShowSettingsMenu() + { + SettingsMenu.settingsMenu.Visible = true; + } + + private static void MainMenu_OnMenuOpen(UIMenu menu) + { + var scrollerItems = new List { }; + var checkboxItems = new Dictionary() { }; + var selectItems = new Dictionary() { - if (navigateToPathMenu.Selected) - { - PathMainMenu.pathMainMenu.Visible = true; - } - else if (navigateToBarrierMenu.Selected) - { - BarrierMenu.barrierMenu.Visible = true; - BarrierMenu.CreateShadowBarrier(BarrierMenu.barrierMenu); - } - else if (navigateToSettingsMenu.Selected) - { - SettingsMenu.settingsMenu.Visible = true; - } - } + { navigateToPathMenu, ShowPathMainMenu }, + { navigateToBarrierMenu, ShowBarrierMenu }, + { navigateToSettingsMenu, ShowSettingsMenu } + }; + + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } } } diff --git a/SceneManager/Menus/PathCreationMenu.cs b/SceneManager/Menus/PathCreationMenu.cs index 15e5dae..285f73f 100644 --- a/SceneManager/Menus/PathCreationMenu.cs +++ b/SceneManager/Menus/PathCreationMenu.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Net.Configuration; using System.Windows.Forms; using Rage; using RAGENativeUI; @@ -28,7 +29,7 @@ namespace SceneManager pathCreationMenu.OnItemSelect += PathCreation_OnItemSelected; pathCreationMenu.OnCheckboxChange += PathCreation_OnCheckboxChanged; pathCreationMenu.OnScrollerChange += PathCreation_OnScrollerChanged; - pathCreationMenu.OnMenuOpen += PathCreation_OnMouseDown; + pathCreationMenu.OnMenuOpen += PathCreation_OnMenuOpen; } internal static void BuildPathCreationMenu() @@ -67,200 +68,24 @@ namespace SceneManager pathCreationMenu.RefreshIndex(); } - private static void PathCreation_OnCheckboxChanged(UIMenu sender, UIMenuCheckboxItem checkboxItem, bool @checked) + private static void UpdateCollectorMenuOptionsStatus() { - if(checkboxItem == collectorWaypoint) + if (collectorWaypoint.Checked) { - collectorRadius.Enabled = collectorWaypoint.Checked ? true : false; - speedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; + collectorRadius.Enabled = true; + speedZoneRadius.Enabled = true; + } + else + { + collectorRadius.Enabled = false; + speedZoneRadius.Enabled = false; } } - private static void PathCreation_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) - { - if (selectedItem == trafficAddWaypoint) - { - AddNewWaypoint(GetMousePositionInWorld()); - } - - if (selectedItem == trafficRemoveWaypoint) - { - RemoveWaypoint(); - } - - if (selectedItem == trafficEndPath) - { - EndPath(); - } - } - - private static void PathCreation_OnScrollerChanged(UIMenu sender, UIMenuScrollerItem scrollerItem, int first, int last) - { - if (scrollerItem == collectorRadius) - { - if (collectorRadius.Value > speedZoneRadius.Value) - { - while (collectorRadius.Value > speedZoneRadius.Value) - { - speedZoneRadius.ScrollToNextOption(); - } - } - } - - if (scrollerItem == speedZoneRadius) - { - if (speedZoneRadius.Value < collectorRadius.Value) - { - collectorRadius.Value = speedZoneRadius.Value; - } - } - } - - private static void PathCreation_OnMouseDown(UIMenu menu) - { - GameFiber.StartNew(() => - { - while (menu.Visible) - { - var selectedScroller = menu.MenuItems.Where(x => (x == collectorRadius || x == speedZoneRadius || x == waypointSpeed) && x.Selected).FirstOrDefault(); - if (selectedScroller != null) - { - HandleScrollerItemsWithMouseWheel(selectedScroller); - } - - // Draw marker at mouse position - DrawWaypointMarker(GetMousePositionInWorld()); - - // Add waypoint if menu item is selected and user left clicks - if (Game.IsKeyDown(Keys.LButton)) - { - OnCheckboxItemClicked(); - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); - - void OnCheckboxItemClicked() - { - if (collectorWaypoint.Selected && collectorWaypoint.Enabled) - { - collectorWaypoint.Checked = !collectorWaypoint.Checked; - if (collectorWaypoint.Checked) - { - collectorRadius.Enabled = true; - speedZoneRadius.Enabled = true; - } - else - { - collectorRadius.Enabled = false; - speedZoneRadius.Enabled = false; - } - } - else if (stopWaypointType.Selected) - { - stopWaypointType.Checked = !stopWaypointType.Checked; - } - else if (directWaypointBehavior.Selected) - { - directWaypointBehavior.Checked = !directWaypointBehavior.Checked; - } - } - - void OnMenuItemClicked() - { - if (trafficAddWaypoint.Selected) - { - AddNewWaypoint(GetMousePositionInWorld()); - } - else if (trafficRemoveWaypoint.Selected) - { - RemoveWaypoint(); - } - else if (trafficEndPath.Selected) - { - EndPath(); - } - } - - void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) - { - var menuScrollingDisabled = false; - var menuItems = menu.MenuItems.Where(x => x != selectedScroller); - while (Game.IsShiftKeyDownRightNow) - { - menu.ResetKey(Common.MenuControls.Up); - menu.ResetKey(Common.MenuControls.Down); - menuScrollingDisabled = true; - ScrollMenuItem(); - CompareScrollerValues(); - DrawWaypointMarker(GetMousePositionInWorld()); - GameFiber.Yield(); - } - - if (menuScrollingDisabled) - { - menuScrollingDisabled = false; - menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); - menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); - menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); - menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); - } - - void ScrollMenuItem() - { - if (Game.GetMouseWheelDelta() > 0) - { - if (selectedScroller == collectorRadius) - { - collectorRadius.ScrollToNextOption(); - } - else if (selectedScroller == speedZoneRadius) - { - speedZoneRadius.ScrollToNextOption(); - } - else if (selectedScroller == waypointSpeed) - { - waypointSpeed.ScrollToNextOption(); - } - } - else if (Game.GetMouseWheelDelta() < 0) - { - if (selectedScroller == collectorRadius) - { - collectorRadius.ScrollToPreviousOption(); - } - else if (selectedScroller == speedZoneRadius) - { - speedZoneRadius.ScrollToPreviousOption(); - } - else if (selectedScroller == waypointSpeed) - { - waypointSpeed.ScrollToPreviousOption(); - } - } - } - - void CompareScrollerValues() - { - if (selectedScroller == collectorRadius && collectorRadius.Value > speedZoneRadius.Value) - { - while (collectorRadius.Value > speedZoneRadius.Value) - { - speedZoneRadius.ScrollToNextOption(); - } - } - if (selectedScroller == speedZoneRadius && speedZoneRadius.Value < collectorRadius.Value) - { - collectorRadius.Value = speedZoneRadius.Value; - } - } - } - } - - private static void AddNewWaypoint(Vector3 waypointPosition) + private static void AddNewWaypoint() { var anyPathsExist = PathMainMenu.paths.Count > 0; + var waypointPosition = MousePositionInWorld.GetPosition; if (!anyPathsExist) { @@ -426,7 +251,7 @@ namespace SceneManager } } - internal static void AddNewPathToPathsCollection(List paths, int pathIndex) + private static void AddNewPathToPathsCollection(List paths, int pathIndex) { var pathNum = pathIndex + 1; Game.LogTrivial($"Creating path {pathNum}"); @@ -436,52 +261,72 @@ namespace SceneManager trafficEndPath.Enabled = false; } - private static void DrawWaypointMarker(Vector3 waypointPosition) + private static void PathCreation_OnCheckboxChanged(UIMenu sender, UIMenuCheckboxItem checkboxItem, bool @checked) { - if (SettingsMenu.threeDWaypoints.Checked && collectorWaypoint.Checked) + if(checkboxItem == collectorWaypoint) { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); - } - else if (stopWaypointType.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); - } - else - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + collectorRadius.Enabled = collectorWaypoint.Checked ? true : false; + speedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; } } - private static Vector3 GetMousePositionInWorld() + private static void PathCreation_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) { - HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); - - HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + if (selectedItem == trafficAddWaypoint) { - Vector3 direction = GetPlayerLookingDirection(out start); - end = start + (maxTraceDistance * direction); - return World.TraceLine(start, end, flags); + AddNewWaypoint(); } - Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + if (selectedItem == trafficRemoveWaypoint) { - if (Camera.RenderingCamera) - { - camPosition = Camera.RenderingCamera.Position; - return Camera.RenderingCamera.Direction; - } - else - { - float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); - float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + RemoveWaypoint(); + } - camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); - return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + if (selectedItem == trafficEndPath) + { + EndPath(); + } + } + + private static void PathCreation_OnScrollerChanged(UIMenu sender, UIMenuScrollerItem scrollerItem, int first, int last) + { + if (scrollerItem == collectorRadius) + { + if (collectorRadius.Value > speedZoneRadius.Value) + { + while (collectorRadius.Value > speedZoneRadius.Value) + { + speedZoneRadius.ScrollToNextOption(); + } } } - return TracePlayerView(100f, TraceFlags.IntersectWorld).HitPosition; + if (scrollerItem == speedZoneRadius) + { + if (speedZoneRadius.Value < collectorRadius.Value) + { + collectorRadius.Value = speedZoneRadius.Value; + } + } + } + + private static void PathCreation_OnMenuOpen(UIMenu menu) + { + var scrollerItems = new List { collectorRadius, speedZoneRadius, waypointSpeed }; + var checkboxItems = new Dictionary() + { + { collectorWaypoint, UpdateCollectorMenuOptionsStatus}, + { stopWaypointType, null}, + { directWaypointBehavior, null} + }; + var selectItems = new Dictionary() + { + { trafficAddWaypoint, AddNewWaypoint }, + { trafficRemoveWaypoint, RemoveWaypoint }, + { trafficEndPath, EndPath } + }; + + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } } } diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index 8c2f25e..7fb2c35 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -38,7 +38,7 @@ namespace SceneManager MenuManager.menuPool.Add(pathMainMenu); pathMainMenu.OnItemSelect += PathMenu_OnItemSelected; pathMainMenu.OnCheckboxChange += PathMenu_OnCheckboxChange; - pathMainMenu.OnMenuOpen += PathMenu_OnMouseDown; + pathMainMenu.OnMenuOpen += PathMenu_OnMenuOpen; } internal static void BuildPathMenu() @@ -90,6 +90,12 @@ namespace SceneManager } } + private static void GoToEditPathMenu() + { + pathMainMenu.Visible = false; + EditPathMenu.editPathMenu.Visible = true; + } + private static void GoToPathCreationMenu() { if (createNewPath.Text.Contains("Continue")) @@ -103,7 +109,6 @@ namespace SceneManager PathCreationMenu.BuildPathCreationMenu(); pathMainMenu.Visible = false; PathCreationMenu.pathCreationMenu.Visible = true; - //Draw3DWaypointOnPlayer(); // For each element in paths, determine if the element exists but is not finished yet, or if it doesn't exist, create it. for (int i = 0; i <= paths.Count; i++) @@ -413,157 +418,24 @@ namespace SceneManager } } - private static void PathMenu_OnMouseDown(UIMenu menu) + private static void PathMenu_OnMenuOpen(UIMenu menu) { - GameFiber.StartNew(() => + var scrollerItems = new List { directOptions, directDriver, dismissDriver, editPath }; + var checkboxItems = new Dictionary() { - while (menu.Visible) - { - var selectedScroller = menu.MenuItems.Where(x => (x == directOptions || x == directDriver || x == dismissDriver || x == editPath) && x.Selected).FirstOrDefault(); - if (selectedScroller != null) - { - HandleScrollerItemsWithMouseWheel(selectedScroller); - } - - // Add waypoint if menu item is selected and user left clicks - if (Game.IsKeyDown(Keys.LButton)) - { - OnCheckboxItemClicked(); - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); - - void OnCheckboxItemClicked() + { disableAllPaths, DisableAllPaths } + }; + + var selectItems = new Dictionary() { - if (disableAllPaths.Selected && disableAllPaths.Enabled) - { - disableAllPaths.Checked = !disableAllPaths.Checked; - DisableAllPaths(); - } - } + { createNewPath, GoToPathCreationMenu }, + { editPath, GoToEditPathMenu }, + { deleteAllPaths, DeleteAllPaths }, + { directDriver, DirectDriver }, + { dismissDriver, DismissDriver } + }; - void OnMenuItemClicked() - { - if (createNewPath.Selected) - { - GoToPathCreationMenu(); - } - else if (editPath.Selected) - { - menu.Visible = false; - EditPathMenu.editPathMenu.Visible = true; - } - else if (deleteAllPaths.Selected) - { - DeleteAllPaths(); - } - else if (directDriver.Selected) - { - DirectDriver(); - } - else if (dismissDriver.Selected) - { - DismissDriver(); - } - } - - void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) - { - var menuScrollingDisabled = false; - var menuItems = menu.MenuItems.Where(x => x != selectedScroller); - while (Game.IsShiftKeyDownRightNow) - { - menu.ResetKey(Common.MenuControls.Up); - menu.ResetKey(Common.MenuControls.Down); - menuScrollingDisabled = true; - ScrollMenuItem(); - GameFiber.Yield(); - } - - if (menuScrollingDisabled) - { - menuScrollingDisabled = false; - menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); - menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); - menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); - menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); - } - - void ScrollMenuItem() - { - if (Game.GetMouseWheelDelta() > 0) - { - if (selectedScroller == editPath) - { - editPath.ScrollToNextOption(); - } - else if (selectedScroller == directOptions) - { - directOptions.ScrollToNextOption(); - } - else if (selectedScroller == directDriver) - { - directDriver.ScrollToNextOption(); - } - else if (selectedScroller == dismissDriver) - { - dismissDriver.ScrollToNextOption(); - } - } - else if (Game.GetMouseWheelDelta() < 0) - { - if (selectedScroller == editPath) - { - editPath.ScrollToPreviousOption(); - } - else if (selectedScroller == directOptions) - { - directOptions.ScrollToPreviousOption(); - } - else if (selectedScroller == directDriver) - { - directDriver.ScrollToPreviousOption(); - } - else if (selectedScroller == dismissDriver) - { - dismissDriver.ScrollToPreviousOption(); - } - } - } - } + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } - - //private static void Draw3DWaypointOnPlayer() - //{ - // GameFiber.StartNew(() => - // { - // while (SettingsMenu.threeDWaypoints.Checked) - // { - // if (PathCreationMenu.pathCreationMenu.Visible) - // { - // if (PathCreationMenu.collectorWaypoint.Checked) - // { - // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); - // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); - // } - // else if (PathCreationMenu.stopWaypointType.Checked) - // { - // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); - // } - // else - // { - // Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, Game.LocalPlayer.Character.Position.X, Game.LocalPlayer.Character.Position.Y, Game.LocalPlayer.Character.Position.Z - 1, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); - // } - // } - // else - // { - // break; - // } - // GameFiber.Yield(); - // } - // }); - //} } } diff --git a/SceneManager/Menus/SettingsMenu.cs b/SceneManager/Menus/SettingsMenu.cs index 24e89cd..a1012ce 100644 --- a/SceneManager/Menus/SettingsMenu.cs +++ b/SceneManager/Menus/SettingsMenu.cs @@ -2,6 +2,7 @@ using RAGENativeUI; using RAGENativeUI.Elements; using System; +using System.Collections.Generic; using System.Linq; using System.Windows.Forms; @@ -24,7 +25,7 @@ namespace SceneManager settingsMenu.OnCheckboxChange += SettingsMenu_OnCheckboxChange; settingsMenu.OnScrollerChange += SettingsMenu_OnScrollerChange; settingsMenu.OnItemSelect += SettingsMenu_OnItemSelected; - settingsMenu.OnMenuOpen += SettingsMenu_OnMouseDown; + settingsMenu.OnMenuOpen += SettingsMenu_OnMenuOpen; } internal static void BuildSettingsMenu() @@ -38,7 +39,7 @@ namespace SceneManager saveSettings.ForeColor = System.Drawing.Color.Gold; } - internal static void ToggleMapBlips() + private static void ToggleMapBlips() { if (mapBlips.Checked) { @@ -62,6 +63,17 @@ namespace SceneManager } } + private static void ToggleHints() + { + Hints.Enabled = hints.Checked ? true : false; + } + + private static void ToggleSettings() + { + Settings.UpdateSettings(threeDWaypoints.Checked, mapBlips.Checked, hints.Checked, speedUnits.SelectedItem); + Game.DisplayHelp($"Scene Manager settings saved"); + } + private static void SettingsMenu_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) { if(selectedItem == saveSettings) @@ -94,99 +106,21 @@ namespace SceneManager } } - private static void SettingsMenu_OnMouseDown(UIMenu menu) + private static void SettingsMenu_OnMenuOpen(UIMenu menu) { - GameFiber.StartNew(() => + var scrollerItems = new List { speedUnits }; + var checkboxItems = new Dictionary() { - while (menu.Visible) - { - var selectedScroller = menu.MenuItems.Where(x => x == speedUnits && x.Selected).FirstOrDefault(); - if (selectedScroller != null) - { - HandleScrollerItemsWithMouseWheel(selectedScroller); - } - - // Add waypoint if menu item is selected and user left clicks - if (Game.IsKeyDown(Keys.LButton)) - { - OnCheckboxItemClicked(); - OnMenuItemClicked(); - } - GameFiber.Yield(); - } - }); - - void OnCheckboxItemClicked() + { threeDWaypoints, null}, + { mapBlips, ToggleMapBlips}, + { hints, ToggleHints} + }; + var selectItems = new Dictionary() { - if (threeDWaypoints.Selected && threeDWaypoints.Enabled) - { - threeDWaypoints.Checked = !threeDWaypoints.Checked; - } - else if (mapBlips.Selected) - { - mapBlips.Checked = !mapBlips.Checked; - ToggleMapBlips(); - } - else if (hints.Selected) - { - hints.Checked = !hints.Checked; - Hints.Enabled = hints.Checked ? true : false; - } - } + { saveSettings, ToggleSettings } + }; - void OnMenuItemClicked() - { - if (saveSettings.Selected) - { - Settings.UpdateSettings(threeDWaypoints.Checked, mapBlips.Checked, hints.Checked, speedUnits.SelectedItem); - Game.DisplayHelp($"Scene Manager settings saved"); - } - } - - void HandleScrollerItemsWithMouseWheel(UIMenuItem selectedScroller) - { - var menuScrollingDisabled = false; - var menuItems = menu.MenuItems.Where(x => x != selectedScroller); - while (Game.IsShiftKeyDownRightNow) - { - menu.ResetKey(Common.MenuControls.Up); - menu.ResetKey(Common.MenuControls.Down); - menuScrollingDisabled = true; - ScrollMenuItem(); - GameFiber.Yield(); - } - - if (menuScrollingDisabled) - { - menuScrollingDisabled = false; - menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); - menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); - menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); - menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); - } - - void ScrollMenuItem() - { - if (Game.GetMouseWheelDelta() > 0) - { - if (selectedScroller == speedUnits) - { - speedUnits.ScrollToNextOption(); - PathCreationMenu.pathCreationMenu.Clear(); - PathCreationMenu.BuildPathCreationMenu(); - } - } - else if (Game.GetMouseWheelDelta() < 0) - { - if (selectedScroller == speedUnits) - { - speedUnits.ScrollToPreviousOption(); - PathCreationMenu.pathCreationMenu.Clear(); - PathCreationMenu.BuildPathCreationMenu(); - } - } - } - } + RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); } } } \ No newline at end of file From 47358f784145b87226c2d15ca757e2fe2d859bb0 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 8 Nov 2020 11:15:30 -0700 Subject: [PATCH 34/74] Removed unused method. --- SceneManager/Menus/MenuManager.cs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/SceneManager/Menus/MenuManager.cs b/SceneManager/Menus/MenuManager.cs index db825c6..4bbe856 100644 --- a/SceneManager/Menus/MenuManager.cs +++ b/SceneManager/Menus/MenuManager.cs @@ -37,16 +37,5 @@ namespace SceneManager EditPathMenu.BuildEditPathMenu(); BarrierMenu.BuildBarrierMenu(); } - - private static void AddMenusToMenuPool() - { - menuPool.Add(MainMenu.mainMenu); - menuPool.Add(SettingsMenu.settingsMenu); - menuPool.Add(PathMainMenu.pathMainMenu); - menuPool.Add(BarrierMenu.barrierMenu); - menuPool.Add(PathCreationMenu.pathCreationMenu); - menuPool.Add(EditPathMenu.editPathMenu); - menuPool.Add(EditWaypointMenu.editWaypointMenu); - } } } From c05c1f6ddb534c09cea9286b1f258ba32ee47dc3 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Wed, 11 Nov 2020 05:32:40 -0700 Subject: [PATCH 35/74] Updated version --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index d184f1b..08c897d 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.0.1.10")] -[assembly: AssemblyFileVersion("2.0.1.10")] +[assembly: AssemblyVersion("2.1.0.0")] +[assembly: AssemblyFileVersion("2.1.0.0")] From 4c0ca772e87ea74152c3a343d376847bc87c839a Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 12 Nov 2020 19:19:19 -0700 Subject: [PATCH 36/74] Disabled deletion/creation of shadow barrier and re-enabled updating position based on mouse position. --- SceneManager/Menus/BarrierMenu.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index 4e2d8ff..185abd5 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -125,12 +125,13 @@ namespace SceneManager DisableBarrierMenuOptionsIfShadowConeTooFar(); if (shadowBarrier) { - shadowBarrier.Delete(); - CreateShadowBarrier(); - //shadowBarrier.Heading = rotateBarrier.Value; - //shadowBarrier.Position = MousePositionInWorld.GetPositionForBarrier; - //Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); - //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + // Delete and re-create for testing purposes.. Parks' stop light prop + //shadowBarrier.Delete(); + //CreateShadowBarrier(); + shadowBarrier.Heading = rotateBarrier.Value; + shadowBarrier.Position = MousePositionInWorld.GetPositionForBarrier; + Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); + Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); } void DisableBarrierMenuOptionsIfShadowConeTooFar() From e2d9c93e95363893d11d722a4dbfe10a32cb3907 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 12 Nov 2020 19:21:31 -0700 Subject: [PATCH 37/74] 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. --- .../Object Classes/CollectedVehicle.cs | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index 3871598..46d6df0 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -218,7 +218,15 @@ namespace SceneManager { //Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n{Vehicle.Model.Name} [{Vehicle.Handle}] driver [{Driver.Handle}] has no task. Reassiging current waypoint task."); Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] driver [{Driver.Handle}] has no task. Reassiging current waypoint task."); - Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); + if (Driver.CurrentVehicle) + { + Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); + } + else + { + Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] driver [{Driver.Handle}] is not in a vehicle. Exiting loop."); + return; + } } GameFiber.Sleep(100); } @@ -277,7 +285,7 @@ namespace SceneManager Dismiss(); return false; } - if (Driver == null || !Driver || !Driver.IsAlive && !Dismissed) + if (!Driver || !Driver.IsAlive) { Dismiss(); return false; @@ -309,17 +317,17 @@ namespace SceneManager if (Vehicle) { Vehicle.Dismiss(); + Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); } - Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); Path.CollectedVehicles.Remove(this); return; } - if(StoppedAtWaypoint) + if(Vehicle && StoppedAtWaypoint) { StoppedAtWaypoint = false; - Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); - if (Driver.CurrentVehicle) + Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Driver.CurrentVehicle, 0f, 1, true); + if (Driver?.CurrentVehicle) { Driver.Tasks.CruiseWithVehicle(5f); } @@ -360,11 +368,13 @@ namespace SceneManager { if (CurrentWaypoint == null || Path == null) { - Game.LogTrivial($"CurrentWaypoint or Path are null"); + Game.LogTrivial($"CurrentWaypoint or Path is null"); + return; } - else if (CurrentWaypoint?.Number != Path?.Waypoints.Count) + + if (CurrentWaypoint?.Number != Path?.Waypoints.Count) { - Game.LogTrivial($"{Vehicle.Model.Name} [{Vehicle.Handle}] dismissed from waypoint."); + Game.LogTrivial($"{Vehicle?.Model.Name} [{Vehicle?.Handle}] dismissed from waypoint."); SkipWaypoint = true; } else if (CurrentWaypoint?.Number == Path?.Waypoints.Count) @@ -375,29 +385,28 @@ namespace SceneManager void DismissFromPath() { - Game.LogTrivial($"Dismissing from path"); + Game.LogTrivial($"Dismissing {Vehicle?.Model.Name} [{Vehicle?.Handle}] from path"); Dismissed = true; // Check if the vehicle is near any of the path's collector waypoints GameFiber.StartNew(() => { var nearestCollectorWaypoint = Path.Waypoints.Where(wp => wp.IsCollector).OrderBy(wp => Vehicle.DistanceTo2D(wp.Position)).FirstOrDefault(); - if (nearestCollectorWaypoint != null) + if(nearestCollectorWaypoint == null) { - // Enabling this will keep the menu, but the dismissed vehicle is immediately re - collected - while (nearestCollectorWaypoint != null && Vehicle && Vehicle.HasDriver && Driver && Driver.IsAlive && Vehicle.FrontPosition.DistanceTo2D(nearestCollectorWaypoint.Position) <= nearestCollectorWaypoint.CollectorRadius) - { - //Game.LogTrivial($"{Vehicle.Model.Name} is within 2x collector radius, cannot be fully dismissed yet."); - GameFiber.Yield(); - } + Game.LogTrivial($"Nearest collector is null"); } else { - Game.LogTrivial($"Nearest collector is null"); + while (nearestCollectorWaypoint != null && Vehicle && Vehicle.HasDriver && Driver && Driver.IsAlive && Vehicle.FrontPosition.DistanceTo2D(nearestCollectorWaypoint.Position) <= nearestCollectorWaypoint.CollectorRadius) + { + GameFiber.Yield(); + } } if (!Vehicle || !Driver) { + Game.LogTrivial($"Vehicle or driver is null"); return; } @@ -416,12 +425,12 @@ namespace SceneManager } if (Vehicle) { + Vehicle.Dismiss(); Vehicle.IsSirenOn = false; Vehicle.IsSirenSilent = true; - Vehicle.Dismiss(); } } - }); + }, "DismissFromPath Fiber"); } From 4969ebd7a3c22d449c2a85ae823e93d37943b9fd Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 07:37:18 -0700 Subject: [PATCH 38/74] Removed unused variable --- SceneManager/Menus/BarrierMenu.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index 185abd5..9cc4e58 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -398,7 +398,6 @@ namespace SceneManager internal static float SetMenuWidth() { float defaultWidth = UIMenu.DefaultWidth; - float width = barrierMenu.Width; barrierList.TextStyle.Apply(); Rage.Native.NativeFunction.Natives.x54CE8AC98E120CAB("STRING"); // _BEGIN_TEXT_COMMAND_GET_WIDTH From 8baf70831c7fcb239dcd84306156628c017c2cbe Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 07:37:46 -0700 Subject: [PATCH 39/74] Renamed some methods to improve clarity --- SceneManager/Object Classes/Path.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SceneManager/Object Classes/Path.cs b/SceneManager/Object Classes/Path.cs index 7c62061..e13410b 100644 --- a/SceneManager/Object Classes/Path.cs +++ b/SceneManager/Object Classes/Path.cs @@ -147,7 +147,7 @@ namespace SceneManager { foreach (Vehicle v in World.GetAllVehicles()) { - if (IsNearWaypoint(v, waypoint) && IsValidForCollection(v)) + if (VehicleIsNearWaypoint(v, waypoint) && VehicleIsValidForCollection(v)) { CollectedVehicle newCollectedVehicle = AddVehicleToCollection(v); GameFiber AssignTasksFiber = new GameFiber(() => newCollectedVehicle.AssignWaypointTasks(this, waypoint)); @@ -181,14 +181,14 @@ namespace SceneManager return collectedVehicle; } - bool IsNearWaypoint(Vehicle v, Waypoint wp) + bool VehicleIsNearWaypoint(Vehicle v, Waypoint wp) { return v.FrontPosition.DistanceTo2D(wp.Position) <= wp.CollectorRadius && Math.Abs(wp.Position.Z - v.Position.Z) < 3; } - bool IsValidForCollection(Vehicle v) + bool VehicleIsValidForCollection(Vehicle v) { - if (v && v != Game.LocalPlayer.Character.CurrentVehicle && v != Game.LocalPlayer.Character.LastVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike) && !v.IsSirenOn && v.IsEngineOn && v.IsOnAllWheels && v.Speed > 1 && !CollectedVehicles.Any(cv => cv?.Vehicle == v)) + if (v && v != Game.LocalPlayer.Character.LastVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike) && !v.IsSirenOn && v.IsEngineOn && v.IsOnAllWheels && v.Speed > 1 && !CollectedVehicles.Any(cv => cv?.Vehicle == v)) { var vehicleCollectedOnAnotherPath = PathMainMenu.paths.Any(p => p.Number != Number && p.CollectedVehicles.Any(cv => cv.Vehicle == v)); if (vehicleCollectedOnAnotherPath) From c011d037d26b982905808b892bed3aab07f4e94b Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 07:37:52 -0700 Subject: [PATCH 40/74] Updated version. --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 08c897d..4dbff6c 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.1.0.0")] -[assembly: AssemblyFileVersion("2.1.0.0")] +[assembly: AssemblyVersion("2.1.1.0")] +[assembly: AssemblyFileVersion("2.1.1.0")] From f71d9b523bdd822c4545e3f6360875cf558d8b5f Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 16:37:08 -0700 Subject: [PATCH 41/74] Added debug message regarding driver task being updated upon waypoint position change --- SceneManager/Object Classes/CollectedVehicle.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Object Classes/CollectedVehicle.cs index 46d6df0..914d33d 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Object Classes/CollectedVehicle.cs @@ -211,6 +211,7 @@ namespace SceneManager { if (oldPosition != Path.Waypoints[currentWaypointTask].Position) { + Game.LogTrivial($"Waypoint position has changed, updating drive task."); oldPosition = Path.Waypoints[currentWaypointTask].Position; Driver.Tasks.DriveToPosition(Path.Waypoints[currentWaypointTask].Position, Path.Waypoints[currentWaypointTask].Speed, (VehicleDrivingFlags)Path.Waypoints[currentWaypointTask].DrivingFlagType, acceptedDistance); } From fb0da695836d78027ab81118c2b2f7def6d04b1f Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 16:40:06 -0700 Subject: [PATCH 42/74] Added collection for blacklisted vehicles. Added checks for vehicle drivers who have In Progress task statuses or are already persistent. Vehicles with drivers who have these attributes get blacklisted and will be ignored by collector waypoints. --- SceneManager/Object Classes/Path.cs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/SceneManager/Object Classes/Path.cs b/SceneManager/Object Classes/Path.cs index e13410b..b439a92 100644 --- a/SceneManager/Object Classes/Path.cs +++ b/SceneManager/Object Classes/Path.cs @@ -13,6 +13,7 @@ namespace SceneManager internal State State { get; set; } internal List Waypoints = new List(); internal List CollectedVehicles = new List(); + private List _blacklistedVehicles = new List(); internal Path(int pathNum, State pathState) { @@ -125,6 +126,7 @@ namespace SceneManager } CollectedVehicles.RemoveAll(cv => !cv.Vehicle); + _blacklistedVehicles.RemoveAll(v => !v); GameFiber.Sleep(60000); } }); @@ -188,16 +190,34 @@ namespace SceneManager bool VehicleIsValidForCollection(Vehicle v) { - if (v && v != Game.LocalPlayer.Character.LastVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike) && !v.IsSirenOn && v.IsEngineOn && v.IsOnAllWheels && v.Speed > 1 && !CollectedVehicles.Any(cv => cv?.Vehicle == v)) + if (v && v != Game.LocalPlayer.Character.LastVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike) && !v.IsSirenOn && v.IsEngineOn && v.IsOnAllWheels && v.Speed > 1 && !CollectedVehicles.Any(cv => cv?.Vehicle == v) && !_blacklistedVehicles.Contains(v)) { var vehicleCollectedOnAnotherPath = PathMainMenu.paths.Any(p => p.Number != Number && p.CollectedVehicles.Any(cv => cv.Vehicle == v)); if (vehicleCollectedOnAnotherPath) { return false; } - if (v.HasDriver && v.Driver && !v.Driver.IsAlive) + if (v.HasDriver && v.Driver) { - return false; + //Game.LogTrivial($"Driver task status: {v.Driver.Tasks.CurrentTaskStatus}"); + if(!v.Driver.IsAlive) + { + Game.LogTrivial($"Vehicle's driver is dead."); + _blacklistedVehicles.Add(v); + return false; + } + if(v.Driver.IsPersistent) // Persistent drivers are likely spawned from another script and doing something important. + { + Game.LogTrivial($"Vehicle's driver is already persistent and probably being handled by another plugin."); + _blacklistedVehicles.Add(v); + return false; + } + if (v.Driver.Tasks.CurrentTaskStatus == TaskStatus.InProgress && !Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(v.Driver, 151)) // Drivers with a non-wander task are probably doing something important + { + Game.LogTrivial($"Vehicle's driver is already tasked and probably being handled by another plugin."); + _blacklistedVehicles.Add(v); + return false; + } } if (!v.HasDriver) { From a981814377e5a9f62aa9d17580a13c2e437e6641 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 16:40:32 -0700 Subject: [PATCH 43/74] Updated version --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 4dbff6c..228ba8a 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.1.1.0")] -[assembly: AssemblyFileVersion("2.1.1.0")] +[assembly: AssemblyVersion("2.1.1.1")] +[assembly: AssemblyFileVersion("2.1.1.1")] From 64e84a23146510971d449ab4b382231b3333c80f Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 16:40:56 -0700 Subject: [PATCH 44/74] Updated command to show output from GET_ENTITY_SCRIPT native --- SceneManager/ConsoleCommands.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SceneManager/ConsoleCommands.cs b/SceneManager/ConsoleCommands.cs index a9cf5bf..973a978 100644 --- a/SceneManager/ConsoleCommands.cs +++ b/SceneManager/ConsoleCommands.cs @@ -16,6 +16,8 @@ namespace SceneManager if(collectedVehicle != null) { Game.LogTrivial($"Vehicle: {collectedVehicle.Vehicle.Model.Name} [{collectedVehicle.Vehicle.Handle}]"); + Rage.Native.NativeFunction.Natives.xA6E9C38DB51D7748(collectedVehicle.Vehicle, out uint script); + Game.LogTrivial($"Vehicle spawned by: {script}"); Game.LogTrivial($"Driver handle: {collectedVehicle.Driver.Handle}"); Game.LogTrivial($"Path: {collectedVehicle.Path.Number}"); Game.LogTrivial($"Current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); From cd1bce8c2c70fd792679fe8b363271aae18e7bb9 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Thu, 26 Nov 2020 16:41:12 -0700 Subject: [PATCH 45/74] Fixed spacing on notification message --- SceneManager/EntryPoint.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SceneManager/EntryPoint.cs b/SceneManager/EntryPoint.cs index a0d4d86..43db9fe 100644 --- a/SceneManager/EntryPoint.cs +++ b/SceneManager/EntryPoint.cs @@ -57,7 +57,7 @@ namespace SceneManager } else { - Game.DisplayNotification($"~o~Scene Manager~r~[Error]\n~w~ Your RAGENativeUI.dll version is below 1.7, please update RAGENativeUI and try again."); + 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; } From c7a24a1c0a3595d044e1fd0c261fde22adc69a4a Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:04:40 -0700 Subject: [PATCH 46/74] RNUIMouseInputHandler now utilizes InputManager.dll to simulate key presses on mouse click. --- SceneManager/RNUIMouseInputHandler.cs | 149 +++----------------------- 1 file changed, 13 insertions(+), 136 deletions(-) diff --git a/SceneManager/RNUIMouseInputHandler.cs b/SceneManager/RNUIMouseInputHandler.cs index 2335aa6..5fb2457 100644 --- a/SceneManager/RNUIMouseInputHandler.cs +++ b/SceneManager/RNUIMouseInputHandler.cs @@ -1,7 +1,7 @@ -using Rage; +using InputManager; +using Rage; using RAGENativeUI; using RAGENativeUI.Elements; -using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; @@ -12,7 +12,7 @@ namespace SceneManager { internal delegate void Function(); - internal static void Initialize(UIMenu menu, List scrollerItems, Dictionary checkboxItems, Dictionary selectItems) + internal static void Initialize(UIMenu menu, List scrollerItems) { GameFiber.StartNew(() => { @@ -24,27 +24,11 @@ namespace SceneManager OnWheelScroll(menu, selectedScroller, scrollerItems); } - if (Game.IsKeyDown(Keys.LButton)) + if (Game.IsKeyDown(Keys.LButton) && Rage.Native.NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() != 0) { - var selectedItem = menu.MenuItems.Where(x => x.Enabled && x.Selected).FirstOrDefault(); - if (selectedItem != null) - { - //Game.LogTrivial($"selectedItem: {selectedItem.Text}"); - //Game.LogTrivial($"scrollerItems contains: {scrollerItems.Contains(selectedItem)}"); - if (selectItems.ContainsKey(selectedItem)) - { - OnMenuItemClicked(selectItems); - } - else if (!scrollerItems.Contains(selectedItem) && checkboxItems.ContainsKey((UIMenuCheckboxItem)selectedItem)) - { - OnCheckboxItemClicked(checkboxItems); - } - } - - if(menu.SubtitleText == "~o~Main Menu") - { - menu.Visible = false; - } + Keyboard.KeyDown(Keys.Enter); + GameFiber.Wait(1); + Keyboard.KeyUp(Keys.Enter); } if (menu.SubtitleText.Contains("Path Creation Menu")) @@ -56,32 +40,6 @@ namespace SceneManager }); } - internal static void OnCheckboxItemClicked(Dictionary checkboxItems) - { - var checkedItem = checkboxItems.Keys.Where(x => x.Selected && x.Enabled).FirstOrDefault(); - if(checkedItem != null) - { - checkedItem.Checked = !checkedItem.Checked; - if(checkboxItems.TryGetValue(checkedItem, out Function func)) - { - func?.Invoke(); - } - } - } - - internal static void OnMenuItemClicked(Dictionary selectItems) - { - var selectedItem = selectItems.Keys.Where(x => x.Selected && x.Enabled).FirstOrDefault(); - //Game.LogTrivial($"selectedItem: {selectedItem?.Text}"); - if (selectedItem != null) - { - if (selectItems.TryGetValue(selectedItem, out Function func)) - { - func?.Invoke(); - } - } - } - internal static void OnWheelScroll(UIMenu menu, UIMenuItem selectedScroller, List scrollerItems) { var menuScrollingDisabled = false; @@ -115,98 +73,17 @@ namespace SceneManager void ScrollMenuItem() { - //Game.LogTrivial($"Selected scroller: {selectedScroller.Text}"); if (Game.GetMouseWheelDelta() > 0) { - foreach (var item in scrollerItems) - { - if (item == selectedScroller) - { - //Game.LogTrivial($"item text: {item.Text}"); - item.ScrollToNextOption(); - if (menu.SubtitleText.ToLower().Contains("barrier")) - { - HandleBarrierMenuItems(item); - } - if(item.Text == "Edit Waypoint") - { - UpdateEditWaypointMenuItems(); - } - } - } + Keyboard.KeyDown(Keys.Right); + GameFiber.Wait(1); + Keyboard.KeyUp(Keys.Right); } else if (Game.GetMouseWheelDelta() < 0) { - foreach (var item in scrollerItems) - { - if (item == selectedScroller) - { - item.ScrollToPreviousOption(); - if (menu.SubtitleText.ToLower().Contains("barrier")) - { - HandleBarrierMenuItems(item); - } - if (item.Text == "Edit Waypoint") - { - UpdateEditWaypointMenuItems(); - } - } - } - } - - void HandleBarrierMenuItems(UIMenuItem item) - { - if (item.Text == "Spawn Barrier") - { - if (BarrierMenu.shadowBarrier) - { - BarrierMenu.shadowBarrier.Delete(); - } - var changeTextureItem = scrollerItems.Where(x => x.Text == "Change Texture").FirstOrDefault().Index = 0; - var listScrollerItem = (UIMenuListScrollerItem)item; - if (listScrollerItem.SelectedItem == "Flare") - { - scrollerItems.Where(x => x.Text == "Rotate Barrier").FirstOrDefault().Enabled = false; - } - else - { - scrollerItems.Where(x => x.Text == "Rotate Barrier").FirstOrDefault().Enabled = true; - } - menu.Width = BarrierMenu.SetMenuWidth(); - } - else if (item.Text == "Rotate Barrier") - { - BarrierMenu.RotateBarrier(); - } - else if(item.Text == "Change Texture") - { - var numericScrollerItem = (UIMenuNumericScrollerItem)item; - Rage.Native.NativeFunction.Natives.x971DA0055324D033(BarrierMenu.shadowBarrier, numericScrollerItem.Value); - } - } - - void UpdateEditWaypointMenuItems() - { - var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - var editWaypoint = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Edit Waypoint").FirstOrDefault(); - var collectorWaypoint = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Collector").FirstOrDefault(); - var changeCollectorRadius = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Collection Radius").FirstOrDefault(); - var changeSpeedZoneRadius = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Speed Zone Radius").FirstOrDefault(); - var stopWaypointType = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Is this a Stop waypoint?").FirstOrDefault(); - var directWaypointBehavior = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Drive directly to waypoint?").FirstOrDefault(); - var changeWaypointSpeed = (UIMenuNumericScrollerItem)menu.MenuItems.Where(x => x.Text == "Waypoint Speed").FirstOrDefault(); - var updateWaypointPosition = (UIMenuCheckboxItem)menu.MenuItems.Where(x => x.Text == "Update Waypoint Position").FirstOrDefault(); - var currentWaypoint = currentPath.Waypoints[editWaypoint.Value - 1]; - - changeWaypointSpeed.Value = (int)MathHelper.ConvertMetersPerSecondToMilesPerHour(currentWaypoint.Speed); - stopWaypointType.Checked = currentWaypoint.IsStopWaypoint; - directWaypointBehavior.Checked = currentWaypoint.DrivingFlagType == DrivingFlagType.Direct ? true : false; - collectorWaypoint.Checked = currentWaypoint.IsCollector; - changeCollectorRadius.Enabled = collectorWaypoint.Checked ? true : false; - changeCollectorRadius.Value = (int)currentWaypoint.CollectorRadius; - changeSpeedZoneRadius.Enabled = collectorWaypoint.Checked ? true : false; - changeSpeedZoneRadius.Value = (int)currentWaypoint.SpeedZoneRadius; - updateWaypointPosition.Checked = false; + Keyboard.KeyDown(Keys.Left); + GameFiber.Wait(1); + Keyboard.KeyUp(Keys.Left); } } From 3e33ce25694474aae3b3602155feff3019c02885 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:05:33 -0700 Subject: [PATCH 47/74] Updated RNUIMouseInputHandler.Initialize parameters due to refactor --- SceneManager/Menus/BarrierMenu.cs | 2 +- SceneManager/Menus/EditWaypointMenu.cs | 2 +- SceneManager/Menus/MainMenu.cs | 2 +- SceneManager/Menus/PathCreationMenu.cs | 2 +- SceneManager/Menus/PathMainMenu.cs | 2 +- SceneManager/Menus/SettingsMenu.cs | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index 9cc4e58..5dcc6b7 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -392,7 +392,7 @@ namespace SceneManager GameFiber ShadowConeLoopFiber = new GameFiber(() => LoopToDisplayShadowBarrier()); ShadowConeLoopFiber.Start(); - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } internal static float SetMenuWidth() diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index 1b3615b..9b91466 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -305,7 +305,7 @@ namespace SceneManager { addAsNewWaypoint, AddAsNewWaypoint } }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } private static float SetDriveSpeedForWaypoint() diff --git a/SceneManager/Menus/MainMenu.cs b/SceneManager/Menus/MainMenu.cs index a0b0841..5241d4c 100644 --- a/SceneManager/Menus/MainMenu.cs +++ b/SceneManager/Menus/MainMenu.cs @@ -61,7 +61,7 @@ namespace SceneManager { navigateToSettingsMenu, ShowSettingsMenu } }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } } diff --git a/SceneManager/Menus/PathCreationMenu.cs b/SceneManager/Menus/PathCreationMenu.cs index 285f73f..56553ad 100644 --- a/SceneManager/Menus/PathCreationMenu.cs +++ b/SceneManager/Menus/PathCreationMenu.cs @@ -326,7 +326,7 @@ namespace SceneManager { trafficEndPath, EndPath } }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } } diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index 7fb2c35..6f348fc 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -435,7 +435,7 @@ namespace SceneManager { dismissDriver, DismissDriver } }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } } diff --git a/SceneManager/Menus/SettingsMenu.cs b/SceneManager/Menus/SettingsMenu.cs index a1012ce..a639943 100644 --- a/SceneManager/Menus/SettingsMenu.cs +++ b/SceneManager/Menus/SettingsMenu.cs @@ -120,7 +120,7 @@ namespace SceneManager { saveSettings, ToggleSettings } }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } } \ No newline at end of file From 726bcedf8bf0f784a64a98b506fa38cef07a9f39 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:06:10 -0700 Subject: [PATCH 48/74] Added Export Path menu item and method. --- SceneManager/Menus/EditPathMenu.cs | 46 ++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/SceneManager/Menus/EditPathMenu.cs b/SceneManager/Menus/EditPathMenu.cs index 52fb1e2..d0fa637 100644 --- a/SceneManager/Menus/EditPathMenu.cs +++ b/SceneManager/Menus/EditPathMenu.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Drawing; -using System.Linq; -using System.Windows.Forms; +using System.IO; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; @@ -11,7 +10,7 @@ namespace SceneManager class EditPathMenu { internal static UIMenu editPathMenu = new UIMenu("Scene Manager", "~o~Edit Path"); - private static UIMenuItem editPathWaypoints, deletePath; + private static UIMenuItem editPathWaypoints, deletePath, savePath; internal static UIMenuCheckboxItem disablePath; internal static void InstantiateMenu() @@ -30,7 +29,8 @@ namespace SceneManager editPathWaypoints.ForeColor = Color.Gold; editPathMenu.AddItem(deletePath = new UIMenuItem("Delete Path")); deletePath.ForeColor = Color.Gold; - + editPathMenu.AddItem(savePath = new UIMenuItem("Export Path")); + savePath.ForeColor = Color.Gold; editPathMenu.RefreshIndex(); } @@ -64,6 +64,34 @@ namespace SceneManager } } + private static void ExportPath() + { + // Reference PNWParks's UserInput class from LiveLights + string filename = PNWUserInput.GetUserInput("Type the name you would like to save your file as", "Enter a filename", 100); + + // If filename != null or empty, check if export directory exists (GTA V/Plugins/SceneManager/Saved Paths) + if(string.IsNullOrWhiteSpace(filename)) + { + Game.LogTrivial($"Invalid filename given. Filename cannot be null, empty, or consist of just white spaces."); + return; + } + Game.LogTrivial($"Filename: {filename}"); + + // If directory does not exist, create it + var gameDirectory = Directory.GetCurrentDirectory(); + var pathDirectoryExists = Directory.Exists(gameDirectory + "/plugins/SceneManager/Saved Paths"); + if (!pathDirectoryExists) + { + Directory.CreateDirectory(gameDirectory + "/plugins/SceneManager/Saved Paths"); + Game.LogTrivial($"New directory created at '/plugins/SceneManager/Saved Paths'"); + } + + // Create XML in save directory with user's filename, saving all path information + // + // + // + } + private static void EditPath_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) { if (selectedItem == editPathWaypoints) @@ -75,6 +103,11 @@ namespace SceneManager { DeletePath(); } + + if(selectedItem == savePath) + { + ExportPath(); + } } private static void EditPath_OnCheckboxChange(UIMenu sender, UIMenuCheckboxItem checkboxItem, bool @checked) @@ -92,10 +125,11 @@ namespace SceneManager var selectItems = new Dictionary() { { editPathWaypoints, EditPathWaypoints }, - { deletePath, DeletePath } + { deletePath, DeletePath }, + { savePath, ExportPath } }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems, checkboxItems, selectItems); + RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } } From 6d7e6a625d805b4c43c721553510eeb5ff685614 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:06:39 -0700 Subject: [PATCH 49/74] Removed dead code. --- SceneManager/Object Classes/Waypoint.cs | 100 ------------------------ 1 file changed, 100 deletions(-) diff --git a/SceneManager/Object Classes/Waypoint.cs b/SceneManager/Object Classes/Waypoint.cs index d84f4b5..279a4ed 100644 --- a/SceneManager/Object Classes/Waypoint.cs +++ b/SceneManager/Object Classes/Waypoint.cs @@ -1,6 +1,4 @@ using Rage; -using System; -using System.Collections.Generic; using System.Drawing; using System.Linq; @@ -21,7 +19,6 @@ namespace SceneManager internal float SpeedZoneRadius { get; set; } internal uint SpeedZone { get; set; } internal bool EnableWaypointMarker { get; set; } = true; - internal bool EnableEditMarker { get; set; } internal Waypoint(Path path, int waypointNum, Vector3 waypointPos, float speed, DrivingFlagType drivingFlag, bool stopWaypoint, Blip waypointBlip, bool collector = false, float collectorRadius = 1, float speedZoneRadius = 5) { @@ -283,103 +280,6 @@ namespace SceneManager } } - internal void CollectVehicles(List paths) - { - var sleepInterval = 1000; - Game.LogTrivial($"Starting collection loop on waypoint {Number}"); - while (paths.Contains(Path) && Path.Waypoints.Contains(this)) - { - if (Path.IsEnabled && IsCollector) - { - sleepInterval = 100; - LoopForNearbyValidVehicles(); - } - else - { - sleepInterval = 1000; - } - - var collectedVehiclePlayerIsIn = Path.CollectedVehicles.Where(x => x.Vehicle == Game.LocalPlayer.Character.CurrentVehicle).FirstOrDefault(); - if (collectedVehiclePlayerIsIn != null) - { - collectedVehiclePlayerIsIn.Dismiss(DismissOption.FromPlayer); - Game.LogTrivial($"Dismissed a collected vehicle the player was in."); - } - GameFiber.Sleep(sleepInterval); - } - - void LoopForNearbyValidVehicles() - { - foreach (Vehicle vehicle in GetNearbyVehiclesForCollection(Position, CollectorRadius)) - { - if (!vehicle) - { - break; - } - - var collectedVehicle = Path.CollectedVehicles.Where(cv => cv.Vehicle == vehicle).FirstOrDefault(); - if (collectedVehicle == null) - { - CollectedVehicle newCollectedVehicle = AddVehicleToCollection(vehicle); - GameFiber AssignTasksFiber = new GameFiber(() => newCollectedVehicle.AssignWaypointTasks(Path, this)); - //GameFiber AssignTasksFiber = new GameFiber(() => AITasking.AssignWaypointTasks(newCollectedVehicle, Path, this)); - AssignTasksFiber.Start(); - } - } - - Vehicle[] GetNearbyVehiclesForCollection(Vector3 collectorWaypointPosition, float collectorRadius) - { - return (from v in World.GetAllVehicles() where v.FrontPosition.DistanceTo2D(collectorWaypointPosition) <= collectorRadius && Math.Abs(collectorWaypointPosition.Z - v.Position.Z) < 3 && IsValidForCollection(v) select v).ToArray(); - } - } - - CollectedVehicle AddVehicleToCollection(Vehicle vehicle) - { - var collectedVehicle = new CollectedVehicle(vehicle, Path, this); - Path.CollectedVehicles.Add(collectedVehicle); - Game.LogTrivial($"Added {vehicle.Model.Name} to collection from path {Path.Number} waypoint {this.Number}."); - return collectedVehicle; - } - - bool IsValidForCollection(Vehicle v) - { - if (v && v.Speed > 1 && v.IsOnAllWheels && v.IsEngineOn && v != Game.LocalPlayer.Character.CurrentVehicle && v != Game.LocalPlayer.Character.LastVehicle && (v.IsCar || v.IsBike || v.IsBicycle || v.IsQuadBike) && !v.IsSirenOn && !Path.CollectedVehicles.Any(cv => cv?.Vehicle == v)) - { - var vehicleCollectedOnAnotherPath = paths.Any(p => p.Number != Path.Number && p.CollectedVehicles.Any(cv => cv.Vehicle == v)); - if (vehicleCollectedOnAnotherPath) - { - return false; - } - if (v.HasDriver && v.Driver && !v.Driver.IsAlive) - { - return false; - } - if (!v.HasDriver) - { - v.CreateRandomDriver(); - while (!v.HasDriver) - { - GameFiber.Yield(); - } - if (v && v.Driver) - { - v.Driver.IsPersistent = true; - v.Driver.BlockPermanentEvents = true; - } - else - { - return false; - } - } - return true; - } - else - { - return false; - } - } - } - private static Vector3 GetMousePositionInWorld() { HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); From 23af5156929669a1ec91d123f3620e72bc087cc3 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:06:47 -0700 Subject: [PATCH 50/74] Updated version. --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 228ba8a..2e09a23 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.1.1.1")] -[assembly: AssemblyFileVersion("2.1.1.1")] +[assembly: AssemblyVersion("2.1.1.2")] +[assembly: AssemblyFileVersion("2.1.1.2")] From d760675b27f38950b60ffd6f979f711e4dc152c3 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:07:04 -0700 Subject: [PATCH 51/74] Added check for InputManager.dll alongside RNUI version checker. --- SceneManager/EntryPoint.cs | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/SceneManager/EntryPoint.cs b/SceneManager/EntryPoint.cs index 43db9fe..633810c 100644 --- a/SceneManager/EntryPoint.cs +++ b/SceneManager/EntryPoint.cs @@ -13,24 +13,22 @@ namespace SceneManager { 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 + if(!InputManagerChecker() || !CheckRNUIVersion()) { Game.UnloadActivePlugin(); return; } + AppDomain.CurrentDomain.DomainUnload += MyTerminationHandler; + Settings.LoadSettings(); + GetAssemblyVersion(); + MenuManager.InstantiateMenus(); + + DisplayHintsToOpenMenu(); + + GameFiber UserInputFiber = new GameFiber(() => GetUserInput.LoopForUserInput()); + UserInputFiber.Start(); + void GetAssemblyVersion() { string version = Assembly.GetExecutingAssembly().GetName().Version.ToString(); @@ -62,6 +60,19 @@ namespace SceneManager } } + + private static bool InputManagerChecker() + { + var directory = Directory.GetCurrentDirectory(); + var exists = File.Exists(directory + @"\InputManager.dll"); + if (!exists) + { + Game.LogTrivial($"InputManager was not found in the user's GTA V directory."); + Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n~w~InputManager.dll was not found in your GTA V directory. Please install InputManager.dll and try again."); + return false; + } + return true; + } private static void DisplayHintsToOpenMenu() { if (Settings.ModifierKey == Keys.None && Settings.ModifierButton == ControllerButtons.None) From 8b6dec31b5eeaa6bb43f1e761740f4e07736f0ae Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Fri, 27 Nov 2020 15:07:36 -0700 Subject: [PATCH 52/74] Added UserInput class by PNW to handle user-defined filename for Export Path --- SceneManager/PNWUserInput.cs | 28 ++++++++++++++++++++++++++++ SceneManager/SceneManager.csproj | 5 +++++ 2 files changed, 33 insertions(+) create mode 100644 SceneManager/PNWUserInput.cs diff --git a/SceneManager/PNWUserInput.cs b/SceneManager/PNWUserInput.cs new file mode 100644 index 0000000..92268e1 --- /dev/null +++ b/SceneManager/PNWUserInput.cs @@ -0,0 +1,28 @@ +using Rage; +using Rage.Native; + +namespace SceneManager +{ + internal static class PNWUserInput + { + public static string GetUserInput(string windowTitle, string defaultText, int maxLength) + { + NativeFunction.Natives.DISABLE_ALL_CONTROL_ACTIONS(2); + + NativeFunction.Natives.DISPLAY_ONSCREEN_KEYBOARD(true, windowTitle, 0, defaultText, 0, 0, 0, maxLength); + Game.DisplayHelp("Enter the filename you would like to save your path as\n~INPUT_FRONTEND_ACCEPT~ Export path\n~INPUT_FRONTEND_CANCEL~ Cancel", true); + Game.DisplaySubtitle(windowTitle, 100000); + + while (NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() == 0) + { + GameFiber.Yield(); + } + + NativeFunction.Natives.ENABLE_ALL_CONTROL_ACTIONS(2); + Game.DisplaySubtitle("", 5); + Game.HideHelp(); + + return NativeFunction.Natives.GET_ONSCREEN_KEYBOARD_RESULT(); + } + } +} \ No newline at end of file diff --git a/SceneManager/SceneManager.csproj b/SceneManager/SceneManager.csproj index 02725e6..8b24f01 100644 --- a/SceneManager/SceneManager.csproj +++ b/SceneManager/SceneManager.csproj @@ -31,6 +31,10 @@ 4 + + False + bin\Debug\InputManager.dll + D:\Program Files\Rockstar Games\Grand Theft Auto V\RAGENativeUI.dll @@ -64,6 +68,7 @@ + From 8a40b41077cbbc9916d1b4551d773a1b4bc861ca Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:24:56 -0700 Subject: [PATCH 53/74] Added "immobile" menu option. Removed traffic light menu option. Refactored "Rest Barriers" code into a new gamefiber. --- SceneManager/Menus/BarrierMenu.cs | 163 +++++++++++++++++------------- 1 file changed, 95 insertions(+), 68 deletions(-) diff --git a/SceneManager/Menus/BarrierMenu.cs b/SceneManager/Menus/BarrierMenu.cs index 5dcc6b7..1cc1539 100644 --- a/SceneManager/Menus/BarrierMenu.cs +++ b/SceneManager/Menus/BarrierMenu.cs @@ -4,6 +4,8 @@ using System.Linq; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; +using SceneManager.Objects; +using SceneManager.Utils; namespace SceneManager { @@ -12,11 +14,13 @@ namespace SceneManager private static List trafficLightList = new List() { TrafficLight.Green, TrafficLight.Red, TrafficLight.Yellow, TrafficLight.None }; internal static UIMenu barrierMenu = new UIMenu("Scene Manager", "~o~Barrier Management"); internal static List barriers = new List(); - private static UIMenuListScrollerItem barrierList = new UIMenuListScrollerItem("Spawn Barrier", "", Settings.barrierKeys); + private static UIMenuListScrollerItem barrierList = new UIMenuListScrollerItem("Spawn Barrier", "", Settings.barriers.Keys); // Settings.barrierKeys private static UIMenuNumericScrollerItem rotateBarrier = new UIMenuNumericScrollerItem("Rotate Barrier", "", 0, 350, 10); + // ADD CHECKBOX FOR BARRIER TO STOP TRAFFIC? ADD 3D MARKER TO SHOW WHERE TRAFFIC WILL STOP. ONLY NEED ONE CONE TO DO IT PER LANE private static UIMenuCheckboxItem invincible = new UIMenuCheckboxItem("Indestructible", false); + private static UIMenuCheckboxItem immobile = new UIMenuCheckboxItem("Immobile", false); private static UIMenuNumericScrollerItem barrierTexture = new UIMenuNumericScrollerItem("Change Texture", "", 0, 15, 1); - private static UIMenuCheckboxItem setBarrierLights = new UIMenuCheckboxItem("Enable Barrier Lights", false); + private static UIMenuCheckboxItem setBarrierLights = new UIMenuCheckboxItem("Enable Barrier Lights", Settings.EnableBarrierLightsDefaultOn); private static UIMenuListScrollerItem setBarrierTrafficLight = new UIMenuListScrollerItem("Set Barrier Traffic Light", "", trafficLightList); private static UIMenuListScrollerItem removeBarrierOptions = new UIMenuListScrollerItem("Remove Barrier", "", new[] { "Last Barrier", "Nearest Barrier", "All Barriers" }); private static UIMenuItem resetBarriers = new UIMenuItem("Reset Barriers", "Reset all spawned barriers to their original position and rotation"); @@ -42,6 +46,8 @@ namespace SceneManager barrierMenu.AddItem(invincible); + barrierMenu.AddItem(immobile); + if (Settings.EnableAdvancedBarricadeOptions) { barrierMenu.AddItem(barrierTexture); @@ -49,8 +55,8 @@ namespace SceneManager barrierMenu.AddItem(setBarrierLights); - barrierMenu.AddItem(setBarrierTrafficLight); - setBarrierTrafficLight.Index = 3; + //barrierMenu.AddItem(setBarrierTrafficLight); + //setBarrierTrafficLight.Index = 3; } barrierMenu.AddItem(removeBarrierOptions); @@ -69,14 +75,16 @@ namespace SceneManager shadowBarrier.Delete(); } - shadowBarrier = new Object(Settings.barrierValues[barrierList.Index], MousePositionInWorld.GetPosition, rotateBarrier.Value); + var barrierKey = Settings.barriers.Where(x => x.Key == barrierList.SelectedItem).FirstOrDefault().Key; + var barrierValue = Settings.barriers[barrierKey].Name; + shadowBarrier = new Object(barrierValue, MousePositionInWorld.GetPosition, rotateBarrier.Value); // Settings.barrierValues[barrierList.Index] if (!shadowBarrier) { barrierMenu.Close(); Game.DisplayNotification($"~o~Scene Manager ~r~[Error]\n~w~Something went wrong creating the shadow barrier. Please try again."); return; } - Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); shadowBarrier.IsGravityDisabled = true; shadowBarrier.IsCollisionEnabled = false; @@ -94,7 +102,7 @@ namespace SceneManager { while (barrierMenu.Visible) { - if (barrierList.Selected || rotateBarrier.Selected || invincible.Selected || barrierTexture.Selected || setBarrierLights.Selected || setBarrierTrafficLight.Selected) + if (barrierList.Selected || rotateBarrier.Selected || invincible.Selected || immobile.Selected || barrierTexture.Selected || setBarrierLights.Selected || setBarrierTrafficLight.Selected) { if (shadowBarrier) { @@ -131,7 +139,7 @@ namespace SceneManager shadowBarrier.Heading = rotateBarrier.Value; shadowBarrier.Position = MousePositionInWorld.GetPositionForBarrier; Rage.Native.NativeFunction.Natives.PLACE_OBJECT_ON_GROUND_PROPERLY(shadowBarrier); - Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); } void DisableBarrierMenuOptionsIfShadowConeTooFar() @@ -163,48 +171,64 @@ namespace SceneManager private static void SpawnBarrier() { - if(barrierList.SelectedItem == "Flare") + GameFiber.StartNew(() => { - SpawnFlare(); - } - else - { - var barrier = new Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); - barrier.SetPositionWithSnap(shadowBarrier.Position); - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(barrier, true); - barrier.IsPositionFrozen = false; - if (invincible.Checked) + if (barrierList.SelectedItem == "Flare") { - Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true); - if(barrier.Model.Name != "prop_barrier_wat_03a") - { - Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(barrier, true); - } + SpawnFlare(); } - if (Settings.EnableAdvancedBarricadeOptions) + else { - Rage.Native.NativeFunction.Natives.x971DA0055324D033(barrier, barrierTexture.Value); - if (setBarrierLights.Checked) + var barrier = new Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); + barrier.SetPositionWithSnap(shadowBarrier.Position); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(barrier, true); + if (invincible.Checked) { - Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(barrier, false); + Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true); + if (barrier.Model.Name != "prop_barrier_wat_03a") + { + Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(barrier, true); + } + } + if (immobile.Checked) + { + barrier.IsPositionFrozen = true; } else { - Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(barrier, true); - } - Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(barrier, setBarrierTrafficLight.Index); - barrier.IsPositionFrozen = true; - GameFiber.Sleep(50); - if (barrier) - { barrier.IsPositionFrozen = false; } + if (Settings.EnableAdvancedBarricadeOptions) + { + Rage.Native.NativeFunction.Natives.x971DA0055324D033(barrier, barrierTexture.Value); + if (setBarrierLights.Checked) + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(barrier, false); + } + else + { + Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(barrier, true); + } + + //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(barrier, setBarrierTrafficLight.Index); + barrier.IsPositionFrozen = true; + GameFiber.Sleep(50); + if (barrier && !immobile.Checked) + { + barrier.IsPositionFrozen = false; + } + } + barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading, invincible.Checked, immobile.Checked)); + //if (barriers.First().Object == barrier) + //{ + // barriers.First().GoAround(); + //} + removeBarrierOptions.Enabled = true; + resetBarriers.Enabled = true; } - barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading)); - removeBarrierOptions.Enabled = true; - resetBarriers.Enabled = true; - } + }, "Scene Manager Spawn Barrier Fiber"); + void SpawnFlare() { @@ -224,7 +248,7 @@ namespace SceneManager } }); - barriers.Add(new Barrier(flare, flare.Position, flare.Heading)); + barriers.Add(new Barrier(flare, flare.Position, flare.Heading, invincible.Checked, immobile.Checked)); removeBarrierOptions.Enabled = true; } } @@ -270,31 +294,41 @@ namespace SceneManager private static void ResetBarriers() { - var currentBarriers = barriers.Where(b => b.Model.Name != "0xa2c44e80").ToList(); // 0xa2c44e80 is the flare weapon hash - foreach (Barrier barrier in currentBarriers) + GameFiber.StartNew(() => { - var newBarrier = new Rage.Object(barrier.Model, barrier.Position, barrier.Rotation); - newBarrier.SetPositionWithSnap(barrier.Position); - Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); - newBarrier.IsPositionFrozen = false; - Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); - Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(newBarrier, setBarrierTrafficLight.Index); - newBarrier.IsPositionFrozen = true; - GameFiber.Sleep(50); - if (newBarrier) + var currentBarriers = barriers.Where(b => b.Model.Name != "0xa2c44e80").ToList(); // 0xa2c44e80 is the flare weapon hash + foreach (Barrier barrier in currentBarriers) { - newBarrier.IsPositionFrozen = false; - } - barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading)); + var newBarrier = new Object(barrier.Model, barrier.Position, barrier.Rotation); + newBarrier.SetPositionWithSnap(barrier.Position); + Rage.Native.NativeFunction.Natives.SET_ENTITY_DYNAMIC(newBarrier, true); + newBarrier.IsPositionFrozen = barrier.Immobile; + if (barrier.Invincible) + { + Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(newBarrier, true); + if (newBarrier.Model.Name != "prop_barrier_wat_03a") + { + Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(newBarrier, true); + } + } + //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(newBarrier, setBarrierTrafficLight.Index); + newBarrier.IsPositionFrozen = true; + GameFiber.Sleep(50); + if (newBarrier && !barrier.Immobile) + { + newBarrier.IsPositionFrozen = false; + } + barriers.Add(new Barrier(newBarrier, newBarrier.Position, newBarrier.Heading, barrier.Invincible, barrier.Immobile)); - - if (barrier.Object) - { - barrier.Object.Delete(); + if (barrier.Object) + { + barrier.Object.Delete(); + } + barriers.Remove(barrier); } - barriers.Remove(barrier); - } - currentBarriers.Clear(); + currentBarriers.Clear(); + }); + } private static void SetBarrierLights() @@ -308,7 +342,7 @@ namespace SceneManager Rage.Native.NativeFunction.Natives.SET_ENTITY_LIGHTS(shadowBarrier, true); } - Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); + //Rage.Native.NativeFunction.Natives.SET_ENTITY_TRAFFICLIGHT_OVERRIDE(shadowBarrier, setBarrierTrafficLight.Index); } private static void BarrierMenu_OnCheckboxChanged(UIMenu sender, UIMenuCheckboxItem checkbox, bool @checked) @@ -378,13 +412,6 @@ namespace SceneManager private static void BarrierMenu_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { barrierList, barrierTexture, setBarrierTrafficLight, rotateBarrier, removeBarrierOptions }; - var checkboxItems = new Dictionary() { { invincible, null }, {setBarrierLights, SetBarrierLights} }; - var selectItems = new Dictionary() - { - { barrierList, SpawnBarrier }, - { removeBarrierOptions, RemoveBarrier }, - { resetBarriers, ResetBarriers }, - }; Hints.Display($"~o~Scene Manager ~y~[Hint]\n~w~The shadow barrier will disappear if you aim too far away."); CreateShadowBarrier(); From b6ad2c031a77204c303fd14c9999cc50470c7fc9 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:25:30 -0700 Subject: [PATCH 54/74] ExportPath hidden for V2.2.0 release --- SceneManager/Menus/EditPathMenu.cs | 39 ++++++++---------------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/SceneManager/Menus/EditPathMenu.cs b/SceneManager/Menus/EditPathMenu.cs index d0fa637..01a672f 100644 --- a/SceneManager/Menus/EditPathMenu.cs +++ b/SceneManager/Menus/EditPathMenu.cs @@ -1,16 +1,16 @@ using System.Collections.Generic; using System.Drawing; -using System.IO; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; +using SceneManager.Utils; namespace SceneManager { class EditPathMenu { internal static UIMenu editPathMenu = new UIMenu("Scene Manager", "~o~Edit Path"); - private static UIMenuItem editPathWaypoints, deletePath, savePath; + private static UIMenuItem editPathWaypoints, deletePath, exportPath; internal static UIMenuCheckboxItem disablePath; internal static void InstantiateMenu() @@ -29,8 +29,8 @@ namespace SceneManager editPathWaypoints.ForeColor = Color.Gold; editPathMenu.AddItem(deletePath = new UIMenuItem("Delete Path")); deletePath.ForeColor = Color.Gold; - editPathMenu.AddItem(savePath = new UIMenuItem("Export Path")); - savePath.ForeColor = Color.Gold; + //editPathMenu.AddItem(exportPath = new UIMenuItem("Export Path")); + //exportPath.ForeColor = Color.Gold; editPathMenu.RefreshIndex(); } @@ -46,7 +46,7 @@ namespace SceneManager private static void DeletePath() { var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; - PathMainMenu.DeletePath(currentPath, PathMainMenu.Delete.Single); + PathMainMenu.DeletePath(currentPath, Delete.Single); } private static void DisablePath() @@ -66,30 +66,19 @@ namespace SceneManager private static void ExportPath() { + var currentPath = PathMainMenu.paths[PathMainMenu.editPath.Index]; // Reference PNWParks's UserInput class from LiveLights - string filename = PNWUserInput.GetUserInput("Type the name you would like to save your file as", "Enter a filename", 100); + var filename = PNWUserInput.GetUserInput("Type the name you would like to save your file as", "Enter a filename", 100) + ".xml"; // If filename != null or empty, check if export directory exists (GTA V/Plugins/SceneManager/Saved Paths) if(string.IsNullOrWhiteSpace(filename)) { + Game.DisplayHelp($"Invalid filename given. Filename cannot be null, empty, or consist of just white spaces."); Game.LogTrivial($"Invalid filename given. Filename cannot be null, empty, or consist of just white spaces."); return; } Game.LogTrivial($"Filename: {filename}"); - - // If directory does not exist, create it - var gameDirectory = Directory.GetCurrentDirectory(); - var pathDirectoryExists = Directory.Exists(gameDirectory + "/plugins/SceneManager/Saved Paths"); - if (!pathDirectoryExists) - { - Directory.CreateDirectory(gameDirectory + "/plugins/SceneManager/Saved Paths"); - Game.LogTrivial($"New directory created at '/plugins/SceneManager/Saved Paths'"); - } - - // Create XML in save directory with user's filename, saving all path information - // - // - // + currentPath.Save(filename); } private static void EditPath_OnItemSelected(UIMenu sender, UIMenuItem selectedItem, int index) @@ -104,7 +93,7 @@ namespace SceneManager DeletePath(); } - if(selectedItem == savePath) + if(selectedItem == exportPath) { ExportPath(); } @@ -121,14 +110,6 @@ namespace SceneManager private static void EditPath_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { }; - var checkboxItems = new Dictionary() { { disablePath, DisablePath } }; - var selectItems = new Dictionary() - { - { editPathWaypoints, EditPathWaypoints }, - { deletePath, DeletePath }, - { savePath, ExportPath } - }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } From b7a5cf7cc066f3d421cad72fb846536e2a8a99e1 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:26:35 -0700 Subject: [PATCH 55/74] Added using for SceneManager.Object and SceneManager.Utils. Removed unnecessary code for RNUIMouseInputHandler after having added InputManager dependency. --- SceneManager/Menus/EditWaypointMenu.cs | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/SceneManager/Menus/EditWaypointMenu.cs b/SceneManager/Menus/EditWaypointMenu.cs index 9b91466..4413b08 100644 --- a/SceneManager/Menus/EditWaypointMenu.cs +++ b/SceneManager/Menus/EditWaypointMenu.cs @@ -4,6 +4,8 @@ using System.Linq; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; +using SceneManager.Objects; +using SceneManager.Utils; namespace SceneManager { @@ -128,7 +130,7 @@ namespace SceneManager if (currentPath.Waypoints.Count == 1) { Game.LogTrivial($"Deleting the last waypoint from the path."); - PathMainMenu.DeletePath(currentPath, PathMainMenu.Delete.Single); + PathMainMenu.DeletePath(currentPath, Delete.Single); editWaypointMenu.Visible = false; PathMainMenu.pathMainMenu.Visible = true; @@ -291,20 +293,6 @@ namespace SceneManager private static void EditWaypoint_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { editWaypoint, changeWaypointSpeed, changeCollectorRadius, changeSpeedZoneRadius }; - var checkboxItems = new Dictionary() - { - { collectorWaypoint, UpdateCollectorMenuOptionsStatus }, - { stopWaypointType, null }, - { directWaypointBehavior, null }, - { updateWaypointPosition, null } - }; - var selectItems = new Dictionary() - { - { updateWaypoint, UpdateWaypoint }, - { removeWaypoint, RemoveWaypoint }, - { addAsNewWaypoint, AddAsNewWaypoint } - }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems); } From cd41c9f24045e63d1bf0fa2903b723b158fb1245 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:26:55 -0700 Subject: [PATCH 56/74] Added using for SceneManager.Utils. Removed unnecessary code for RNUIMouseInputHandler after having added InputManager dependency. --- SceneManager/Menus/MainMenu.cs | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/SceneManager/Menus/MainMenu.cs b/SceneManager/Menus/MainMenu.cs index 5241d4c..229ce5f 100644 --- a/SceneManager/Menus/MainMenu.cs +++ b/SceneManager/Menus/MainMenu.cs @@ -1,16 +1,14 @@ -using Rage; -using RAGENativeUI; +using RAGENativeUI; using RAGENativeUI.Elements; using System.Collections.Generic; using System.Drawing; -using System.Linq; -using System.Windows.Forms; +using SceneManager.Utils; namespace SceneManager { class MainMenu { - public static UIMenu mainMenu { get; private set; } + internal static UIMenu mainMenu { get; private set; } private static UIMenuItem navigateToPathMenu, navigateToBarrierMenu, navigateToSettingsMenu; internal static void InstantiateMenu() @@ -24,9 +22,11 @@ namespace SceneManager mainMenu.AddItem(navigateToPathMenu = new UIMenuItem("Path Menu")); navigateToPathMenu.ForeColor = Color.Gold; mainMenu.BindMenuToItem(PathMainMenu.pathMainMenu, navigateToPathMenu); + mainMenu.AddItem(navigateToBarrierMenu = new UIMenuItem("Barrier Menu")); navigateToBarrierMenu.ForeColor = Color.Gold; mainMenu.BindMenuToItem(BarrierMenu.barrierMenu, navigateToBarrierMenu); + mainMenu.AddItem(navigateToSettingsMenu = new UIMenuItem("Settings")); navigateToSettingsMenu.ForeColor = Color.Gold; mainMenu.BindMenuToItem(SettingsMenu.settingsMenu, navigateToSettingsMenu); @@ -35,32 +35,9 @@ namespace SceneManager mainMenu.OnMenuOpen += MainMenu_OnMenuOpen; } - private static void ShowPathMainMenu() - { - PathMainMenu.pathMainMenu.Visible = true; - } - - private static void ShowBarrierMenu() - { - BarrierMenu.barrierMenu.Visible = true; - } - - private static void ShowSettingsMenu() - { - SettingsMenu.settingsMenu.Visible = true; - } - private static void MainMenu_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { }; - var checkboxItems = new Dictionary() { }; - var selectItems = new Dictionary() - { - { navigateToPathMenu, ShowPathMainMenu }, - { navigateToBarrierMenu, ShowBarrierMenu }, - { navigateToSettingsMenu, ShowSettingsMenu } - }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } From 23a0b0040e00801089c5eb5b0e10899b9c861e3c Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:27:50 -0700 Subject: [PATCH 57/74] Changed class and methods from public to internal --- SceneManager/Menus/MenuManager.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/SceneManager/Menus/MenuManager.cs b/SceneManager/Menus/MenuManager.cs index 4bbe856..6b8edf1 100644 --- a/SceneManager/Menus/MenuManager.cs +++ b/SceneManager/Menus/MenuManager.cs @@ -1,12 +1,16 @@ using RAGENativeUI; +using RAGENativeUI.Elements; +using System.Collections.Generic; +using System.Drawing; namespace SceneManager { - public static class MenuManager + internal static class MenuManager { - public static MenuPool menuPool = new MenuPool(); + internal static MenuPool menuPool = new MenuPool(); + internal static Dictionary> menus = new Dictionary>(); - public static void InstantiateMenus() + internal static void InstantiateMenus() { MainMenu.InstantiateMenu(); SettingsMenu.InstantiateMenu(); From dbf4c3452da27d0f42391adcb2ef7b7ddcf0aed9 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:28:02 -0700 Subject: [PATCH 58/74] Added using for SceneManager.Object and SceneManager.Utils. Removed unnecessary code for RNUIMouseInputHandler after having added InputManager dependency. --- SceneManager/Menus/PathCreationMenu.cs | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/SceneManager/Menus/PathCreationMenu.cs b/SceneManager/Menus/PathCreationMenu.cs index 56553ad..efea706 100644 --- a/SceneManager/Menus/PathCreationMenu.cs +++ b/SceneManager/Menus/PathCreationMenu.cs @@ -1,12 +1,11 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Drawing; using System.Linq; -using System.Net.Configuration; -using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; +using SceneManager.Utils; +using SceneManager.Objects; namespace SceneManager { @@ -313,19 +312,6 @@ namespace SceneManager private static void PathCreation_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { collectorRadius, speedZoneRadius, waypointSpeed }; - var checkboxItems = new Dictionary() - { - { collectorWaypoint, UpdateCollectorMenuOptionsStatus}, - { stopWaypointType, null}, - { directWaypointBehavior, null} - }; - var selectItems = new Dictionary() - { - { trafficAddWaypoint, AddNewWaypoint }, - { trafficRemoveWaypoint, RemoveWaypoint }, - { trafficEndPath, EndPath } - }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } From 39f7bf6b95b7e54d601adad97d5c0e579674bc7c Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:28:43 -0700 Subject: [PATCH 59/74] Added using for SceneManager.Object and SceneManager.Utils. Removed unnecessary code for RNUIMouseInputHandler after having added InputManager dependency. ImportPath menu item hidden for release. --- SceneManager/Menus/PathMainMenu.cs | 41 ++++++++---------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/SceneManager/Menus/PathMainMenu.cs b/SceneManager/Menus/PathMainMenu.cs index 6f348fc..79b0c8a 100644 --- a/SceneManager/Menus/PathMainMenu.cs +++ b/SceneManager/Menus/PathMainMenu.cs @@ -1,37 +1,29 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Drawing; using System.Linq; -using System.Windows.Forms; using Rage; using RAGENativeUI; using RAGENativeUI.Elements; +using SceneManager.Objects; +using SceneManager.Utils; namespace SceneManager { - - - static class PathMainMenu + internal static class PathMainMenu { - internal static List paths = new List() { }; + internal static List paths = new List(); + internal static List importedPaths = new List(); private static string[] dismissOptions = new string[] { "From path", "From waypoint", "From world" }; - //private static List dismissOptions = new List() { "From path", "From waypoint", "From world" }; - internal static UIMenu pathMainMenu = new UIMenu("Scene Manager", "~o~Path Manager Main Menu"); internal static UIMenuItem createNewPath; + internal static UIMenuListScrollerItem importPath; internal static UIMenuItem deleteAllPaths = new UIMenuItem("Delete All Paths"); internal static UIMenuNumericScrollerItem editPath; internal static UIMenuListScrollerItem directOptions = new UIMenuListScrollerItem("Direct driver to path's", "", new[] { "First waypoint", "Nearest waypoint" }); internal static UIMenuNumericScrollerItem directDriver; - internal static UIMenuListScrollerItem dismissDriver = new UIMenuListScrollerItem("Dismiss nearest driver", $"~b~From path: ~w~AI will be released from the path{Environment.NewLine}~b~From waypoint: ~w~AI will skip their current waypoint task{Environment.NewLine}~b~From world: ~w~AI will be removed from the world.", dismissOptions); + internal static UIMenuListScrollerItem dismissDriver = new UIMenuListScrollerItem("Dismiss nearest driver", $"~b~From path: ~w~AI will be released from the path\n~b~From waypoint: ~w~AI will skip their current waypoint task\n~b~From world: ~w~AI will be removed from the world.", dismissOptions); internal static UIMenuCheckboxItem disableAllPaths = new UIMenuCheckboxItem("Disable All Paths", false); - internal enum Delete - { - Single, - All - } - internal static void InstantiateMenu() { pathMainMenu.ParentMenu = MainMenu.mainMenu; @@ -48,8 +40,9 @@ namespace SceneManager pathMainMenu.AddItem(createNewPath = new UIMenuItem("Create New Path")); createNewPath.ForeColor = Color.Gold; + //pathMainMenu.AddItem(importPath = new UIMenuListScrollerItem("Import Path", "Import a saved path", importedPaths)); + //importPath.ForeColor = Color.Gold; pathMainMenu.AddItem(editPath = new UIMenuNumericScrollerItem("Edit Path", "", 1, paths.Count, 1)); - editPath.Index = 0; editPath.ForeColor = Color.Gold; pathMainMenu.AddItem(disableAllPaths); disableAllPaths.Enabled = true; @@ -421,20 +414,6 @@ namespace SceneManager private static void PathMenu_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { directOptions, directDriver, dismissDriver, editPath }; - var checkboxItems = new Dictionary() - { - { disableAllPaths, DisableAllPaths } - }; - - var selectItems = new Dictionary() - { - { createNewPath, GoToPathCreationMenu }, - { editPath, GoToEditPathMenu }, - { deleteAllPaths, DeleteAllPaths }, - { directDriver, DirectDriver }, - { dismissDriver, DismissDriver } - }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } From a2b935659fcc266c025feca724b8bb23d7e13a49 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:28:51 -0700 Subject: [PATCH 60/74] Added using for SceneManager.Object and SceneManager.Utils. Removed unnecessary code for RNUIMouseInputHandler after having added InputManager dependency. --- SceneManager/Menus/SettingsMenu.cs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/SceneManager/Menus/SettingsMenu.cs b/SceneManager/Menus/SettingsMenu.cs index a639943..34cf754 100644 --- a/SceneManager/Menus/SettingsMenu.cs +++ b/SceneManager/Menus/SettingsMenu.cs @@ -3,8 +3,8 @@ using RAGENativeUI; using RAGENativeUI.Elements; using System; using System.Collections.Generic; -using System.Linq; -using System.Windows.Forms; +using SceneManager.Objects; +using SceneManager.Utils; namespace SceneManager { @@ -109,17 +109,6 @@ namespace SceneManager private static void SettingsMenu_OnMenuOpen(UIMenu menu) { var scrollerItems = new List { speedUnits }; - var checkboxItems = new Dictionary() - { - { threeDWaypoints, null}, - { mapBlips, ToggleMapBlips}, - { hints, ToggleHints} - }; - var selectItems = new Dictionary() - { - { saveSettings, ToggleSettings } - }; - RNUIMouseInputHandler.Initialize(menu, scrollerItems); } } From 8ae65246f8be37825e652c00c1fd5b1a6c0c64ce Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:29:50 -0700 Subject: [PATCH 61/74] Renamed Object Classes folder to Objects --- SceneManager/Object Classes/Barrier.cs | 21 ------ SceneManager/Objects/Barrier.cs | 72 +++++++++++++++++++ .../CollectedVehicle.cs | 45 ++++++------ .../{Object Classes => Objects}/Path.cs | 37 ++++++---- .../{Object Classes => Objects}/Waypoint.cs | 23 +++--- 5 files changed, 134 insertions(+), 64 deletions(-) delete mode 100644 SceneManager/Object Classes/Barrier.cs create mode 100644 SceneManager/Objects/Barrier.cs rename SceneManager/{Object Classes => Objects}/CollectedVehicle.cs (95%) rename SceneManager/{Object Classes => Objects}/Path.cs (90%) rename SceneManager/{Object Classes => Objects}/Waypoint.cs (96%) diff --git a/SceneManager/Object Classes/Barrier.cs b/SceneManager/Object Classes/Barrier.cs deleted file mode 100644 index d894caf..0000000 --- a/SceneManager/Object Classes/Barrier.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using Rage; - -namespace SceneManager -{ - class Barrier - { - internal Rage.Object Object { get; } - internal Model @Model{ get; } - internal Vector3 Position { get; } - internal float Rotation { get; } - - internal Barrier(Rage.Object barrier, Vector3 barrierPosition, float barrierRotation) - { - Object = barrier; - @Model = barrier.Model; - Position = barrierPosition; - Rotation = barrierRotation; - } - } -} diff --git a/SceneManager/Objects/Barrier.cs b/SceneManager/Objects/Barrier.cs new file mode 100644 index 0000000..327c852 --- /dev/null +++ b/SceneManager/Objects/Barrier.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Rage; +using SceneManager.Utils; + +namespace SceneManager.Objects +{ + class Barrier + { + internal Rage.Object Object { get; } + internal Model @Model{ get; } + internal Vector3 Position { get; } + internal float Rotation { get; } + internal bool Invincible { get; } + + internal bool Immobile { get; } + + internal Barrier(Rage.Object barrier, Vector3 barrierPosition, float barrierRotation, bool invincible, bool immobile) + { + Object = barrier; + @Model = barrier.Model; + Position = barrierPosition; + Rotation = barrierRotation; + Invincible = invincible; + Immobile = immobile; + //AddBlocker(); + } + + private void AddBlocker() + { + var blocker = new Rage.Object("prop_barier_conc_01a", Position, Rotation); + blocker.AttachTo(Object, 0, new Vector3(0, 0, 0), new Rotator()); + GameFiber.StartNew(() => + { + while (Object) + { + GameFiber.Yield(); + } + blocker.Delete(); + }); + } + + internal void GoAround() + { + GameFiber.StartNew(() => + { + var collected = new List(); + while (Object) + { + foreach (Vehicle v in World.GetAllVehicles()) + { + if(v && v.IsEngineOn) + { + if(v.HasDriver && v.Driver && v.Driver.IsAlive) + { + if (!collected.Contains(v)) + { + v.Driver.Tasks.Clear(); + v.Driver.Tasks.CruiseWithVehicle(5f, (VehicleDrivingFlags)17039872); + v.Driver.KeepTasks = true; + collected.Add(v); + } + } + } + } + GameFiber.Sleep(1000); + } + }); + } + } +} diff --git a/SceneManager/Object Classes/CollectedVehicle.cs b/SceneManager/Objects/CollectedVehicle.cs similarity index 95% rename from SceneManager/Object Classes/CollectedVehicle.cs rename to SceneManager/Objects/CollectedVehicle.cs index 914d33d..a43ca29 100644 --- a/SceneManager/Object Classes/CollectedVehicle.cs +++ b/SceneManager/Objects/CollectedVehicle.cs @@ -1,8 +1,9 @@ using Rage; using System.Collections.Generic; using System.Linq; +using SceneManager.Utils; -namespace SceneManager +namespace SceneManager.Objects { internal class CollectedVehicle { @@ -64,7 +65,7 @@ namespace SceneManager DriveToNextWaypoint(); } - if (!VehicleAndDriverAreValid() || Directed) + if (!Dismissed && !VehicleAndDriverAreValid() || Directed) { return; } @@ -251,11 +252,6 @@ namespace SceneManager void StopAtWaypoint() { - if (!VehicleAndDriverAreValid()) - { - return; - } - var stoppingDistance = GetAcceptedStoppingDistance(currentWaypoint.Path.Waypoints, currentWaypoint.Path.Waypoints.IndexOf(currentWaypoint)); Game.LogTrivial($"{Vehicle.Model.Name} stopping at path {currentWaypoint.Path.Number} waypoint."); Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, stoppingDistance, -1, true); @@ -280,14 +276,15 @@ namespace SceneManager Game.LogTrivial($"CollectedVehicle is null"); return false; } - if (!Vehicle && !Dismissed) + if (!Vehicle)// && !Dismissed) { Game.LogTrivial($"Vehicle is null"); Dismiss(); return false; } - if (!Driver || !Driver.IsAlive) + if (!Driver || !Driver.CurrentVehicle || !Driver.IsAlive) { + Game.LogTrivial($"Driver is null or dead or not in a vehicle"); Dismiss(); return false; } @@ -297,8 +294,14 @@ namespace SceneManager internal void Dismiss(DismissOption dismissOption = DismissOption.FromPath, Path newPath = null) { - if (!Vehicle || !Driver) + if (!Vehicle) { + Game.LogTrivial($"Vehicle is null."); + return; + } + if (!Driver) + { + Game.LogTrivial($"Driver is null."); return; } @@ -311,27 +314,27 @@ namespace SceneManager if (dismissOption == DismissOption.FromPlayer) { Dismissed = true; - if (Driver) - { + //if (Driver) + //{ Driver.Dismiss(); - } - if (Vehicle) - { + //} + //if (Vehicle) + //{ Vehicle.Dismiss(); Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Vehicle, 0f, 1, true); - } + //} Path.CollectedVehicles.Remove(this); return; } - if(Vehicle && StoppedAtWaypoint) + if(Driver.CurrentVehicle && StoppedAtWaypoint) { StoppedAtWaypoint = false; - Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Driver.CurrentVehicle, 0f, 1, true); - if (Driver?.CurrentVehicle) - { + Rage.Native.NativeFunction.Natives.x260BE8F09E326A20(Driver.LastVehicle, 0f, 1, true); + //if (Driver) + //{ Driver.Tasks.CruiseWithVehicle(5f); - } + //} } Driver.Tasks.Clear(); diff --git a/SceneManager/Object Classes/Path.cs b/SceneManager/Objects/Path.cs similarity index 90% rename from SceneManager/Object Classes/Path.cs rename to SceneManager/Objects/Path.cs index b439a92..ac59c7f 100644 --- a/SceneManager/Object Classes/Path.cs +++ b/SceneManager/Objects/Path.cs @@ -3,18 +3,27 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; +using System.Xml.Serialization; +using SceneManager.Utils; +using System.IO; -namespace SceneManager +namespace SceneManager.Objects { - public class Path + internal class Path // Change this to Public for import/export { internal int Number { get; set; } internal bool IsEnabled { get; set; } internal State State { get; set; } - internal List Waypoints = new List(); + + [XmlArray("Waypoints")] + [XmlArrayItem("Waypoint")] + public List Waypoints { get; set; } = new List(); + internal List CollectedVehicles = new List(); private List _blacklistedVehicles = new List(); + private Path() { } + internal Path(int pathNum, State pathState) { Number = pathNum; @@ -22,6 +31,18 @@ namespace SceneManager DrawLinesBetweenWaypoints(); } + internal void Save(string filename) + { + var GAME_DIRECTORY = Directory.GetCurrentDirectory(); + var SAVED_PATHS_DIRECTORY = GAME_DIRECTORY + "/plugins/SceneManager/Saved Paths/"; + if (!Directory.Exists(SAVED_PATHS_DIRECTORY)) + { + Directory.CreateDirectory(SAVED_PATHS_DIRECTORY); + Game.LogTrivial($"New directory created at '/plugins/SceneManager/Saved Paths'"); + } + PathXMLManager.SaveItemToXML(this, SAVED_PATHS_DIRECTORY + filename); + } + private void LowerWaypointBlipsOpacity() { foreach (Waypoint wp in Waypoints) @@ -199,22 +220,14 @@ namespace SceneManager } if (v.HasDriver && v.Driver) { - //Game.LogTrivial($"Driver task status: {v.Driver.Tasks.CurrentTaskStatus}"); if(!v.Driver.IsAlive) { Game.LogTrivial($"Vehicle's driver is dead."); _blacklistedVehicles.Add(v); return false; } - if(v.Driver.IsPersistent) // Persistent drivers are likely spawned from another script and doing something important. + if (v.IsPoliceVehicle && !v.Driver.IsAmbient()) { - Game.LogTrivial($"Vehicle's driver is already persistent and probably being handled by another plugin."); - _blacklistedVehicles.Add(v); - return false; - } - if (v.Driver.Tasks.CurrentTaskStatus == TaskStatus.InProgress && !Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(v.Driver, 151)) // Drivers with a non-wander task are probably doing something important - { - Game.LogTrivial($"Vehicle's driver is already tasked and probably being handled by another plugin."); _blacklistedVehicles.Add(v); return false; } diff --git a/SceneManager/Object Classes/Waypoint.cs b/SceneManager/Objects/Waypoint.cs similarity index 96% rename from SceneManager/Object Classes/Waypoint.cs rename to SceneManager/Objects/Waypoint.cs index 279a4ed..1048df4 100644 --- a/SceneManager/Object Classes/Waypoint.cs +++ b/SceneManager/Objects/Waypoint.cs @@ -1,25 +1,28 @@ using Rage; using System.Drawing; using System.Linq; +using SceneManager.Utils; -namespace SceneManager +namespace SceneManager.Objects { - public class Waypoint + internal class Waypoint // Change this to Public for import/export { internal Path Path { get; set; } - internal int Number { get; set; } - internal Vector3 Position { get; set; } - internal float Speed { get; set; } - internal DrivingFlagType DrivingFlagType { get; private set; } - internal bool IsStopWaypoint { get; set; } + public int Number { get; set; } + public Vector3 Position { get; set; } + public float Speed { get; set; } + public DrivingFlagType DrivingFlagType { get; set; } + public bool IsStopWaypoint { get; set; } internal Blip Blip { get; } - internal bool IsCollector { get; set; } - internal float CollectorRadius { get; set; } + public bool IsCollector { get; set; } + public float CollectorRadius { get; set; } internal Blip CollectorRadiusBlip { get; set; } - internal float SpeedZoneRadius { get; set; } + public float SpeedZoneRadius { get; set; } internal uint SpeedZone { get; set; } internal bool EnableWaypointMarker { get; set; } = true; + private Waypoint() { } + internal Waypoint(Path path, int waypointNum, Vector3 waypointPos, float speed, DrivingFlagType drivingFlag, bool stopWaypoint, Blip waypointBlip, bool collector = false, float collectorRadius = 1, float speedZoneRadius = 5) { Path = path; From cc74c125f4b4f5e4940e3cd61ef39a64ff218019 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:30:11 -0700 Subject: [PATCH 62/74] Updated version. --- SceneManager/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SceneManager/Properties/AssemblyInfo.cs b/SceneManager/Properties/AssemblyInfo.cs index 2e09a23..61eac82 100644 --- a/SceneManager/Properties/AssemblyInfo.cs +++ b/SceneManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.1.1.2")] -[assembly: AssemblyFileVersion("2.1.1.2")] +[assembly: AssemblyVersion("2.2.0.0")] +[assembly: AssemblyFileVersion("2.2.0.0")] From d337f5ae21c8aac11dfdb53b03a37d3972d376b4 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:30:22 -0700 Subject: [PATCH 63/74] Added GetPedsActiveTasks command --- SceneManager/Utils/ConsoleCommands.cs | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 SceneManager/Utils/ConsoleCommands.cs diff --git a/SceneManager/Utils/ConsoleCommands.cs b/SceneManager/Utils/ConsoleCommands.cs new file mode 100644 index 0000000..e812c52 --- /dev/null +++ b/SceneManager/Utils/ConsoleCommands.cs @@ -0,0 +1,52 @@ +using Rage; +using Rage.Attributes; +using Rage.ConsoleCommands.AutoCompleters; +using System.Linq; +using SceneManager.Objects; +using System; +using System.Collections.Generic; + +namespace SceneManager.Utils +{ + internal static class ConsoleCommands + { + [ConsoleCommand] + internal static void Command_ShowCollectedVehicleInfo([ConsoleCommandParameter(AutoCompleterType = typeof(ConsoleCommandAutoCompleterVehicle), Name = "ShowCollectedVehicleInfo")] Vehicle vehicle) + { + foreach(Path path in PathMainMenu.paths) + { + var collectedVehicle = path.CollectedVehicles.Where(v => v.Vehicle == vehicle).FirstOrDefault(); + if(collectedVehicle != null) + { + Game.LogTrivial($"Vehicle: {collectedVehicle.Vehicle.Model.Name} [{collectedVehicle.Vehicle.Handle}]"); + Rage.Native.NativeFunction.Natives.xA6E9C38DB51D7748(collectedVehicle.Vehicle, out uint script); + Game.LogTrivial($"Vehicle spawned by: {script}"); + Game.LogTrivial($"Driver handle: {collectedVehicle.Driver.Handle}"); + Game.LogTrivial($"Path: {collectedVehicle.Path.Number}"); + Game.LogTrivial($"Current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); + Game.LogTrivial($"StoppedAtWaypoint: {collectedVehicle.StoppedAtWaypoint}"); + Game.LogTrivial($"SkipWaypoint: {collectedVehicle.SkipWaypoint}"); + Game.LogTrivial($"ReadyForDirectTasks: {collectedVehicle.ReadyForDirectTasks}"); + Game.LogTrivial($"Directed: {collectedVehicle.Directed}"); + Game.LogTrivial($"Dismissed: {collectedVehicle.Dismissed}"); + Game.LogTrivial($"Task status: {collectedVehicle.Driver.Tasks.CurrentTaskStatus}"); + return; + } + } + Game.LogTrivial($"{vehicle.Model.Name} [{vehicle.Handle}] was not found collected by any path."); + } + + [ConsoleCommand] + internal static void Command_GetPedsActiveTasks([ConsoleCommandParameter(AutoCompleterType = typeof(ConsoleCommandAutoCompleterPedAliveOnly), Name = "GetPedsActiveTasks")] Ped ped) + { + var tasks = new List(); + foreach (PedTask task in (PedTask[])Enum.GetValues(typeof(PedTask))) + { + if(Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, (int)task)) + { + Game.LogTrivial($"Ped [{ped.Handle}] active task: {task} ({(int)task})"); + } + } + } + } +} From 1c8a612a0be52149af8b792e74dec36747bdf511 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:30:47 -0700 Subject: [PATCH 64/74] Added extension IsAmbient to check if peds are ambient before being collected by paths. --- SceneManager/Utils/Extensions.cs | 100 +++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 SceneManager/Utils/Extensions.cs diff --git a/SceneManager/Utils/Extensions.cs b/SceneManager/Utils/Extensions.cs new file mode 100644 index 0000000..2656499 --- /dev/null +++ b/SceneManager/Utils/Extensions.cs @@ -0,0 +1,100 @@ +using Rage; + +namespace SceneManager.Utils +{ + internal enum PedType + { + /// Any ped + /// + Any = 0, + /// Cop peds + /// + Cop = 1, + //Firefigher = 2, + //EMS = 3 + } + + /// A collection of potentially useful code snippets for GTA/LSPDFR development. + /// + internal static class Extensions + { + /// Determines if a ped can be considered ambient. Checks any type of ped by default. + /// + internal static bool IsAmbient(this Ped ped, PedType pedType = 0) + { + // Universal tasks (virtually all peds seem have this) + var taskAmbientClips = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 38); + + // Universal on-foot tasks (virtually all ambient walking peds seem to have this) + var taskComplexControlMovement = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 35); + + // Universal in-vehicle tasks (virtually all ambient driver peds seem to have this) + var taskInVehicleBasic = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 150); + var taskCarDriveWander = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 151); + + // On-foot ambient tasks + var taskPolice = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 58); // From ambient cop (non-freemode) walking around + var taskWanderingScenario = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 100); // From ambient cop walking around + var taskUseScenario = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 118); // From ambient cop standing still + var taskScriptedAnimation = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 134); // From UB ped waiting for interaction + + // In-vehicle controlled tasks + var taskControlVehicle = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped, 169); // From backup unit driving to player + + // If ped relationship group does not contain "cop" then this extension doesn't apply + if (pedType == PedType.Cop && !ped.RelationshipGroup.Name.ToLower().Contains("cop")) + { + Game.LogTrivial($"Ped does not belong to a cop relationship group."); + return false; + } + + // Ped is in a vehicle + if (taskInVehicleBasic) + { + Game.LogTrivial($"Ped is in a vehicle."); + // Ped has a controlled driving task + if (taskControlVehicle) + { + Game.LogTrivial($"Ped has a controlled driving task. (non-ambient)"); + return false; + } + + // Ped has a wander driving task + if (taskCarDriveWander) + { + Game.LogTrivial($"Ped has a wander driving task. (ambient)"); + return true; + } + + // If the ped is in a vehicle but doesn't have a driving task, then it's a passenger. Check if the vehicle's driver has a driving wander task + var driverHasWanderTask = Rage.Native.NativeFunction.Natives.GET_IS_TASK_ACTIVE(ped.CurrentVehicle.Driver, 151); + if (driverHasWanderTask) + { + Game.LogTrivial($"Ped is a passenger. Vehicle's driver has a wander driving task. (ambient)"); + return true; + } + } + + if (ped.IsOnFoot) + { + // UB unit on-foot, waiting for interaction + if (ped.RelationshipGroup.Name == "UBCOP") + { + Game.LogTrivial($"Cop is UB unit. (non-ambient)"); + return false; + } + + // Cop ped walking around or standing still + if ((taskComplexControlMovement && taskWanderingScenario) || (taskAmbientClips && taskUseScenario)) + { + Game.LogTrivial($"Ped is wandering around or standing still. (ambient)"); + return true; + } + } + + // If nothing else returns true before now, then the ped is probably being controlled and doing something else + Game.LogTrivial($"Nothing else has returned true by this point. (non-ambient)"); + return false; + } + } +} From 6bb2506c500c854fc41baefede57423c85387c4b Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:30:59 -0700 Subject: [PATCH 65/74] Refactored enums into one class --- SceneManager/Utils/Enums.cs | 480 ++++++++++++++++++++++++++++++++++++ 1 file changed, 480 insertions(+) create mode 100644 SceneManager/Utils/Enums.cs diff --git a/SceneManager/Utils/Enums.cs b/SceneManager/Utils/Enums.cs new file mode 100644 index 0000000..49faf18 --- /dev/null +++ b/SceneManager/Utils/Enums.cs @@ -0,0 +1,480 @@ +namespace SceneManager.Utils +{ + internal enum Delete + { + Single, + All + } + + internal enum PedTask + { + CTaskHandsUp = 0, + CTaskClimbLadder = 1, + CTaskExitVehicle = 2, + CTaskCombatRoll = 3, + CTaskAimGunOnFoot = 4, + CTaskMovePlayer = 5, + CTaskPlayerOnFoot = 6, + CTaskWeapon = 8, + CTaskPlayerWeapon = 9, + CTaskPlayerIdles = 10, + CTaskAimGun = 12, + CTaskComplex = 12, + CTaskFSMClone = 12, + CTaskMotionBase = 12, + CTaskMove = 12, + CTaskMoveBase = 12, + CTaskNMBehaviour = 12, + CTaskNavBase = 12, + CTaskScenario = 12, + CTaskSearchBase = 12, + CTaskSearchInVehicleBase = 12, + CTaskShockingEvent = 12, + CTaskTrainBase = 12, + CTaskVehicleFSM = 12, + CTaskVehicleGoTo = 12, + CTaskVehicleMissionBase = 12, + CTaskVehicleTempAction = 12, + CTaskPause = 14, + CTaskDoNothing = 15, + CTaskGetUp = 16, + CTaskGetUpAndStandStill = 17, + CTaskFallOver = 18, + CTaskFallAndGetUp = 19, + CTaskCrawl = 20, + CTaskComplexOnFire = 25, + CTaskDamageElectric = 26, + CTaskTriggerLookAt = 28, + CTaskClearLookAt = 29, + CTaskSetCharDecisionMaker = 30, + CTaskSetPedDefensiveArea = 31, + CTaskUseSequence = 32, + CTaskMoveStandStill = 34, + CTaskComplexControlMovement = 35, + CTaskMoveSequence = 36, + CTaskAmbientClips = 38, + CTaskMoveInAir = 39, + CTaskNetworkClone = 40, + CTaskUseClimbOnRoute = 41, + CTaskUseDropDownOnRoute = 42, + CTaskUseLadderOnRoute = 43, + CTaskSetBlockingOfNonTemporaryEvents = 44, + CTaskForceMotionState = 45, + CTaskSlopeScramble = 46, + CTaskGoToAndClimbLadder = 47, + CTaskClimbLadderFully = 48, + CTaskRappel = 49, + CTaskVault = 50, + CTaskDropDown = 51, + CTaskAffectSecondaryBehaviour = 52, + CTaskAmbientLookAtEvent = 53, + CTaskOpenDoor = 54, + CTaskShovePed = 55, + CTaskSwapWeapon = 56, + CTaskGeneralSweep = 57, + CTaskPolice = 58, + CTaskPoliceOrderResponse = 59, + CTaskPursueCriminal = 60, + CTaskArrestPed = 62, + CTaskArrestPed2 = 63, + CTaskBusted = 64, + CTaskFirePatrol = 65, + CTaskHeliOrderResponse = 66, + CTaskHeliPassengerRappel = 67, + CTaskAmbulancePatrol = 68, + CTaskPoliceWantedResponse = 69, + CTaskSwat = 70, + CTaskSwatWantedResponse = 72, + CTaskSwatOrderResponse = 73, + CTaskSwatGoToStagingArea = 74, + CTaskSwatFollowInLine = 75, + CTaskWitness = 76, + CTaskGangPatrol = 77, + CTaskArmy = 78, + CTaskShockingEventWatch = 80, + CTaskShockingEventGoto = 82, + CTaskShockingEventHurryAway = 83, + CTaskShockingEventReactToAircraft = 84, + CTaskShockingEventReact = 85, + CTaskShockingEventBackAway = 86, + CTaskShockingPoliceInvestigate = 87, + CTaskShockingEventStopAndStare = 88, + CTaskShockingNiceCarPicture = 89, + CTaskShockingEventThreatResponse = 90, + CTaskTakeOffHelmet = 92, + CTaskCarReactToVehicleCollision = 93, + CTaskCarReactToVehicleCollisionGetOut = 95, + CTaskDyingDead = 97, + CTaskWanderingScenario = 100, + CTaskWanderingInRadiusScenario = 101, + CTaskMoveBetweenPointsScenario = 103, + CTaskChatScenario = 104, + CTaskCowerScenario = 106, + CTaskDeadBodyScenario = 107, + CTaskSayAudio = 114, + CTaskWaitForSteppingOut = 116, + CTaskCoupleScenario = 117, + CTaskUseScenario = 118, + CTaskUseVehicleScenario = 119, + CTaskUnalerted = 120, + CTaskStealVehicle = 121, + CTaskReactToPursuit = 122, + CTaskHitWall = 125, + CTaskCower = 126, + CTaskCrouch = 127, + CTaskMelee = 128, + CTaskMoveMeleeMovement = 129, + CTaskMeleeActionResult = 130, + CTaskMeleeUpperbodyAnims = 131, + CTaskMoVEScripted = 133, + CTaskScriptedAnimation = 134, + CTaskSynchronizedScene = 135, + CTaskComplexEvasiveStep = 137, + CTaskWalkRoundCarWhileWandering = 138, + CTaskComplexStuckInAir = 140, + CTaskWalkRoundEntity = 141, + CTaskMoveWalkRoundVehicle = 142, + CTaskReactToGunAimedAt = 144, + CTaskDuckAndCover = 146, + CTaskAggressiveRubberneck = 147, + CTaskInVehicleBasic = 150, + CTaskCarDriveWander = 151, + CTaskLeaveAnyCar = 152, + CTaskComplexGetOffBoat = 153, + CTaskCarSetTempAction = 155, + CTaskBringVehicleToHalt = 156, + CTaskCarDrive = 157, + CTaskPlayerDrive = 159, + CTaskEnterVehicle = 160, + CTaskEnterVehicleAlign = 161, + CTaskOpenVehicleDoorFromOutside = 162, + CTaskEnterVehicleSeat = 163, + CTaskCloseVehicleDoorFromInside = 164, + CTaskInVehicleSeatShuffle = 165, + CTaskExitVehicleSeat = 167, + CTaskCloseVehicleDoorFromOutside = 168, + CTaskControlVehicle = 169, + CTaskMotionInAutomobile = 170, + CTaskMotionOnBicycle = 171, + CTaskMotionOnBicycleController = 172, + CTaskMotionInVehicle = 173, + CTaskMotionInTurret = 174, + CTaskReactToBeingJacked = 175, + CTaskReactToBeingAskedToLeaveVehicle = 176, + CTaskTryToGrabVehicleDoor = 177, + CTaskGetOnTrain = 178, + CTaskGetOffTrain = 179, + CTaskRideTrain = 180, + CTaskMountThrowProjectile = 190, + CTaskGoToCarDoorAndStandStill = 195, + CTaskMoveGoToVehicleDoor = 196, + CTaskSetPedInVehicle = 197, + CTaskSetPedOutOfVehicle = 198, + CTaskVehicleMountedWeapon = 199, + CTaskVehicleGun = 200, + CTaskVehicleProjectile = 201, + CTaskSmashCarWindow = 204, + CTaskMoveGoToPoint = 205, + CTaskMoveAchieveHeading = 206, + CTaskMoveFaceTarget = 207, + CTaskComplexGoToPointAndStandStillTimed = 208, + CTaskMoveGoToPointAndStandStill = 208, + CTaskMoveFollowPointRoute = 209, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorStandard = 210, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorLastNavMeshIntersection = 211, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorLastNavMeshIntersection2 = 212, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorXYOffsetFixed = 213, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorXYOffsetFixed2 = 214, + CTaskExhaustedFlee = 215, + CTaskGrowlAndFlee = 216, + CTaskScenarioFlee = 217, + CTaskSmartFlee = 218, + CTaskFlyAway = 219, + CTaskWalkAway = 220, + CTaskWander = 221, + CTaskWanderInArea = 222, + CTaskFollowLeaderInFormation = 223, + CTaskGoToPointAnyMeans = 224, + CTaskTurnToFaceEntityOrCoord = 225, + CTaskFollowLeaderAnyMeans = 226, + CTaskFlyToPoint = 228, + CTaskFlyingWander = 229, + CTaskGoToPointAiming = 230, + CTaskGoToScenario = 231, + CTaskSeekEntityAiming = 233, + CTaskSlideToCoord = 234, + CTaskSwimmingWander = 235, + CTaskMoveTrackingEntity = 237, + CTaskMoveFollowNavMesh = 238, + CTaskMoveGoToPointOnRoute = 239, + CTaskEscapeBlast = 240, + CTaskMoveWander = 241, + CTaskMoveBeInFormation = 242, + CTaskMoveCrowdAroundLocation = 243, + CTaskMoveCrossRoadAtTrafficLights = 244, + CTaskMoveWaitForTraffic = 245, + CTaskMoveGoToPointStandStillAchieveHeading = 246, + CTaskMoveGetOntoMainNavMesh = 251, + CTaskMoveSlideToCoord = 252, + CTaskMoveGoToPointRelativeToEntityAndStandStill = 253, + CTaskHelicopterStrafe = 254, + CTaskGetOutOfWater = 256, + CTaskMoveFollowEntityOffset = 259, + CTaskFollowWaypointRecording = 261, + CTaskMotionPed = 264, + CTaskMotionPedLowLod = 265, + CTaskHumanLocomotion = 268, + CTaskMotionBasicLocomotionLowLod = 269, + CTaskMotionStrafing = 270, + CTaskMotionTennis = 271, + CTaskMotionAiming = 272, + CTaskBirdLocomotion = 273, + CTaskFlightlessBirdLocomotion = 274, + CTaskFishLocomotion = 278, + CTaskQuadLocomotion = 279, + CTaskMotionDiving = 280, + CTaskMotionSwimming = 281, + CTaskMotionParachuting = 282, + CTaskMotionDrunk = 283, + CTaskRepositionMove = 284, + CTaskMotionAimingTransition = 285, + CTaskThrowProjectile = 286, + CTaskCover = 287, + CTaskMotionInCover = 288, + CTaskAimAndThrowProjectile = 289, + CTaskGun = 290, + CTaskAimFromGround = 291, + CTaskAimGunVehicleDriveBy = 295, + CTaskAimGunScripted = 296, + CTaskReloadGun = 298, + CTaskWeaponBlocked = 299, + CTaskEnterCover = 300, + CTaskExitCover = 301, + CTaskAimGunFromCoverIntro = 302, + CTaskAimGunFromCoverOutro = 303, + CTaskAimGunBlindFire = 304, + CTaskCombatClosestTargetInArea = 307, + CTaskCombatAdditionalTask = 308, + CTaskInCover = 309, + CTaskAimSweep = 313, + CTaskSharkCircle = 319, + CTaskSharkAttack = 320, + CTaskAgitated = 321, + CTaskAgitatedAction = 322, + CTaskConfront = 323, + CTaskIntimidate = 324, + CTaskShove = 325, + CTaskShoved = 326, + CTaskCrouchToggle = 328, + CTaskRevive = 329, + CTaskParachute = 335, + CTaskParachuteObject = 336, + CTaskTakeOffPedVariation = 337, + CTaskCombatSeekCover = 340, + CTaskCombatFlank = 342, + CTaskCombat = 343, + CTaskCombatMounted = 344, + CTaskMoveCircle = 345, + CTaskMoveCombatMounted = 346, + CTaskSearch = 347, + CTaskSearchOnFoot = 348, + CTaskSearchInAutomobile = 349, + CTaskSearchInBoat = 350, + CTaskSearchInHeli = 351, + CTaskThreatResponse = 352, + CTaskInvestigate = 353, + CTaskStandGuardFSM = 354, + CTaskPatrol = 355, + CTaskShootAtTarget = 356, + CTaskSetAndGuardArea = 357, + CTaskStandGuard = 358, + CTaskSeparate = 359, + CTaskStayInCover = 360, + CTaskVehicleCombat = 361, + CTaskVehiclePersuit = 362, + CTaskVehicleChase = 363, + CTaskDraggingToSafety = 364, + CTaskDraggedToSafety = 365, + CTaskVariedAimPose = 366, + CTaskMoveWithinAttackWindow = 367, + CTaskMoveWithinDefensiveArea = 368, + CTaskShootOutTire = 369, + CTaskShellShocked = 370, + CTaskBoatChase = 371, + CTaskBoatCombat = 372, + CTaskBoatStrafe = 373, + CTaskHeliChase = 374, + CTaskHeliCombat = 375, + CTaskSubmarineCombat = 376, + CTaskSubmarineChase = 377, + CTaskPlaneChase = 378, + CTaskTargetUnreachable = 379, + CTaskTargetUnreachableInInterior = 380, + CTaskTargetUnreachableInExterior = 381, + CTaskStealthKill = 382, + CTaskWrithe = 383, + CTaskAdvance = 384, + CTaskCharge = 385, + CTaskMoveToTacticalPoint = 386, + CTaskToHurtTransit = 387, + CTaskAnimatedHitByExplosion = 388, + CTaskNMRelax = 389, + CTaskNMPose = 391, + CTaskNMBrace = 392, + CTaskNMBuoyancy = 393, + CTaskNMInjuredOnGround = 394, + CTaskNMShot = 395, + CTaskNMHighFall = 396, + CTaskNMBalance = 397, + CTaskNMElectrocute = 398, + CTaskNMPrototype = 399, + CTaskNMExplosion = 400, + CTaskNMOnFire = 401, + CTaskNMScriptControl = 402, + CTaskNMJumpRollFromRoadVehicle = 403, + CTaskNMFlinch = 404, + CTaskNMSit = 405, + CTaskNMFallDown = 406, + CTaskBlendFromNM = 407, + CTaskNMControl = 408, + CTaskNMDangle = 409, + CTaskNMGenericAttach = 412, + CTaskNMDraggingToSafety = 414, + CTaskNMThroughWindscreen = 415, + CTaskNMRiverRapids = 416, + CTaskNMSimple = 417, + CTaskRageRagdoll = 418, + CTaskJumpVault = 421, + CTaskJump = 422, + CTaskFall = 423, + CTaskReactAimWeapon = 425, + CTaskChat = 426, + CTaskMobilePhone = 427, + CTaskReactToDeadPed = 428, + CTaskSearchForUnknownThreat = 430, + CTaskBomb = 432, + CTaskDetonator = 433, + CTaskAnimatedAttach = 435, + CTaskCutScene = 441, + CTaskReactToExplosion = 442, + CTaskReactToImminentExplosion = 443, + CTaskDiveToGround = 444, + CTaskReactAndFlee = 445, + CTaskSidestep = 446, + CTaskCallPolice = 447, + CTaskReactInDirection = 448, + CTaskReactToBuddyShot = 449, + CTaskVehicleGoToAutomobileNew = 454, + CTaskVehicleGoToPlane = 455, + CTaskVehicleGoToHelicopter = 456, + CTaskVehicleGoToSubmarine = 457, + CTaskVehicleGoToBoat = 458, + CTaskVehicleGoToPointAutomobile = 459, + CTaskVehicleGoToPointWithAvoidanceAutomobile = 460, + CTaskVehiclePursue = 461, + CTaskVehicleRam = 462, + CTaskVehicleSpinOut = 463, + CTaskVehicleApproach = 464, + CTaskVehicleThreePointTurn = 465, + CTaskVehicleDeadDriver = 466, + CTaskVehicleCruiseNew = 467, + CTaskVehicleCruiseBoat = 468, + CTaskVehicleStop = 469, + CTaskVehiclePullOver = 470, + CTaskVehiclePassengerExit = 471, + CTaskVehicleFlee = 472, + CTaskVehicleFleeAirborne = 473, + CTaskVehicleFleeBoat = 474, + CTaskVehicleFollowRecording = 475, + CTaskVehicleFollow = 476, + CTaskVehicleBlock = 477, + CTaskVehicleBlockCruiseInFront = 478, + CTaskVehicleBlockBrakeInFront = 479, + CTaskVehicleBlockBackAndForth = 478, + CTaskVehicleCrash = 481, + CTaskVehicleLand = 482, + CTaskVehicleLandPlane = 483, + CTaskVehicleHover = 484, + CTaskVehicleAttack = 485, + CTaskVehicleAttackTank = 486, + CTaskVehicleCircle = 487, + CTaskVehiclePoliceBehaviour = 488, + CTaskVehiclePoliceBehaviourHelicopter = 489, + CTaskVehiclePoliceBehaviourBoat = 490, + CTaskVehicleEscort = 491, + CTaskVehicleHeliProtect = 492, + CTaskVehiclePlayerDriveAutomobile = 494, + CTaskVehiclePlayerDriveBike = 495, + CTaskVehiclePlayerDriveBoat = 496, + CTaskVehiclePlayerDriveSubmarine = 497, + CTaskVehiclePlayerDriveSubmarineCar = 498, + CTaskVehiclePlayerDriveAmphibiousAutomobile = 499, + CTaskVehiclePlayerDrivePlane = 500, + CTaskVehiclePlayerDriveHeli = 501, + CTaskVehiclePlayerDriveAutogyro = 502, + CTaskVehiclePlayerDriveDiggerArm = 503, + CTaskVehiclePlayerDriveTrain = 504, + CTaskVehiclePlaneChase = 505, + CTaskVehicleNoDriver = 506, + CTaskVehicleAnimation = 507, + CTaskVehicleConvertibleRoof = 508, + CTaskVehicleParkNew = 509, + CTaskVehicleFollowWaypointRecording = 510, + CTaskVehicleGoToNavmesh = 511, + CTaskVehicleReactToCopSiren = 512, + CTaskVehicleGotoLongRange = 513, + CTaskVehicleWait = 514, + CTaskVehicleReverse = 515, + CTaskVehicleBrake = 516, + CTaskVehicleHandBrake = 517, + CTaskVehicleTurn = 518, + CTaskVehicleGoForward = 519, + CTaskVehicleSwerve = 520, + CTaskVehicleFlyDirection = 521, + CTaskVehicleHeadonCollision = 522, + CTaskVehicleBoostUseSteeringAngle = 523, + CTaskVehicleShotTire = 524, + CTaskVehicleBurnout = 525, + CTaskVehicleRevEngine = 526, + CTaskVehicleSurfaceInSubmarine = 527, + CTaskVehiclePullAlongside = 528, + CTaskVehicleTransformToSubmarine = 529, + CTaskAnimatedFallback = 530 + }; + + internal enum State + { + Uninitialized, + Creating, + Finished + } + + internal enum SpeedUnits + { + MPH, + KPH + } + + internal enum DrivingFlagType + { + Normal = 263075, + Direct = 17040259 + } // Change this to Public for import/export? + + internal enum DismissOption + { + FromPath = 0, + FromWaypoint = 1, + FromWorld = 2, + FromPlayer = 3, + FromDirected = 4 + } + + internal enum TrafficLight + { + Green = 0, + Red = 1, + Yellow = 2, + None = 3 + } +} From fccb41fd6571d05c0943fe905e169ac3535d182c Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:31:23 -0700 Subject: [PATCH 66/74] Added check for open text box before allowing user input --- SceneManager/Utils/GetUserInput.cs | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 SceneManager/Utils/GetUserInput.cs diff --git a/SceneManager/Utils/GetUserInput.cs b/SceneManager/Utils/GetUserInput.cs new file mode 100644 index 0000000..b1277f1 --- /dev/null +++ b/SceneManager/Utils/GetUserInput.cs @@ -0,0 +1,75 @@ +using Rage; + +namespace SceneManager.Utils +{ + class GetUserInput + { + internal static void LoopForUserInput() + { + while (true) + { + bool isTextEntryOpen = (Rage.Native.NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() == 0); + if (!isTextEntryOpen) + { + GetKeyboardInput(); + GetControllerInput(); + } + else + { + Game.LogTrivial($"A text menu is open."); + } + +#if DEBUG + if (MenuManager.menuPool.IsAnyMenuOpen()) + { + Game.DisplaySubtitle($"You are using a test build of Scene Manager. Please report any bugs/crashes in the Discord server."); + } +#endif + MenuManager.menuPool.ProcessMenus(); + GameFiber.Yield(); + } + } + + private static void GetControllerInput() + { + if (Settings.ModifierButton == ControllerButtons.None) + { + if (Game.IsControllerButtonDown(Settings.ToggleButton) && AreMenusClosed()) + { + MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; + } + } + else if (Game.IsControllerButtonDownRightNow(Settings.ModifierButton) && Game.IsControllerButtonDown(Settings.ToggleButton) && AreMenusClosed()) + { + MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; + } + } + + private static void GetKeyboardInput() + { + if (Settings.ModifierKey == System.Windows.Forms.Keys.None) + { + if (Game.IsKeyDown(Settings.ToggleKey) && AreMenusClosed()) + { + MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; + } + } + else if (Game.IsKeyDownRightNow(Settings.ModifierKey) && Game.IsKeyDown(Settings.ToggleKey) && AreMenusClosed()) + { + MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; + } + } + + private static bool AreMenusClosed() + { + if(!BarrierMenu.barrierMenu.Visible && !PathMainMenu.pathMainMenu.Visible && !PathCreationMenu.pathCreationMenu.Visible && !EditPathMenu.editPathMenu.Visible && !EditWaypointMenu.editWaypointMenu.Visible && !SettingsMenu.settingsMenu.Visible) + { + return true; + } + else + { + return false; + } + } + } +} From 794e97554aa80db027f1f518332ee885b74ddb63 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:31:54 -0700 Subject: [PATCH 67/74] Refactored class into Utils folder --- SceneManager/Utils/MousePositionInWorld.cs | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 SceneManager/Utils/MousePositionInWorld.cs diff --git a/SceneManager/Utils/MousePositionInWorld.cs b/SceneManager/Utils/MousePositionInWorld.cs new file mode 100644 index 0000000..4f17043 --- /dev/null +++ b/SceneManager/Utils/MousePositionInWorld.cs @@ -0,0 +1,42 @@ +using Rage; + +namespace SceneManager.Utils +{ + internal static class MousePositionInWorld + { + internal static Vector3 GetPosition { get { return GetMousePositionInWorld(); } } + + internal static Vector3 GetPositionForBarrier { get { return GetMousePositionInWorld(Settings.BarrierPlacementDistance); } } + + private static Vector3 GetMousePositionInWorld(float maxDistance = 100f) + { + HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); + + HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) + { + Vector3 direction = GetPlayerLookingDirection(out start); + end = start + (maxTraceDistance * direction); + return World.TraceLine(start, end, flags); + } + + Vector3 GetPlayerLookingDirection(out Vector3 camPosition) + { + if (Camera.RenderingCamera) + { + camPosition = Camera.RenderingCamera.Position; + return Camera.RenderingCamera.Direction; + } + else + { + float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); + float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); + + camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); + return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); + } + } + + return TracePlayerView(maxDistance, TraceFlags.IntersectWorld).HitPosition; + } + } +} From c70ab8d56a11af870f5f8a758b33ae0d36bddd50 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:32:18 -0700 Subject: [PATCH 68/74] Added for path Import/Export feature --- SceneManager/Utils/PathXMLManager.cs | 153 +++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 SceneManager/Utils/PathXMLManager.cs diff --git a/SceneManager/Utils/PathXMLManager.cs b/SceneManager/Utils/PathXMLManager.cs new file mode 100644 index 0000000..5f1b311 --- /dev/null +++ b/SceneManager/Utils/PathXMLManager.cs @@ -0,0 +1,153 @@ +using Rage; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Xml; +using System.Xml.Serialization; + +namespace SceneManager.Utils +{ + internal static class PathXMLManager + { + private static Dictionary _serializerCache = new Dictionary(); + private static XmlSerializer _getOrCreateSerializer(XmlAttributeOverrides overrides = null) + { + if (_serializerCache.ContainsKey(typeof(T))) + { + Game.LogTrivialDebug("Serializer cache already contains " + typeof(T).Name); + return _serializerCache[typeof(T)]; + } + else + { + Game.LogTrivialDebug("Adding " + typeof(T).Name + " to serializer cache"); + Game.LogTrivialDebug("Overrides specified: " + (overrides != null)); + var s = new XmlSerializer(typeof(T), overrides); + _serializerCache.Add(typeof(T), s); + return s; + } + } + + public static void SaveToNode(string file, string node, string value) + { + XmlNode n = SelectNodeFromXml(file, node); + + if (n == null) throw new KeyNotFoundException($"{nameof(SaveToNode)}: specified node does not exists!"); + + n.InnerText = value; + var doc = new XmlDocument(); + doc.Save(file); + } + + public static string ReadFromNode(string file, string node) + { + return SelectNodeFromXml(file, node).InnerText; + } + + private static XmlNode SelectNodeFromXml(string filePath, string node) + { + if (!File.Exists(filePath)) throw new FileNotFoundException($"{nameof(SelectNodeFromXml)}(): specified file does not exist: {filePath}"); + + using (TextReader reader = new StreamReader(filePath)) + { + var doc = new XmlDocument(); + doc.Load(reader); + return doc.SelectSingleNode(node); + } + } + + public static List LoadAllXML(string dirPath, SearchOption searchOption = SearchOption.AllDirectories) + { + if (!Directory.Exists(dirPath)) throw new DirectoryNotFoundException($"{nameof(LoadAllXML)}(): specified directory could not be found: {dirPath}"); + + string[] files = Directory.GetFiles(dirPath, "*.xml", searchOption); + + List result = new List(); + + Array.ForEach(files, f => result.AddRange(LoadFromXML(f))); + + return result; + } + + public static void SaveToXML(List list, string filePath) + { + SaveItemToXML(list, filePath); + } + + public static void SaveItemToXML(T item, string path, XmlAttributeOverrides overrides) + { + Encoding utf8NoBom = new UTF8Encoding(false); + using (TextWriter writer = new StreamWriter(path, false, utf8NoBom)) + { + XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); + ns.Add("", ""); + + // new XmlSerializer(typeof(T)).Serialize(writer, item); + _getOrCreateSerializer(overrides).Serialize(writer, item, ns); + } + } + + public static void SaveItemToXML(T item, string path) + { + SaveItemToXML(item, path, null); + } + + public static T LoadItemFromXML(string filePath, XmlAttributeOverrides overrides) + { + if (!File.Exists(filePath)) throw new FileNotFoundException($"{nameof(LoadItemFromXML)}(): specified file does not exist: {filePath}"); + + using (TextReader reader = new StreamReader(filePath)) + { + return (T)_getOrCreateSerializer(overrides).Deserialize(reader); + } + } + + public static T LoadItemFromXML(string filePath) + { + return (T)LoadItemFromXML(filePath, null); + } + + public static void ModifyItemInXML(string filePath, Action modification) + { + T item = LoadItemFromXML(filePath); + modification(item); + SaveItemToXML(item, filePath); + } + + public static T GetSelectedListElementFromXml(string file, Func, T> selector) + { + List deserialized = LoadItemFromXML>(file); + return selector(deserialized); + } + + public static List LoadFromXML(string filePath) + { + return LoadItemFromXML>(filePath); + } + + public static void AppendToXML(T objectToAdd, string path) + { + ModifyItemInXML>(path, t => t.Add(objectToAdd)); + } + + ///// + ///// Creates folder in case it doesn't exist and checks file existance. + ///// + ///// + ///// false when a file does not exist. + //private static bool ValidatePath(string path) + //{ + // //TODO: implement + // // - check extension + // // - bool param: createDir + // string dir = Path.GetDirectoryName(path); + // if (!Directory.Exists(dir)) + // { + // Directory.CreateDirectory(dir); + // return false; + // } + + // return File.Exists(path); + //} + } +} From 48873adb6cc6663cd39939e840d94db179043c20 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:32:29 -0700 Subject: [PATCH 69/74] Added for path Import/Export feature --- SceneManager/Utils/PNWUserInput.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 SceneManager/Utils/PNWUserInput.cs diff --git a/SceneManager/Utils/PNWUserInput.cs b/SceneManager/Utils/PNWUserInput.cs new file mode 100644 index 0000000..78e20e0 --- /dev/null +++ b/SceneManager/Utils/PNWUserInput.cs @@ -0,0 +1,28 @@ +using Rage; +using Rage.Native; + +namespace SceneManager.Utils +{ + internal static class PNWUserInput + { + public static string GetUserInput(string windowTitle, string defaultText, int maxLength) + { + NativeFunction.Natives.DISABLE_ALL_CONTROL_ACTIONS(2); + + NativeFunction.Natives.DISPLAY_ONSCREEN_KEYBOARD(true, windowTitle, 0, defaultText, 0, 0, 0, maxLength); + Game.DisplayHelp("Enter the filename you would like to save your path as\n~INPUT_FRONTEND_ACCEPT~ Export path\n~INPUT_FRONTEND_CANCEL~ Cancel", true); + Game.DisplaySubtitle(windowTitle, 100000); + + while (NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() == 0) + { + GameFiber.Yield(); + } + + NativeFunction.Natives.ENABLE_ALL_CONTROL_ACTIONS(2); + Game.DisplaySubtitle("", 5); + Game.HideHelp(); + + return NativeFunction.Natives.GET_ONSCREEN_KEYBOARD_RESULT(); + } + } +} \ No newline at end of file From 812e48fa27df2610c568caf91b03dd89a8b9174a Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:32:44 -0700 Subject: [PATCH 70/74] Added dependency for InputManager.dll --- SceneManager/Utils/RNUIMouseInputHandler.cs | 131 ++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 SceneManager/Utils/RNUIMouseInputHandler.cs diff --git a/SceneManager/Utils/RNUIMouseInputHandler.cs b/SceneManager/Utils/RNUIMouseInputHandler.cs new file mode 100644 index 0000000..440f1f9 --- /dev/null +++ b/SceneManager/Utils/RNUIMouseInputHandler.cs @@ -0,0 +1,131 @@ +using InputManager; +using Rage; +using RAGENativeUI; +using RAGENativeUI.Elements; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + + +namespace SceneManager.Utils +{ + internal class RNUIMouseInputHandler + { + internal delegate void Function(); + + internal static void Initialize(UIMenu menu, List scrollerItems) + { + GameFiber.StartNew(() => + { + while (menu.Visible) + { + var selectedScroller = menu.MenuItems.Where(x => scrollerItems.Contains(x) && x.Selected && x.Enabled).FirstOrDefault(); + if (selectedScroller != null) + { + OnWheelScroll(menu, selectedScroller, scrollerItems); + } + + if (Game.IsKeyDown(Keys.LButton) && Rage.Native.NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() != 0) + { + Keyboard.KeyDown(Keys.Enter); + GameFiber.Wait(1); + Keyboard.KeyUp(Keys.Enter); + } + + if (menu.SubtitleText.Contains("Path Creation Menu")) + { + DrawWaypointMarker(); + } + GameFiber.Yield(); + } + }); + } + + internal static void OnWheelScroll(UIMenu menu, UIMenuItem selectedScroller, List scrollerItems) + { + var menuScrollingDisabled = false; + var menuItems = menu.MenuItems.Where(x => x != selectedScroller); + + while (Game.IsShiftKeyDownRightNow) + { + menu.ResetKey(Common.MenuControls.Up); + menu.ResetKey(Common.MenuControls.Down); + menuScrollingDisabled = true; + ScrollMenuItem(); + if (menu.SubtitleText.Contains("Path Creation Menu") || menu.SubtitleText.Contains("Edit Waypoint")) + { + CompareScrollerValues(); + } + if(menu.SubtitleText.Contains("Path Creation Menu")) + { + DrawWaypointMarker(); + } + GameFiber.Yield(); + } + + if (menuScrollingDisabled) + { + menuScrollingDisabled = false; + menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); + menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); + menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); + menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); + } + + void ScrollMenuItem() + { + if (Game.GetMouseWheelDelta() > 0) + { + Keyboard.KeyDown(Keys.Right); + GameFiber.Wait(1); + Keyboard.KeyUp(Keys.Right); + } + else if (Game.GetMouseWheelDelta() < 0) + { + Keyboard.KeyDown(Keys.Left); + GameFiber.Wait(1); + Keyboard.KeyUp(Keys.Left); + } + } + + void CompareScrollerValues() + { + var collectorRadius = (UIMenuNumericScrollerItem)scrollerItems.Where(x => x.Text == "Collection Radius").FirstOrDefault(); + var speedZoneRadius = (UIMenuNumericScrollerItem)scrollerItems.Where(x => x.Text == "Speed Zone Radius").FirstOrDefault(); + + if (selectedScroller.Text == "Collection Radius" || selectedScroller.Text == "Speed Zone Radius") + { + if (selectedScroller == collectorRadius && collectorRadius.Value > speedZoneRadius.Value) + { + while (collectorRadius.Value > speedZoneRadius.Value) + { + speedZoneRadius.ScrollToNextOption(); + } + } + if (selectedScroller == speedZoneRadius && speedZoneRadius.Value < collectorRadius.Value) + { + collectorRadius.Value = speedZoneRadius.Value; + } + } + } + } + + private static void DrawWaypointMarker() + { + var waypointPosition = MousePositionInWorld.GetPosition; + if (SettingsMenu.threeDWaypoints.Checked && PathCreationMenu.collectorWaypoint.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); + } + else if (PathCreationMenu.stopWaypointType.Checked) + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); + } + else + { + Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); + } + } + } +} From 572091196daf582585a2f698f30c7e16e97d137f Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:33:05 -0700 Subject: [PATCH 71/74] Added obfuscation for release builds --- .../_ConfuserEx/CommonServiceLocator.dll | Bin 0 -> 9728 bytes SceneManager/_ConfuserEx/Confuser.CLI.exe | Bin 0 -> 30720 bytes SceneManager/_ConfuserEx/Confuser.Core.dll | Bin 0 -> 178688 bytes .../_ConfuserEx/Confuser.DynCipher.dll | Bin 0 -> 47616 bytes .../_ConfuserEx/Confuser.Protections.dll | Bin 0 -> 135168 bytes SceneManager/_ConfuserEx/Confuser.Renamer.dll | Bin 0 -> 321024 bytes SceneManager/_ConfuserEx/Confuser.Runtime.dll | Bin 0 -> 45056 bytes SceneManager/_ConfuserEx/c.crproj | 27 ++++++++++++++++++ SceneManager/_ConfuserEx/dnlib.dll | Bin 0 -> 1138176 bytes 9 files changed, 27 insertions(+) create mode 100644 SceneManager/_ConfuserEx/CommonServiceLocator.dll create mode 100644 SceneManager/_ConfuserEx/Confuser.CLI.exe create mode 100644 SceneManager/_ConfuserEx/Confuser.Core.dll create mode 100644 SceneManager/_ConfuserEx/Confuser.DynCipher.dll create mode 100644 SceneManager/_ConfuserEx/Confuser.Protections.dll create mode 100644 SceneManager/_ConfuserEx/Confuser.Renamer.dll create mode 100644 SceneManager/_ConfuserEx/Confuser.Runtime.dll create mode 100644 SceneManager/_ConfuserEx/c.crproj create mode 100644 SceneManager/_ConfuserEx/dnlib.dll diff --git a/SceneManager/_ConfuserEx/CommonServiceLocator.dll b/SceneManager/_ConfuserEx/CommonServiceLocator.dll new file mode 100644 index 0000000000000000000000000000000000000000..3398d83aff63b78878c7fa75409216bf191a1d12 GIT binary patch literal 9728 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 literal 0 HcmV?d00001 diff --git a/SceneManager/_ConfuserEx/Confuser.Core.dll b/SceneManager/_ConfuserEx/Confuser.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..042d052f4db35fd4ea1655eef72cd0bc52976eec GIT binary patch literal 178688 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 g3m2*~2@ED-l=gOBKB0Po`msZWNA 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 literal 0 HcmV?d00001 diff --git a/SceneManager/_ConfuserEx/Confuser.Protections.dll b/SceneManager/_ConfuserEx/Confuser.Protections.dll new file mode 100644 index 0000000000000000000000000000000000000000..b08109d1a92e7033354fa94bfbc9e46d5bd1f161 GIT binary patch literal 135168 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 literal 0 HcmV?d00001 diff --git a/SceneManager/_ConfuserEx/Confuser.Renamer.dll b/SceneManager/_ConfuserEx/Confuser.Renamer.dll new file mode 100644 index 0000000000000000000000000000000000000000..ee363acf33c6e8946fc09ffe8f73e3d3e2df9f12 GIT binary patch literal 321024 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

^Bi)kgNll^Tp_>2^&MP7szBQZIDPn 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 literal 0 HcmV?d00001 diff --git a/SceneManager/_ConfuserEx/Confuser.Runtime.dll b/SceneManager/_ConfuserEx/Confuser.Runtime.dll new file mode 100644 index 0000000000000000000000000000000000000000..3edbf191d4974ac911c441bcfa6c5b0aca642031 GIT binary patch literal 45056 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

=xVMV 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%0ABykWMCjJ;n9K?o+GY2BMKM=|N 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 literal 0 HcmV?d00001 From f9631d851490d251964c63eab7cd7a522e6150de Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:34:13 -0700 Subject: [PATCH 72/74] Added check for InputManager. Added delay to load settings while the game is loading. Excluded EntryPoint class and Main method from obfuscation. --- SceneManager/EntryPoint.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/SceneManager/EntryPoint.cs b/SceneManager/EntryPoint.cs index 633810c..88f3812 100644 --- a/SceneManager/EntryPoint.cs +++ b/SceneManager/EntryPoint.cs @@ -4,13 +4,17 @@ using System.Linq; using System.Reflection; using System.Windows.Forms; using Rage; +using SceneManager.Objects; +using SceneManager.Utils; [assembly: Rage.Attributes.Plugin("Scene Manager", Author = "Rich", Description = "Control your scenes with custom AI pathing and traffic barrier management.", PrefersSingleInstance = true)] namespace SceneManager { + [Obfuscation(Exclude = false, Feature = "-rename", ApplyToMembers = false)] public class EntryPoint { + [Obfuscation(Exclude = false, Feature = "-rename")] internal static void Main() { if(!InputManagerChecker() || !CheckRNUIVersion()) @@ -19,6 +23,11 @@ namespace SceneManager return; } + while (Game.IsLoading) + { + GameFiber.Yield(); + } + AppDomain.CurrentDomain.DomainUnload += MyTerminationHandler; Settings.LoadSettings(); GetAssemblyVersion(); @@ -35,6 +44,7 @@ namespace SceneManager Game.LogTrivial($"Scene Manager V{version} is ready."); } } + private static bool CheckRNUIVersion() { var directory = Directory.GetCurrentDirectory(); @@ -73,6 +83,7 @@ namespace SceneManager } return true; } + private static void DisplayHintsToOpenMenu() { if (Settings.ModifierKey == Keys.None && Settings.ModifierButton == ControllerButtons.None) @@ -92,6 +103,7 @@ namespace SceneManager 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 @@ -107,7 +119,7 @@ namespace SceneManager // Clean up paths for (int i = 0; i < PathMainMenu.paths.Count; i++) { - PathMainMenu.DeletePath(PathMainMenu.paths[i], PathMainMenu.Delete.All); + PathMainMenu.DeletePath(PathMainMenu.paths[i], Delete.All); } Game.LogTrivial($"Plugin has shut down."); From d44e460fd8e91e26759ed96688a1aaaf4c467a76 Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:35:25 -0700 Subject: [PATCH 73/74] Refactored enums into their own class. Added .ini option EnableBarrierLightsDefaultOn. Refactored barrier info into a dictionary. Added ImportPaths method. --- SceneManager/Settings.cs | 89 ++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/SceneManager/Settings.cs b/SceneManager/Settings.cs index 08d3b4f..915b472 100644 --- a/SceneManager/Settings.cs +++ b/SceneManager/Settings.cs @@ -1,45 +1,11 @@ using Rage; using System.Collections.Generic; using System.Windows.Forms; +using SceneManager.Utils; +using System.IO; namespace SceneManager { - internal enum State - { - Uninitialized, - Creating, - Finished - } - - internal enum SpeedUnits - { - MPH, - KPH - } - - internal enum DrivingFlagType - { - Normal = 263075, - Direct = 17040259 - } - - internal enum DismissOption - { - FromPath = 0, - FromWaypoint = 1, - FromWorld = 2, - FromPlayer = 3, - FromDirected = 4 - } - - internal enum TrafficLight - { - Green = 0, - Red = 1, - Yellow = 2, - None = 3 - } - internal static class Settings { internal static readonly InitializationFile ini = new InitializationFile("Plugins/SceneManager.ini"); @@ -57,6 +23,7 @@ namespace SceneManager internal static SpeedUnits SpeedUnit = SpeedUnits.MPH; internal static float BarrierPlacementDistance = 30f; internal static bool EnableAdvancedBarricadeOptions = false; + internal static bool EnableBarrierLightsDefaultOn = false; // Default Waypoint Settings internal static int CollectorRadius = 1; @@ -66,8 +33,9 @@ namespace SceneManager internal static int WaypointSpeed = 5; // Barriers - internal static List barrierKeys = new List(); - internal static List barrierValues = new List(); + internal static Dictionary barriers = new Dictionary(); + //internal static List barrierKeys = new List(); + //internal static List barrierValues = new List(); internal static void LoadSettings() { @@ -87,7 +55,8 @@ namespace SceneManager SpeedUnit = ini.ReadEnum("Plugin Settings", "SpeedUnits", SpeedUnits.MPH); BarrierPlacementDistance = ini.ReadInt32("Plugin Settings", "BarrierPlacementDistance", 30); EnableAdvancedBarricadeOptions = ini.ReadBoolean("Plugin Settings", "EnableAdvancedBarricadeOptions", false); - + EnableBarrierLightsDefaultOn = ini.ReadBoolean("Plugin Settings", "EnableBarrierLightsDefaultOn", false); + // Default Waypoint Settings CollectorRadius = ini.ReadInt32("Default Waypoint Settings", "CollectorRadius", 1); SpeedZoneRadius = ini.ReadInt32("Default Waypoint Settings", "SpeedZoneRadius", 5); @@ -97,20 +66,23 @@ namespace SceneManager CheckForValidWaypointSettings(); // Barriers - foreach(string key in ini.GetKeyNames("Barriers")) + foreach(string displayName in ini.GetKeyNames("Barriers")) { - barrierKeys.Add(key.Trim()); - var m = new Model(ini.ReadString("Barriers", key)); - if (m.IsValid) + var model = new Model(ini.ReadString("Barriers", displayName.Trim())); + if (model.IsValid) { - barrierValues.Add(m.Name); + barriers.Add(displayName, model); + //barrierKeys.Add(key.Trim()); + //barrierValues.Add(model); } else { - Game.LogTrivial($"{m.Name} is not valid."); + Game.LogTrivial($"{model.Name} is not valid."); } } + //ImportPaths(); + void CheckForValidWaypointSettings() { if(CollectorRadius > 50 || CollectorRadius < 1) @@ -135,6 +107,33 @@ namespace SceneManager Game.LogTrivial($"Invalid value for WaypointSpeed in user settings, resetting to default."); } } + + void ImportPaths() + { + //read each file name in Saved Paths + var GAME_DIRECTORY = Directory.GetCurrentDirectory(); + var SAVED_PATHS_DIRECTORY = GAME_DIRECTORY + "/plugins/SceneManager/Saved Paths/"; + if (!Directory.Exists(SAVED_PATHS_DIRECTORY)) + { + Game.LogTrivial($"Directory '/plugins/SceneManager/Saved Paths' does not exist. No paths available to import."); + return; + } + + //add file name to PathMainMenu.importedPaths + var paths = Directory.GetFiles(SAVED_PATHS_DIRECTORY); + if (paths.Length == 0) + { + Game.LogTrivial($"No saved paths found."); + return; + } + + foreach (string path in paths) + { + Game.LogTrivial($"Path to import: {Path.GetFileName(path)}"); + + // Check if XML is valid before actually importing + } + } } internal static void UpdateSettings(bool threeDWaypointsEnabled, bool mapBlipsEnabled, bool hintsEnabled, SpeedUnits unit) From 6769ca815e835775602d87bf223691bb95670c3b Mon Sep 17 00:00:00 2001 From: Rich Dunne Date: Sun, 6 Dec 2020 07:35:53 -0700 Subject: [PATCH 74/74] Organizational refactoring --- SceneManager/ConsoleCommands.cs | 36 ------- SceneManager/GetUserInput.cs | 67 ------------- SceneManager/MousePositionInWorld.cs | 42 --------- SceneManager/PNWUserInput.cs | 28 ------ SceneManager/RNUIMouseInputHandler.cs | 130 -------------------------- SceneManager/SceneManager.csproj | 46 ++++++--- SceneManager/SceneManager.obproj | 18 ++++ SceneManager/app.config | 23 +++++ SceneManager/packages.config | 4 + SceneManager/smprotected.crproj | 3 + 10 files changed, 81 insertions(+), 316 deletions(-) delete mode 100644 SceneManager/ConsoleCommands.cs delete mode 100644 SceneManager/GetUserInput.cs delete mode 100644 SceneManager/MousePositionInWorld.cs delete mode 100644 SceneManager/PNWUserInput.cs delete mode 100644 SceneManager/RNUIMouseInputHandler.cs create mode 100644 SceneManager/SceneManager.obproj create mode 100644 SceneManager/app.config create mode 100644 SceneManager/packages.config create mode 100644 SceneManager/smprotected.crproj diff --git a/SceneManager/ConsoleCommands.cs b/SceneManager/ConsoleCommands.cs deleted file mode 100644 index 973a978..0000000 --- a/SceneManager/ConsoleCommands.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Rage; -using Rage.Attributes; -using Rage.ConsoleCommands.AutoCompleters; -using System.Linq; - -namespace SceneManager -{ - internal static class ConsoleCommands - { - [ConsoleCommand] - internal static void Command_ShowCollectedVehicleInfo([ConsoleCommandParameter(AutoCompleterType = typeof(ConsoleCommandAutoCompleterVehicle))] Vehicle vehicle) - { - foreach(Path path in PathMainMenu.paths) - { - var collectedVehicle = path.CollectedVehicles.Where(v => v.Vehicle == vehicle).FirstOrDefault(); - if(collectedVehicle != null) - { - Game.LogTrivial($"Vehicle: {collectedVehicle.Vehicle.Model.Name} [{collectedVehicle.Vehicle.Handle}]"); - Rage.Native.NativeFunction.Natives.xA6E9C38DB51D7748(collectedVehicle.Vehicle, out uint script); - Game.LogTrivial($"Vehicle spawned by: {script}"); - Game.LogTrivial($"Driver handle: {collectedVehicle.Driver.Handle}"); - Game.LogTrivial($"Path: {collectedVehicle.Path.Number}"); - Game.LogTrivial($"Current waypoint: {collectedVehicle.CurrentWaypoint.Number}"); - Game.LogTrivial($"StoppedAtWaypoint: {collectedVehicle.StoppedAtWaypoint}"); - Game.LogTrivial($"SkipWaypoint: {collectedVehicle.SkipWaypoint}"); - Game.LogTrivial($"ReadyForDirectTasks: {collectedVehicle.ReadyForDirectTasks}"); - Game.LogTrivial($"Directed: {collectedVehicle.Directed}"); - Game.LogTrivial($"Dismissed: {collectedVehicle.Dismissed}"); - Game.LogTrivial($"Task status: {collectedVehicle.Driver.Tasks.CurrentTaskStatus}"); - return; - } - } - Game.LogTrivial($"{vehicle.Model.Name} [{vehicle.Handle}] was not found collected by any path."); - } - } -} diff --git a/SceneManager/GetUserInput.cs b/SceneManager/GetUserInput.cs deleted file mode 100644 index 3cfb264..0000000 --- a/SceneManager/GetUserInput.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Rage; - -namespace SceneManager -{ - class GetUserInput - { - internal static void LoopForUserInput() - { - while (true) - { - GetKeyboardInput(); - GetControllerInput(); - -#if DEBUG - if (MenuManager.menuPool.IsAnyMenuOpen()) - { - Game.DisplaySubtitle($"You are using a test build of Scene Manager. Please report any bugs/crashes in the Discord server."); - } -#endif - MenuManager.menuPool.ProcessMenus(); - GameFiber.Yield(); - } - } - - private static void GetControllerInput() - { - if (Settings.ModifierButton == ControllerButtons.None) - { - if (Game.IsControllerButtonDown(Settings.ToggleButton) && AreMenusClosed()) - { - MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; - } - } - else if (Game.IsControllerButtonDownRightNow(Settings.ModifierButton) && Game.IsControllerButtonDown(Settings.ToggleButton) && AreMenusClosed()) - { - MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; - } - } - - private static void GetKeyboardInput() - { - if (Settings.ModifierKey == System.Windows.Forms.Keys.None) - { - if (Game.IsKeyDown(Settings.ToggleKey) && AreMenusClosed()) - { - MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; - } - } - else if (Game.IsKeyDownRightNow(Settings.ModifierKey) && Game.IsKeyDown(Settings.ToggleKey) && AreMenusClosed()) - { - MainMenu.mainMenu.Visible = !MainMenu.mainMenu.Visible; - } - } - - private static bool AreMenusClosed() - { - if(!BarrierMenu.barrierMenu.Visible && !PathMainMenu.pathMainMenu.Visible && !PathCreationMenu.pathCreationMenu.Visible && !EditPathMenu.editPathMenu.Visible && !EditWaypointMenu.editWaypointMenu.Visible && !SettingsMenu.settingsMenu.Visible) - { - return true; - } - else - { - return false; - } - } - } -} diff --git a/SceneManager/MousePositionInWorld.cs b/SceneManager/MousePositionInWorld.cs deleted file mode 100644 index 5d1b9e5..0000000 --- a/SceneManager/MousePositionInWorld.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Rage; -using RAGENativeUI.Elements; - -namespace SceneManager -{ - internal static class MousePositionInWorld - { - internal static Vector3 GetPosition { get { return GetMousePositionInWorld(); } } - internal static Vector3 GetPositionForBarrier { get { return GetMousePositionInWorld(Settings.BarrierPlacementDistance); } } - - private static Vector3 GetMousePositionInWorld(float maxDistance = 100f) - { - HitResult TracePlayerView(float maxTraceDistance = 100f, TraceFlags flags = TraceFlags.IntersectWorld) => TracePlayerView2(out Vector3 v1, out Vector3 v2, maxTraceDistance, flags); - - HitResult TracePlayerView2(out Vector3 start, out Vector3 end, float maxTraceDistance, TraceFlags flags) - { - Vector3 direction = GetPlayerLookingDirection(out start); - end = start + (maxTraceDistance * direction); - return World.TraceLine(start, end, flags); - } - - Vector3 GetPlayerLookingDirection(out Vector3 camPosition) - { - if (Camera.RenderingCamera) - { - camPosition = Camera.RenderingCamera.Position; - return Camera.RenderingCamera.Direction; - } - else - { - float pitch = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_PITCH(); - float heading = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_RELATIVE_HEADING(); - - camPosition = Rage.Native.NativeFunction.Natives.GET_GAMEPLAY_CAM_COORD(); - return (Game.LocalPlayer.Character.Rotation + new Rotator(pitch, 0, heading)).ToVector().ToNormalized(); - } - } - - return TracePlayerView(maxDistance, TraceFlags.IntersectWorld).HitPosition; - } - } -} diff --git a/SceneManager/PNWUserInput.cs b/SceneManager/PNWUserInput.cs deleted file mode 100644 index 92268e1..0000000 --- a/SceneManager/PNWUserInput.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Rage; -using Rage.Native; - -namespace SceneManager -{ - internal static class PNWUserInput - { - public static string GetUserInput(string windowTitle, string defaultText, int maxLength) - { - NativeFunction.Natives.DISABLE_ALL_CONTROL_ACTIONS(2); - - NativeFunction.Natives.DISPLAY_ONSCREEN_KEYBOARD(true, windowTitle, 0, defaultText, 0, 0, 0, maxLength); - Game.DisplayHelp("Enter the filename you would like to save your path as\n~INPUT_FRONTEND_ACCEPT~ Export path\n~INPUT_FRONTEND_CANCEL~ Cancel", true); - Game.DisplaySubtitle(windowTitle, 100000); - - while (NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() == 0) - { - GameFiber.Yield(); - } - - NativeFunction.Natives.ENABLE_ALL_CONTROL_ACTIONS(2); - Game.DisplaySubtitle("", 5); - Game.HideHelp(); - - return NativeFunction.Natives.GET_ONSCREEN_KEYBOARD_RESULT(); - } - } -} \ No newline at end of file diff --git a/SceneManager/RNUIMouseInputHandler.cs b/SceneManager/RNUIMouseInputHandler.cs deleted file mode 100644 index 5fb2457..0000000 --- a/SceneManager/RNUIMouseInputHandler.cs +++ /dev/null @@ -1,130 +0,0 @@ -using InputManager; -using Rage; -using RAGENativeUI; -using RAGENativeUI.Elements; -using System.Collections.Generic; -using System.Linq; -using System.Windows.Forms; - -namespace SceneManager -{ - internal class RNUIMouseInputHandler - { - internal delegate void Function(); - - internal static void Initialize(UIMenu menu, List scrollerItems) - { - GameFiber.StartNew(() => - { - while (menu.Visible) - { - var selectedScroller = menu.MenuItems.Where(x => scrollerItems.Contains(x) && x.Selected && x.Enabled).FirstOrDefault(); - if (selectedScroller != null) - { - OnWheelScroll(menu, selectedScroller, scrollerItems); - } - - if (Game.IsKeyDown(Keys.LButton) && Rage.Native.NativeFunction.Natives.UPDATE_ONSCREEN_KEYBOARD() != 0) - { - Keyboard.KeyDown(Keys.Enter); - GameFiber.Wait(1); - Keyboard.KeyUp(Keys.Enter); - } - - if (menu.SubtitleText.Contains("Path Creation Menu")) - { - DrawWaypointMarker(); - } - GameFiber.Yield(); - } - }); - } - - internal static void OnWheelScroll(UIMenu menu, UIMenuItem selectedScroller, List scrollerItems) - { - var menuScrollingDisabled = false; - var menuItems = menu.MenuItems.Where(x => x != selectedScroller); - - while (Game.IsShiftKeyDownRightNow) - { - menu.ResetKey(Common.MenuControls.Up); - menu.ResetKey(Common.MenuControls.Down); - menuScrollingDisabled = true; - ScrollMenuItem(); - if (menu.SubtitleText.Contains("Path Creation Menu") || menu.SubtitleText.Contains("Edit Waypoint")) - { - CompareScrollerValues(); - } - if(menu.SubtitleText.Contains("Path Creation Menu")) - { - DrawWaypointMarker(); - } - GameFiber.Yield(); - } - - if (menuScrollingDisabled) - { - menuScrollingDisabled = false; - menu.SetKey(Common.MenuControls.Up, GameControl.CursorScrollUp); - menu.SetKey(Common.MenuControls.Up, GameControl.CellphoneUp); - menu.SetKey(Common.MenuControls.Down, GameControl.CursorScrollDown); - menu.SetKey(Common.MenuControls.Down, GameControl.CellphoneDown); - } - - void ScrollMenuItem() - { - if (Game.GetMouseWheelDelta() > 0) - { - Keyboard.KeyDown(Keys.Right); - GameFiber.Wait(1); - Keyboard.KeyUp(Keys.Right); - } - else if (Game.GetMouseWheelDelta() < 0) - { - Keyboard.KeyDown(Keys.Left); - GameFiber.Wait(1); - Keyboard.KeyUp(Keys.Left); - } - } - - void CompareScrollerValues() - { - var collectorRadius = (UIMenuNumericScrollerItem)scrollerItems.Where(x => x.Text == "Collection Radius").FirstOrDefault(); - var speedZoneRadius = (UIMenuNumericScrollerItem)scrollerItems.Where(x => x.Text == "Speed Zone Radius").FirstOrDefault(); - - if (selectedScroller.Text == "Collection Radius" || selectedScroller.Text == "Speed Zone Radius") - { - if (selectedScroller == collectorRadius && collectorRadius.Value > speedZoneRadius.Value) - { - while (collectorRadius.Value > speedZoneRadius.Value) - { - speedZoneRadius.ScrollToNextOption(); - } - } - if (selectedScroller == speedZoneRadius && speedZoneRadius.Value < collectorRadius.Value) - { - collectorRadius.Value = speedZoneRadius.Value; - } - } - } - } - - private static void DrawWaypointMarker() - { - var waypointPosition = MousePositionInWorld.GetPosition; - if (SettingsMenu.threeDWaypoints.Checked && PathCreationMenu.collectorWaypoint.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.collectorRadius.Value * 2, (float)PathCreationMenu.collectorRadius.Value * 2, 1f, 80, 130, 255, 80, false, false, 2, false, 0, 0, false); - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, (float)PathCreationMenu.speedZoneRadius.Value * 2, (float)PathCreationMenu.speedZoneRadius.Value * 2, 1f, 255, 185, 80, 80, false, false, 2, false, 0, 0, false); - } - else if (PathCreationMenu.stopWaypointType.Checked) - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 255, 65, 65, 80, false, false, 2, false, 0, 0, false); - } - else - { - Rage.Native.NativeFunction.Natives.DRAW_MARKER(1, waypointPosition, 0, 0, 0, 0, 0, 0, 1f, 1f, 1f, 65, 255, 65, 80, false, false, 2, false, 0, 0, false); - } - } - } -} diff --git a/SceneManager/SceneManager.csproj b/SceneManager/SceneManager.csproj index 8b24f01..8181199 100644 --- a/SceneManager/SceneManager.csproj +++ b/SceneManager/SceneManager.csproj @@ -12,6 +12,8 @@ v4.8 512 true + + true @@ -32,20 +34,28 @@ - False - bin\Debug\InputManager.dll + ..\packages\InputManager.1.0.0\lib\InputManager.dll D:\Program Files\Rockstar Games\Grand Theft Auto V\RAGENativeUI.dll + False - - D:\Program Files\Rockstar Games\Grand Theft Auto V\plugins\LSPDFR\RagePluginHookSDK.dll + + ..\..\Modding Resources\References\RagePluginHook.dll + False + + + + + + + @@ -54,27 +64,37 @@ - - - - + + + + + + - + - + - + + - + - + + + + + + + + \ No newline at end of file diff --git a/SceneManager/SceneManager.obproj b/SceneManager/SceneManager.obproj new file mode 100644 index 0000000..3bb39c5 --- /dev/null +++ b/SceneManager/SceneManager.obproj @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SceneManager/app.config b/SceneManager/app.config new file mode 100644 index 0000000..fbfff6f --- /dev/null +++ b/SceneManager/app.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SceneManager/packages.config b/SceneManager/packages.config new file mode 100644 index 0000000..9eb48c7 --- /dev/null +++ b/SceneManager/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/SceneManager/smprotected.crproj b/SceneManager/smprotected.crproj new file mode 100644 index 0000000..5982c27 --- /dev/null +++ b/SceneManager/smprotected.crproj @@ -0,0 +1,3 @@ + + + \ No newline at end of file

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 literal 0 HcmV?d00001 diff --git a/SceneManager/_ConfuserEx/c.crproj b/SceneManager/_ConfuserEx/c.crproj new file mode 100644 index 0000000..9a9f1f7 --- /dev/null +++ b/SceneManager/_ConfuserEx/c.crproj @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + +..\..\..\packages\InputManager.1.0.0\lib +D:\Program Files\Rockstar Games\Grand Theft Auto V +C:\Users\Rich\Desktop\Mod Stuff\Mod Development\Modding Resources\References +C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8 +C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\Facades + diff --git a/SceneManager/_ConfuserEx/dnlib.dll b/SceneManager/_ConfuserEx/dnlib.dll new file mode 100644 index 0000000000000000000000000000000000000000..f7347ec63817e1cc0cc756b5e3b0c58a41a3de4c GIT binary patch literal 1138176 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 z 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 z z6#k{`pam3MI$TU_EUX%bK#85Xlno@tt;5B{&cdp36ePwX7Q!kPBBljOGWiMC`tG%Fz0@({HS#-(r?+HBN43=Zp z%7X-&E_9tTQ*}HC0}FI+0#r^jfis{PXrGV}gT`5~fgzU#$QK7QK~a}40cL`-LB1rI z2@2SJDKHb11M;Q8Oi&Jhss-f$h+2({;tXtJ+{{8u5WjQiuyYiHd&ErDV0&aZ7`S+~ zV}+PCWH}hPgjv`j{d{hSiv(HN^W``gxIo8qfs~8o%X2Vr>G6W@6I5nkVAHq&I&eo` zK#(P0l!1XQUjeK(Ukt=n-MHiRQU0U*f6p05h>q97aS%u0x*OoD70=OLCya0{_&sDUilcaKkq^`F>#Bn!X+ z1gZjr*|l|r*uiyxFbBH?xTVLM)FbkI`Nha`)RZrfQJA%=zk|njEx71LRERd<{_0 zL8Qd;HNj0ZaQgr@N6gQtp~1kwrXvCg41PupEl~7o2W11X=R+K#7NysT!PUSi#|- zD-B6wf~?SRfXIn~6BK0Smmmwf(LvDU4LIoKm^3bfoe$2#5=;yX2B3C17gBcN(RLML z0%sRqHb`z^ixg&I7GweU7}x|^BDf&AhcjQFgMo`pkGn`{HN1Jl#LTI24b%YQ5@Ld6 zi%s|VgqZ$`;mQ^sumr}2u#KHrkR56pJIFS$uh{Yppw=ZJTPMh-aT8)6G?%Q$NOs^j z1~-(1IV?bT$qI2mG72XfB%`oJ3Ue_FazU-+0$B-41cIFThEOZF!L8Kz#LU1Y$O%4i z8+2}KU#3Jf>=tK+HL!4C7UTv=K=#To3vz>7SZop?QP4H69N@fX1v*9H9-j~ga`pq? z=>y)4!i|~}BVYl=g9s>IWV_sp z1_nb=TZAQ_7nIpRCyFz(F3&0cwKg8*xBy$2Q<)M{o?e zizdN6#moklfCe%|6@n3Y+O6=9|(C|n>n1_`oa8V4%5QH+xpfCLC6 zBtVrDXb%T?f7K}l4VzccqIiSpEH+$T9n|- zo&Z@_u#AC$!3Y$;#TFb4T!AbQiV3}RGlmv!ppGHLSFA#;8tS0Zn42X)kR{)egMmw% zlNrW@mVYOi(8@nHZ8Hu*Hc0sgI$B2=RNtT&#f~rv!i22@XE!+X#E3k4f~)k!d&FC7N!Pt-?;#jwiH-Dzo8Iw(F(ZS|NsB_!TQ@l zcPwaKW6|gat>_YBF5*}R)el+N#KgqRlHUbdJAMn)=3`<3uLA;?GN7_P7t}3~W2(-9 z(s>{nG*1s^$T3yt!vw&LF!&M}kOn4}TCjdd`|>j*1A{TRjswYYvAHTSFfhbIcV>t~ z7RfSLGcYiK8k?X)b3uzBK}Xe0Wnf@f&cML1lYxQZGy?+zXo93Hi8vvP6frO`f@YbVIT*O|?T}@P85kHrm(aVwWuU?3%*Y_k&CK4HnGbR`Gkd-X z$f-qo>tO3sL3y2-L5`7u!2~`2LF$6 z2d<#5eG#~)4jxNz1M!Q&e9$s3Cgxg@awh0a7lk0LMoiTp4f*b%*i#Y{DSixUs40mv zLl|Zf%srs=4CP5O_khwelqbd914_qGo-}h0C=Ek-GR!@o^b6(5GWUSeE|e$74E8&O zXC=?c4DR;9xLnLVpcD(^ax?dUk}HhM!`uT(t1vDva}Ow?!nl0QJ)l$yn!Ezkk81LYP*xBVOTM)P==f|l2?jRiVhah#UKbVy(4913=9lrpflk-K&^pdbd+zgIk(4c`gsHechro{p}P(_1X z0<`*`nVVhS0Vxqg6x&LGu0?=oV$1gdcPBt;gdM^G_r*cuFs=*?3>IMXL8*#aM8jSX zd{_$;vld(aVGag1Zg$Y(T4o+5b`1^*1~y(!jSxl#E?ptE{DT|}Y~T>%goGFeXj~FB z?gN@{bpq}E$-l)8b_FQ)f(EaBK}{J^rfM*siCKeFf`LtyJKqn~q5}Jui6M=Ffx!~g zKFGff(#rKWa*u4_OX05FPQ7jshL7M|AK+ewNXOPlZ!N|a-!_Uv4v4N3+P2t?B z_xt{V7VxPtF^gy@fWiw@uQM|UF)%P#fzk{=BTKO?D4_{4Xeh$uSr{HMF)&zz@`)%& zj;RJ@KiEiacCev(Vnqz=84B3JB?kD6;$m?L2DU0D4HZb1v|7(l02P90UeCzD#={|@ zCsvfTo}qvPT=F1mM5yBB6w?*g1la}oP}D(BWaKn@3Ka%z&rpN1 zK}KZ>b3l0@nLJ@mC=b*k%@gM0ERF>Eid#&WU)v8NCCDkrF33M6Dkq*2OYP>Ehv;93v!Tfv7iJ4o3MzWh@f!w6hQ`-d|pt70mrDIaP?F{ z1{R3(1cd~-^W!)`M?dQc337vu83&sHR-(-$$OTm$nJFwPD8eMjDk!RZG*0(3JBvJ^B7Kp_~B{|eNb6cou90T}>24-)DId+Y!I|APuq zPt%=w8N3|vNH zMLHX>6tK*k`AMKW#{w~i4MKqvY$Vu1&_NxbszFDNsTxE>tOhOA%9jG=QZ_+09cDo` zEvPuFAWJ?I$N>xt(gutSpe`L~&VWhd5NPYzJs!29oDHy&9C|l0sNKWK$-o0@>wxCG z8bKTSnZfG^Ao&I4d2V)4AwC1_1yI?Ey{HH6vJxx0wgF3pAjYe$3H2N(F(Wb6iUc+? z6lf%a8&Tq1&~byyY+8?)ic>&!>l9GU2%96D0OCMv&dDG)OR)`T#(yG+&00GNRC8J} zF|!n_f~t3QNKk;sM^l*?80r>B))-b88DjWaT6BLET+J zZt)0VZb5D~qZiI336~CxpST%t00FUFSxO!p)J9{HV<+K z2}}&^Z_pq(!fTLF7Gx3R6=c`Y0F~}M;DcgxXWiow*N>GrmFVpCrARCHOL8wweEJ`6#5E98l?D>+63|yHJ zQW0Q15P5d+fga$FHbj6EApmN3gZdOq3`GnY(0O$x26x7+jf~KHvzQq`LofEA^vD9P z2sN}oO*3XT4NVCKHi!^2YyN9cfiz27n28y(5a$v&x|wBD1Q;PACQq4|A%Y+~LHSpM zfq}sR)Lt*$#>l{=!_J)l3}gs%$pJ3@}u`q4hDkkT@z%m4}jd?4yxaS z7#J9wLG4*Op{dyKoLTl;xPJr-8~Q zQ11lHkYlQz4if+~5L?$kMt}zXW`N}Fn3y$8LB$bEEtn75qy}Pu6CNziL5G&GGcX7i z{n-c_IswV|Wr7Aj7c($$frA2M-b|2ra!l2;Kr~{Q5G2gRQVSL>Dw5j-G6BQ^x7L}e zLDG=%6i{D-kpXl|9jMMIGTFpXP+Y*lz|}CDgMp=}4$hqe;+}wW=YqIGn_-IQfw(bn z?tBn;8JxQS#Qgy0E(CF{w!ri*0&!d5+{GY|NEjLm;jg|$5g!zCIDu5F%|287MQFDRY>4kOKTp65EFAP$T%jJT96@3 zthHdReDac@t8=|UxkH#Io3+Z0aFsZ5-n+^wC z{yYW-E^XGL4T1~>i&Vvn&TRqF5=c^q_&E|fkBqW3Xr_=A!w zbM0YJ2tc-wK4*e$A*}@|VydeK?VUV=tR6f^flm)}Em%F5n3fb+J1A(5flTm%+E`o+ zYAt|;{GdY2#U*etE^#D{$3YrFu?l9$L6mD*L1-rCTCgye1d@&uFdbk9rVg-h5L5L@ z&~5}Srs`81ptH+BopsQ*Q;;YVOD#xHi%U{Vst%NrK|VMQG8XQGQjlxGLI@v}!Ns_w zklb?yq!Hu;FayIq8U>)Tol6=?$61gLxK-sKW5GfQt194Pa!l3dK+3^;{2+TXKIfEM3XUjXkqU{({+((qDXVABG*1|+Yg#iUUy!N3Muy8>r2gM16p0agZP zctJ)?n2IYw_JZy6g9j6v`n1QM5AVe2Cs;);c zU0{YBQ}tt*0GI(fFBBwz8n6#RLWpRp2L(1*EQ*P__6fMut$hljSZkkwlu9XZpxXKz zBnpZHFay)A7eQ{7W2$}uQwL_qF;%~W34j@LOx3So0$_$5Q}t_@0GJ`iRQ(1f0A|QB zRlkJ^fEj%9VxT(j5n7%14x|WH)qqFfpMu=94pKZY>v9)80JQ?ZrxGwR=RcEVVAHq? zYB=k%GcjvC2dPzJ5-$d8f|g;R=_wabTa`KgIY{|+a4nVp0>r)vVZQ{iZ$sFxKTSsLZwmdh2;V7xAy8h8TpG#U%#HlkA)fEZ~9`%#dT!_y$TC zRuGzrS>q>&%cfOS^ko}E0aN}L2?n;FC!iTejUS-V1MrL^7kINg2h1ceLyoDM6D9y= zz>E%q8_giez{bR)!6eDRrp2b!Rm8R(&4&M=j77MZ z6Jj0~7juA2g1A@`WD+;bBrrpcshS5S0A|39Mz~l2;$k6)4P8YF=q~05DbNrE*#mL0 z6v!T4n6Y36%vgkrB_ZZvaj^u*B#4WpK_>CROae3Hn5y|<0$>KrXoQOuKn`NjP=eTi z#l`X<1saMVdmt{B0ofw}GZxH{W2zQ}34j@x_Gp5PVbRdWX^#d-frb{s9$An*LNH^& z3^}H1VVD4zA;(lL0uul;U=|m_6Oj?fTow%z5XGut2C@HDk==HN0x8&eT8LB&+I_8I zC<$uqOE75|gBg-c8m1tI#%|C=7ndB!U7|2s!3;U3YB87qm;rMJBAjhO_Ooc%L+r;A z&Nd(g8g_91!}>r{oD3|G0ubH@LI^Q2Yq*2-v1oXLC{_(`kollR@RDR;69*k~tkuP=!_Nd2NPw6R<;wqy zhw%C2B|wEqAjkluJ{QQDpsZ1gmGDgs*1!NR}|n*Rp%2bo!f7&Kx)0SLZt0(2G+Xm1fS zxTgd;*jg-vRV0u}BNkL^2{C||_sUC}Fo|giL1!0(f?a|^$6_%HF=*^yWMG46gUW`m z3NdJ$WCTs32Y`-b2DN>e89;6a*#ij=T`nPpf1;oXPBtwjh*16>1_m}La~Ej6Z5-5% z%nT+B3=Hm|I!uR|MVCv65u%e_3mQf&`RbtHfVz}L4@m`^)-R^wC#(!ywd$adE^Y-? zDjHxWcyEU$nArvr)dDlY9dbPo6JFJ5gCYwQv0#QAQ?(9E0L%a#L;w=7W2y$(kV zL1ZT~FtFWWgWgrb%^)nt03MeFjirFnB_AkFK~y4{(+R17F-(E&A>w8bl!2H78dC(V zV*oWVn2NhVF#&Q3lSU5%16wV~eUM@S)R0Rnhm8#|F>5q~@`@2CrdTwJK*a(}tue@_ z;C2r)1LzD>Pmmw+n8~8cU4(2VxR02!9cD?bJ|_bUGfVzgkm=0%-#~>H*d_=YY#kE| zvO}2jzk_0B7dHc2>3z`bJt)YT^M8Oc5?g*ZXv>xukG2pK8%KT*2LqQzwIl1flCw?mdp%_3=9kq{h(k3tvTrhPnUq^ zeZV5j`F)^eFQB*stsw#BOD|B~(s%|MCt|7wDFUtcfM{daVq?w+HIktcY+&8sFC?GxL1y;8kFF)gbmmjycif5e86^q zQVIAZOAv!aJpU&suGn<+i$f$qv&Wz%9c$Sc*jU-}--A+6D=38ogOU_0n?{Qy0~;%Q zeh#QU0+o|2;N@+;nC3FW&E;fcW?{|$2r3*wc@T6sw;xD7sA12PzmJ=NE#DJ#3xKvX zTfPSa0~dJFO`RDh0}Ev34U0JUJu%4H`nq?K$In5ln_&4ifq}svJkQ6H z{{if&{E49HA~9a=I(E+dNua467H05?^@1$b$(#(JDyB`6fen1TVR-R0Nzf@3f-Kc3 zAXk7AeSQx}NRXvE6;$fC55Sag|0w2CK#qE(3NpQsHp1CtOJA4}~FK?W8X9N^+i5RjBQVeVy5it2=P^mOi zkbwoNmqm(!4YXh-AJk$HW(Cd1$+K636y$>na6uM9?tD`=1}<=K5H>d_$ZB*Os-Fp@ zA9T#d6i^_uiV5>rYyd66U=!rYp9&J<739t51}Wkb<%35oq<1}_KAcavaX10SRg z(*RoDX{iJ@0V=c?9%we79pV}-2qnzPmOmfVPJnRpQ$TLy%wGU9h_MD_x~i9WM2JP@|NsBNduh8E z7#IRUy;Bmid` z3$d_;uxqi2M{u!0%rLqj#-ptcx&;7q0|_TW51eVt$HEZ;?QO7l8C?<4%3`Vp)r6|L zOln&Ej2eEN3~Vf{`M*FFmK%~({%??oQ;~}}LqYLEAqKVvP#vYE#iYy1EDm0}D92Q7 z1!~cOTEt+698iGT<7CNuw9U23JT-8vP(PxISXim^PJV@OQI@2)-eAfzd z{sdXj%Fzf=)xn?<3aVq6M6^KroP?N!n8E!oP#witXAi2`7J?ECt01eG5g#Y$n56sw z$T7jpoWd+D;EbV>1DdVmXVIu*1npbZsA6Q`(q^ed$ zI&3WY4;dNQz}E(W651UREe`0~Z59T1Z^&FO69Wr_mmh-|C^_8XXDBM#&QPEMI>kU^ zIq0MdCNV7(!Du!HE{!vc3~UgEpcn!5ts!l00%4-D033pl_9ApAAJojc$D;-p|0e}$_k!H2qy$-m1!_No?tlmbwckO>iGdj$RG{g6(8^IM zb7g3sT)`>W%gLA_VL<@M(_fRe8k$Q`PnJ0qAG1X(ruK%H?WW+8^+#UM`z zF|ueZkz`=I#|fWT2lYLW=hZ`CbLnyn%yBTbBE;@TOw9R`pj(+-KwUlNe9$e4wXPsG zORXD-V%7k)u4~;vY*xscX%A42hxP+?7#SEMKw(`25(STCNSQEdF+sSXg^p5sC|os& z6y$6Z3COu77B@gAJ0P@hLDYZ`G2w==A?iU5Ug%jU5Mi(q9w-~MJdT%B&PV~u2dz}i zlgoP zi?cWqwE7U-^pzE4%?}5SWy{ zx(m@OC<@jD;b?&EWD#W15d$5~0E#I@kH(xy1eR+-mV+0$MF@*A35w;3K?4h7il7+S zNK6xqm_Ir2eE69m~cEI>zPGl}qU=m^2ZK!v>yvxqRe zpok!Qeidlhp$JEQ9f;=4F9lH|`O82)gf2Dbv|sq||9?SFsFPVBP6Myj&5O(guh->f zFKz)xA~+6ksOSKzs0O(i6!B1FK;Z<>UcI1r;Sv*;u#kYqC?q5$1tk>()EO8+K_@6# zJPV{yN=#T*TbYSPV+ANZ$qCAVj1`p1p8@iNTt2v~B`Y2wEGsB0C~0&Z$wFb66Tx{x z8Y%&z}l1UW!Rj2Ev^V=H^cUZ5h!P(ZY-?kdv9f z-Ug=tSX5z;5-E=SiC_Z-+4K8B46gic5G9qr926xI;t`oDJGb;n6l==ZKJq=4Imq zcTGUUCE$(*voW(Eix#sW3z%oZ#wi}jqYWDN;bsS&A0=vhLPTp9WONvMYo8aW5x`Up zq9C{Sd4mKXcR~6<8U>&=p~9f8%;0t}s5Q9;+(u{B*Z^*!fx;#o)cgU}_{_DwAOl!x z{Xi6JwI?S7ORYbI4YH&*0Kx`YQyU0jgY2md0n_X9k zsmP}d)im~eUkL^_uw`aKOhtdOT9#iT%)rJ2u?*Q_h-OTSAu7ed#}7c%2y+Q?!5dor z3=9nS7#J9I85tN}F)}dtF)=WRvM?}&urM%8W?^8kILpewz+QTak%0-cl3!PbsmOXK zLxDIn0@(9GD>ES>ETSdI4Q_GeuK*ol!3jCBM2M-Vb0?}lAx`3i9HRj`dPW{10@W_a zlD`r(90xkN19rX)r_mjYTCht_gIvNR$b;V{OoBZ5F`&-m7EsN@CJ1iCL2ZE?yI`RQ zHtr0_I9@?sLdNmtC*e2lJ_{(E&Vh{M6Xe5hoFE^#C6~Vn6iyIVae@!b1qDVfR928B ze>JF!EhZ$Ukp@~DD+N(023Cp8);59gm;}YZ>paCY)`12MKnF@7BtUCC#laHdk>JFD z2--diC9vbqgB;H<$WOrW{Q3Ey%3VNE0F;QIqem{2pa8fU0`H#H*a#Z--XzJuX0eYM z6hIe1b_faz60k!M+|J2ggC&403KO3R=_mEjd8L<;OGql?uugge0b4&e@XICK z@M{+o0k_QZH(*OdZ$QJw5CwuP`5QrrNK#M|l!#n+qb4G#CnUkGR`3iuQpgHIgauji zH-Y9@H-kn{SwS%<$O@GL>oB?|D49P2)BtsW7$*ug1Hxt!lms_Uv1D7x{Au6=3gG!! zTLq#AY8)b>A;Mx=`3<1!(F7&)`#{AN*gY)b5uj!cr#;XA|NphE*h^1>f=^UX6cl`= zyKxof5EBJO^Mhca4-o-ZK*H>T>>QDxEA1t-BIN&M#S3!^a*F1Gve;3q;m0AF6_H;m z%)kbzgQN}M=@*nWv;`q%3vvo_L?YK=f}FYF!U`(Q4mJXjR6%+nQeanc2y#XkJq8ac zL+WAso*)1JGl5$};LSAP{R+$svJ4CipnWOKx=hSk%<>8O-QfK?V)`Ji7+d}q(5fWx zm<}6wQU;<{kg14w4|3YjVuqCkVoXKadk_H$ZE|RdacPS|oX5`NeH?Vl2rR3hG_^gGH@}24-W$$)&miRlrNw*G8+TvvY-S|I|r2B!)GG< zNlc3wyqZ9jODBV=8q^|X%Reas+ElM=%~X`V2hsLoUZg6{oWGf!fen203sQ>3WWgw=-25y>x6gqJ-uyGW7a3Zv6F_+$k933jlp1+TiflWsgVgh?Un<$bprlQ*@ z!4ElC6x0t*1h=nQHQYHF*n}7~Kvu};F^Om~vE}aojpKlpM{x78 zdKsh`G%9Whx_=fvAx?1nQ;@YfiIaiFScDlgD$ZJ+2-m=&?I6SjmDX?rxtR;% zW@9HNK`w-oL77ZPUyvQ#Di=gCL6Ad7j3fUPsN=~d$S%lHd=`{Rw}N`0@a*pW|Nnmu zEl?i=-X{VzX_>$+doD3sk+By%Tfm%u2P||CB(wvx7)FRuBZq-O zTZe~@J%0;GbSL=C6|m`S`MW?H4k3LeCI--Yi)4`9`FtGUK>*OiJ~wEVjEw`_k0@ng zWRPA8B2;;MK$H$AGiM`+Ar4!Uca`~{C`dpIyk3Qw;R0x)8DwTP$n{Jb_dw}=k0b*d zc;zz}Q#B~4@_Ru`J5(4z2b%_hPoU!hRUtaAf-L!J0+6*9`KLkiMr>lj?AjWFtb*+M zjLZyNpc+9(m`RXB<0@zdg_B8;gH7Was8(bbj{v1-K{lgHoRAHb%kOb<>acO=k0v$OVOsAQRYi?D@Mu0kj{qfCcO>AtsGHBzcbf10eZ*pcDexkEy{B+X`Dt!UWor z#*hjs=fF7#G?EJ{iE2ZzH4HqUrnee9bnFK-v<@Dj1E~{a&G&(7 zfwhG=jIKgD$h@5SS}Y7)JfIN~aZW+Vd}lRi#Rym@n|K7Mc;GO40t$X`AM-6E149}( z{6XoH8CvFVy&D_lX{Sz&e|c5rzDJ_H4PgApi(7HK>J`C5pPiJ7Syl%zF`lo{BV z!5-xiVwPdk02Q&2VC2j{01iQLCSk8$3_3dl)X@hQ1o;Napz)+^1;`kYE*}SYEs?4) z3wWiFAWMD_s0+m^$g0aP$O2ihBFvf(T2v&+nh#n)0dC<~f%fMMvgU(UV}O?*>J|&K zf@i(Klia$gf~?^AW$=(AoV!~Y7 z5==sjf*gWe`MW_&{xoib(iN9@1gJwR$Z7OQn;Rt0Dh8HdV$SF0VqjwtV$-+|Dthww zfU>PEQ#Cl#Ydi$yf6x#MQ#CjqAmS_QvtLk$5??iKu3tFD0eTcjt1Le&&pA9myv-fP}>xu95QC0 z$W*j{FQOF!k?J|l$iM_iE!ylX9Qpg;J3)+kAmt1jLkN6q1{@Z!G--k>O`;F6Kr%1H z5*apdKAI=U!fMRKp@n@I?sc}ft#PgoDi!7 zIr2eUmIXP$ON~@P`=8=Liw_}q^>{%`_#~N_!7KMbWge?|1h{a6E#BiadIT|$O_!TJ ziy2&k=IL>ov3J3&pn{9;gP!3Mbp` zWvK;qADCEcL0t;?b}~fc8{G8O0$uz8VZmfTb4yGNhe4-DA?9De3t<)Bz5mBxEX`C6 zTKfv&@UazHA7m)VzrhHaY$;$X@`dx*n82Fy?}DV*iUN@(z$R@n$*~nHDi>w>8eiyuh65<}{91+}OpneVP{B@?{gP{IE7AT~cYqLRAF=(o(HV4Fn ztRtz-1+m3y^FWj&`0(r6d=Oi#wgA-J2hG*2V_;y&1E(*LMzQ=RW(F>%YLI!LcE7MJ z1Dh@zc!iV}lMsUtlZGH@d5ajYb|R+^KT|bG54#vg{vpuujvV5~9PDC~#r`pCGm7(q z?!DO$T2~|hS}w{0Q7gy-@fn1d-^garW&k`E&m9#10rm| z%^=Unz)%1-6BI985JJHwkg(9|QNyKpZgxZpetKMa}>J|Iu6x-rEH4>xxH$Cs#m+ zb+UlwYN1EiaxpM~7xshhBLOXW0-cShEd;vsSVBuuOG-;xOGZmpOHNA^9G^@Kpkt1~ zeO`)Ux=fZ)Ok%3NE0d0T>t%d@X@Y;IJ;vwQ%%n~3%5=2OW2x$-@10rNWgdB*F z=LC_WA)rmp%(X?JY`{`m49W)Je)d^L28KdV8v|TLfW$%R36y%Q7BMm~fVO6VQ?n2# z{j-Zkx`I3x0A0xpauR660%&5hpMe2f>3}+&UqRVMb5j39)GX|s)-8vD7 zx|8VYilreEpk?nUdf*(eqd1FIAnHJe&cLOxS)>bAr=5&l5!f&kDIQLaVhe~KeG~~e z2kuu#h%yclVHRy>5m1{!hXYgr9|tYpMJX;^eExy2v;xO1XwMJm?6o>}ZUz=mw90{s zHPB#LH7FghsVA4ur0tkS^iV`662kdy+A;IZ(rXvl!p0D}8XOyKi)wLtgJ z=!!E{gUkUBjOPCrW`GpO0*v4i12X2x#Z(P4oGo8L7;>I3GebKQ14A*m-O~apQ^dF} z3Yi!fSlIJVfOeK}fcL5jF>44*F|g@sLv2Vt$WQ>00iC`7PYkpH8(iLk&n*Jmt;Ng< zK7<{nOppbfS3&F7Ks%$77#JAp7#J8fGBAKwcYu55Wmj zOe?JZBnJbRh(4LXBi z9usqI1t^2EKo+-Fg4nFJRUoRSnv;R$pC}t61Cti`>|kYZ4h5~pl>iNogZ5@JvuLPD zF|cug&#`6}31k7CV-4BQ398Guxglp)OB=8=9A#r*C0Z{w#=@|$)i!4@94yp#l zTfRGJ+*Xi-fh~{)8ip$w8Q8$PcmkmUptVy_CTIn)2?sNihME)uTc9|Xg*v)XLdZse zmSusr_z+{%9TqfK2_qW?I^7k#{f8K%CZZc9f@~CM!6$fY5HUu%p&KQNY!v8l*&fhd zBVvsD&5Y(jF=V4a%Zn zlq9lIpp$FCNB0wB)OjYfu#!SH3Ut6O_}G79jA}tQN*dWH(4oBGD+55OITBr|46;(t zLA~JX1VBpl(3Q$Ulxk=|a|SOH0|RIQAE?mdVzc}Qs`i)zilv1Z*a9s+fEuIBEE-VB zhfqmbu;gVBj|nMzDuRs$U6*IE9i&l19n_3wW*67E#RST@B7yASeLJdB3~ZJ!LEVSC z8qnM!=q!87o1m#{@Ok?hH<%dMEJ00J&bnHdyiO5P)`l`c89q{;*TIPq)Z9fXSy^Fa z1So|;6{9f)S;1?cLC01IvdY)TUn)Ms!N3K+b|LUyfZE-63=9mMb#-v-ZK1}1N){*+ zY`vVr5l{sHvk;VciqC>f0^QgUc#lo(?h*zD29^L_RU}~7mUtR__@cKc}xvHQF!*>rW8|chp28Oq+l5A{XHfXE@bSK1hP#sxn z!pOj+%B3U3%$DBEz{XS!sw zUE?zosF$Y0&XNC6kbzALc2{Ku0|RJ}mLS9(;1LQa6BPKykjA+dR0vc~gXbxXrJy2c zk!1|>062L<7Ws3ri9=TTLzF{EaHm2d27JA*)~=!-ys!;@pe#}(cnHP?<%ptZF)%JD zg=&FLJgf&bWmsw(K-~}Uo<>mrqa51*(9nW(KUn!#G<3kN8_@U}3qvUj149L<|DemL z#RA^J%LTn9mJQrA5oKmz0AWzmgc!^ZIt!P9fuWRvfnf_2A7)@+*uliWzz$j_hlD}q z!o*-~&<0?b7^s;8!XUZ9hAjk`L8T@etA-vZG+9eQm$~ThGP5oPG4h*09W>d}G<7Y2wtt1b^SIGusl;A*j!f(|3q z5oZP;Juh8L9~E70^5YSPLXLnV8ujZiG5UO9UE%S}++gVRm*Q4k1nr zU06*b$Whk_E2}MUpj9QHy*q-Obxkk@Iz_Cdp!;=nJXn{4XpM8A88gr&hLTg{H z1WG+6po^KnmT0l+C_=RrA7&_E%?B-C1|KYo)U5}lff8F#KM+*ffdd(bSprbA7Q&nW z*6Ib)Y5_|_+J>k}3aaJuVNmbwpI9ja0~7kV0!#h|K?XJfCX4Rh|3Q~nQ@8$LV)zeg z34rQb3CPeLsLV2AU;vLf_CT*w19h#085tNro&Q`$28P+7QHvv>F}_mJ6;YsIh1`8s ziIgdAkHBJ9EFUb+S_<03304eZfR~=a@?0sBV$hmXE!I-dl~Q2EAVz)_lF7@F6obWC zOF_3$ffa)o;2Z)o`8JYb&=Nr{)>2Tb9;_I|$ge>%nfEBd&0ulXQqWljV8tK?ikqF0 z6hqw%Iw=6G7{mZ4ewZ^VkracjSkz)I1>M&MRt#c*S2n^FuSZf0TDh&oS_--t3#=H# z059x>DSnDj3|aB1#aarwHw&y9#K><%@}cxGxDT@+62<(WYplTIfuOstKy3-|C<9Y9 zsA6ORk2?r4K>-CQI0vG)zFHK6Bk1 z4h9yum?=aIbm%KYOqhwO24oO;hi{&S8AKj*yemYWok_zSA_h9|7b1qH#{wb`IzJez zyd^{)boeVoo}Ed<3L*wNqZuw{4G{yKo(mVV0gFMM2x|Ejhrsrku`tLmGB8wu!oM06 zKHvp`5Wj%>hT@T2Y@)_2BHY@%Ol%r~2NGy7Uzk;hO-7IvvM8wr6eHD(nHX4fj0D-35ZrvwT(d?1XbGq!lCUs4lOPM& z5@8O|pc^Qf1=*OYLB{0o1Pxb%7I=aSeb81}c0m>md(eykbOS3#{t^iWHqaGDNXsOl zp#y1xf}II!vbw1L2d$Ybg2+NhaElW>NmjfX5{%$>BWQl68WfI@&;#j~i|PdxjiBW` znozxWm8?9PGc z5M&c%FNW__1|L_(W;BT%v~HP+0kn^>7Br7N4|IH(wmd8mf}EG9VGByGZ25B~K#R<0 zf(A7qQG*_|C)u>hpiTx!C*Y-W)LJtOo-a%W%?^OV8k}ulYj>DL zv>*!$xy5)O`{~3Zd9_VAI3pyYg;_w$6E#>ExIoJj!TS_JyB1lsm<3tEJQH?77LamQ z&_pW_2d4oGr>OA}@R^LP44{5aJ+z+#nqP4QcXe1boIr&IIR2Ty=Zt}hMJDFjPEeuA zQriWhSZljM6dy}{m`k28N|f41&zywQXE% zpc$nG$TTVF8ov?-28JdE28Ia?3=H!a7#P+tFo3(byPz~1cv=PIFc=0+p2FB5!$21a zg7{3;Aa@t_!>TF~Ehgp?(4H&}7byld?HVTL641^S4Ob8^kBPYiv=K$a4a7@eVlDw~ zjL>ig@q(C`ORh08Fll&zcrHxLB{x7kPY}Eg31zJ@E3YdIH&<&{2@CMa|pm{CS*(*?xvVmKxOw}MZY~?Y$gbGQ{-`I<3kJL8$lLuvj@sy6=Z?zMg!+`cKb}wkr3cC1G)+W6gJG@ z%|l#laF=XEGY}F~;C1c@J)j*!r0N0fb0JQT9RmYHBWUghT-b22f!B9|ibZuc4)8`G zUQW1kuOghwso@MdzfC-XhlAbdDtJtW34Gq@U2xu50V>oG{`?Ks2u>bs;0+zzkZ@xM zCl4)Q17^_p3qupwE$cw~#kfIRPC&_qja|bVH0uXy0JFavE2j?(QS;E8snxO{m1BWad=K?Jqg?R5M%zL7U>PU=N8+qv{3!bH; z(5%042{d(xg3gNV<78j~rzb`RNe1w3g@R1g6F?_YO_yb0%NLPjU;~{c1UkYCqxR^CAf!g^@Vp#^f91L76p!0=U#X+RFmY7x$6LW1ps9s~z z2nQX*26oChraI6$^x#Iet`t)p=oESghnJ}ibOt?`qr+AQI$~Z6e891mumLAS3L^tU zE5d!#Kz_}XXJE^3kY!-&WoBYv;u2zn2E-Iu1~v^oDF!x;E1-o5Ld^d}Co(WFfp#E) z77svGfs6pv@ItKlhvXU9)PxuXS*ufd7+5s;p=ksh5>sUv*aTUtGk6$S^0QTt1$7$81A?s8=^!0~ zAUnC`4M0vU_T*$>6XqA<2cOU;%)Gm4~3_06S={ z2&gZ^R1J!|zD#pg@JuudgwHlBP+UvcfRzDsjeHwg++@pxwoyFh1TBco?|`k1Vbh3~ zVqgQ!q-zv1Flci_4uaxgV&l+=0WVWx(})6vAPW<87Z{rm8`!U$?1C)Cr64I*PC?e% zg`5m5f~=6V%gg{e^syaoKXd*rS&*&Z!&MZNvpTLx}gEC!bhU)Iz-wGkfUwzxxCGgt<_fY2 za!1rc%oSvZ8Z5{z$P-ZuGMrP8EB^)u1DCikDEvU34uLxCvT>0Vl{tSWC~b&v3o&T?kYix8Y+z(yfRqv%x4==u!c+||vmlWT%7_{wQVeWj z!mQv`bwZ%i(!R?vunDut8wo=8Xb1}k34jwRs15<=cu?vQWE0}ZKLRRP1Uahnc^Ftg z5h%z}T>wgS!dxQ4+}d`WocXsw{)o)K0~!++6y(ek6wC*mU7KYjEXW1ofR3uoGGG%F z6z0|zN2tHc!N3L4EM~A1Rt$jlrGUWFbQ&l3jm(tCQwG=W!GgENH4pQK-tLh4?F^PyN{Qv*I z9$aLB9SG{HGBd<7Ffeq1+GXGt2t0H_xfv9=y2dQf{00j1{CrrAARZCIiY!rxB%#H^ zUJY__2rE0-p&^iRgazDh?*`9LF^Oo2aEXALqIDdQO%+TcTJokW;DzkMutJF!$p#i7 zmi*(;BBA&VXc;Ce6DO-6Yd-iQ6Hu(M=`stla&L2rz-#@+?-Mg|cj*uwZ3)!oa}L1KQ`I%c#Z5$70T?h2#LR-?`ZM zSi~bCtocVlX&dT*Nsvmi7*t`g$%AqSbM-P%N`hSeF34J42&z~Uz&@-l0(qLHxD(W@ ze#pT9ZZ321vA87v2c6&wu7tqtYhDHhhF|d+fpn?BMyseoz?!*^mR;a|H?(7Vs&Bd@L-W z%MsF~KqpgbGeL?6=KK;6A3P$)mcIxTd&%GxxH|fLERbu0v>&~zGmlR$p>w;hNuD^G$h6j zZl1G3+T;0KL1hKF)oSz%JQfUU@2NrCjzSEW_90tQd>JyZ1qvt7n(K+6aAIa*6%i3) z&;SJrxc+2g0Igt{1Uko?O(al=ff?)vNKiv}k_$0tfEQfumIb#b!NspGqZS{FF0+U> zJ0FV%=#)rMR|2%LOo)+F16;}?CptkEA=dnp@(gS`We}6|p>4BjP_hHJ&Dfw4pmJM~ zwYr9ffklWtA5{D5I0>J&ishD1Q+;f-LB{6~bm1ymlL5dDcs<1MJO!dwf|&csp+ z(#^zL3)0NQ$5J~TR0r{~)`B!M@v+r{G&AwB*Mc?6F;&k286wA2Jr_#PgVOUs^d=^a zPY}argN$LR1*v9YtpzCt84gm+#K&3-R_w%74OYd>!kV81E-gT3!Ll%1XJBBM%*-Gt z&ILOGmqSFD_3lB?5?oy{a~p`6e~poWP09o;06Kt^8GO(yxb^^z_kz!N)dS16GcYjl zGiZc?&R%8LWfc)-y;shjzk`8+O~E&Sfk6)}lFFXH9V7x8@BYUKQ5DF~0AAx14cbNv zR%Or3qRT9<%_vbE3`){0f-D^D`P*f{e;KiloH21X+Yx?+K~h<7Ly~gdZe( zM??$Ms)nq=VPZIN2r?(c#K6RG_$ULYIA)MGU}gBmz`!sCR40R)v>=Cr&q@ZZpuc+u z>=SuGjY!C*GO*xrupnDL=(ZTPeE3B%pmG*8YR`RkU?`K?BW`r19yd4?gVRr%@YZ_p z<+6gHzBed*m>8xrcs~MfMFH&OGFkh7$+^=DWigRh-mxE{lWs$|8)GNnSy#z{w+G!whP%Wz^rBTGd zpbg@#fJ%cJYT!B)bOJ1RNLPa$)H-9XT>wh=B4C@CSZYBoVq&cYnGQ<+Ak&$OAAxp( zfh=GuehgxQ>;Pp7u;HM+bSpt-u+**sQLMGAL3V=bo!~%Zw}EI#f5(~uJm@dTRK1;(fkjt`Nn-+NYM4z&oJqX*1gK&YV=D$t zfGw&8DbVI-0=Kxq9EcvRGXJ!CRHYhVP2r@%XZDnExUno@z zaxIJvaxshz(h6gPT+R$W>68mXaWgTqfsa1dN)h}%#dTM-UAZ=Gvt`6_re6g3{V)cG3;hwV3-anzaR_bq#$SL zGJ}gAE@mu(+)zO|h)O1i(`!M_Vq(^K1R80YA;rK3RV4{m^#>#~4I~3SwwXx;e1kKS z#&jtLwrW-`1{U_>!yrYoK*>U5CTKE==^uD=00%Q${xOg!Xd^9Xw*UtdSYBfuxF!PS zH_$%b8O#iV{EU!w|BPBJs@11KNeW?pWGzU5MYZ}2x;RLH1$;pQ7aRCS1W$>7bra5GB8MU zXt7CwhaI`uMfKR(i!Xytn?gvoG5r&+-Ve$Hd`wIlOQaas{t4HD_%Lyh``N*LzS-FA z16}ed&!f+#Q3@)+hw*r8=3C{NCTOk+ zN3cb3Lq&Kv6tn~x7$U_@Ws8@Adx-pu?D=!y4&%&!2^!Gl;Adn9dkty;KO=b9%X~Q~ zEwh6AU~@rzk5{1WdHhTeFKb)yGl3%lO7ZYBfo_pC}9?;s{~mhgjp3nftJ)R<9=6`W9n zSy&;if>lwRv+`$yTJbj8a?G6Kk+VPt`{>#Ta)51N)3^hY)8!P8ym8%v7|yoQ9C0krK7R385oLU;iVD_IIVF(3P!dFZU~=8gja~=pD4Jd zRbUomU@(>Ekg@J$WMJS>U}0fkum*K^IlwY{8sNiZITREG85pdaL0fGUR0J6q^b$A} zbU{L(SvLzmMg|6G!3s^zLM$xcyr}`Ix*<$qP8M)`N|=iUT*`x{dcmP1$STMMZZHXQ zf?G_y7XLuoaH>HbhbS%H2`a%qaWHU!H^UZR0_AURL2j1(3!rt|=fTQBK_YLN5Ew$d0rK%B zkSW|u#a}^&fH+LmAQE)ajvz;|ImnoAp!rrvWx%N;%gM|l!~#Be5z=O?2Bi{C@F>0r zFT{3HCp!s3&;hij?)e+*5x(jqC z)Vl9m&cf$fCn1 z$dbQ=pMkA3oPmK!n^6Q*#_6(%@M?1ivgY%%FtG8mv2#?f5M*HCb4=#di zFYe1Unhk2dg6?Vro$0j*>@HAbf(ASw5t{!CRL5$|3o&T?=3wCBX0Ki?$iTu3zVk_k zlf8P4AOj1}J!v5ZjXxX=T)H>z@d+{f6SHJykcJ%82fo_~d{?CygN_peXlRuoNnQXv zprLx9g`a^%<2W+|R|6<5g36UEpo}fYRDBgnUjxz5as@W#AOPAI1?`)F zI)WSA&tUG$G&;n@2ELJ~_6f+7kUrZzMh1o@pz(gtEytiKzdSBBP|`GG64PP=dyJc1 zfuVtcL7$t2Jp;1)R9p)p6zK{&>jQLJ2xz64Edv8XDCi^~1_toShI1Jh7~&Wqcq{ab z0T>^dehS*>p&;47z+eq3dcfrw8#Bm$7A6hEMqF_%xVu=Gkha32ih~-=kbSM3-K$7=B4Rx>{5DTORyhhG~fq`KuC>>XW>|zF!dZJ8VnoEcQBB1dXR8lg5>mY6+ zMrJTWLxG8bOREl|6r#?UAEE}L;2)!wm{uHfsVWl#6L>)a^HLB~17yFJ8$_SHKoUet zqE=f`?Ma3Lh%h*LKqSC1uVD=8;DY+dBC!2};M$W55>0Hy*Fe6LW72pBx}d^~sc7a& zh5}~rejJVWAfY6vQ2swqU(o<`x-n>)p9^vf!3U5ME-_G9Bg)0Vq6KP1fEl1G~qhe4MdG1r3Cvebg)!G>~y%wPbOt)OrR zw}bc@H9kr)u-(&DEmdP;VA5gwCsq6u)L~*0sbvG1D^kl2p*SEECl>?D9q8R~3=CXc z3<5d~42+<&f~2It$5JyWF)>GoM>5BN$|}&9^+F~FhGn2JA9*MytHt;%=Nstq~_~}1*^%eMD3~hEHehmf|1}+V-v64_jg*Y{oSQxk31u+E$1(|BWqcGJVt%8F2?jCq^a^l!4)U!y z#J5~*a^Q|U6C2ng8ZSYKf(<-!t??Q(nGY7`W@7_q6n1cq6+6U38oxlrEsKsh)LLk0LwV3K zDJV~#2ND$!zZX|9F>q-KvHue_Wn_>Rgs$&kW=LRQU|0-Q6jXb0U3~Gi{OUv75D@h7>sS9wJUTC08*LpKn0;O2pQomN<76- z0O?S1Fmcq1fJ#SZNS7C4GNghvp9rbrnHfMW^tA|gK%}K&z$F%FHyJM*JH)zq@P6J~ zCU9(lt1BMu1R*AHZH1@{Ks6XMxGGQum;8_+DPa~iL6)h)ED*6Q(6sdbym&#Dyo5~f zq>vCZq+$ToV9Y2L0~4fbn|_Z^hzX@?s|I-wbSyTAhT6i)CdfKfn3ahMED5$HUXV2b z5)upy43K$f9|ngWNdJ+E!Ga-oDTM9BqygH5r3yMp6?8%@D2zaH1v*h}9XMTp>NChH zThK&2Xu*>ZL%tBGBw}LI0^d0&ZNS2i!@$6>9;E)CaJ3{C1B-4X6F3p&3v)7XLDpT1 zaYKbfI2pKjw8ey&G(&~z2}0P=j$)Dt&5===#*J{ES3MW91xjhMxa*_l{1m_TzZ=a{NN^|Fp2 zGlWqL+Sms+hN&7Og4^RLz3cM1U4^fJPkdx$`rC z?vU01uhC!;;k{?Z#$NmuR6=n;R)plg2W@A`2eqzrSU7m^iHY!nS7xZ)<3e7U!Knq= z!^_6t_hVv)m<&E-RYOLGflccYbk2wwd_4r{ zK+@ta1_rLG+UuZJ2utk^5XA~lF10s7xh;#CsTwR_4VJD32^NEl3xv+^u`ujlU|^7A zU=U;hrP=x{LoNs{z@*K|B9^7kB9rT(9J@fv(O4b3v;=^2{`#k{}+G z3F_cOnIKVceHqEc1|DJHW@2Y!)ligSU}LS5XJp{gPzBw_$ji#AA;HPOm8Buc$-u?T z&fb^F$C59_$-u?Of~1U}5433yp-@Xtfsui^K|`98flKQfi1G3$h1CoU44XjdlZ(xj88qYwT9*yF7>r-@=h!2x^UK>vQH8fEEgYh7XmQszIj9FblGPcL#yjh`{s; zvgB)Uf|g&)FfefGoyMBtY%<{|xc@0W1t$+$>@b z^psd6n5sc)*uXb#BRmZ{c@uoTVF(|a*aJOIJ~sC1Z`=$lA$;s&5A-Qr@`8s0eE*qv1Ro^F@Un_M z(9;kTX4MvD1r51^ZbJ=*wES2lA_SNPSvkccjh=9d88Wkq1@nPav+%KUhJefXG6n{Q zZP2igK!gP-GMV$W(Zd3iU|?b40tySTX`Fnl?A0$p&PDk74T#Ic20juByby>Dd@2-} z2|AQqBN79%M2mGiNPnH7On&x7W2!HHSS z&_awyTZ~l|lwg@Tz&DQtgSxq()*}bxvR{1`b~f|7>})2y5M}au!5~>NUYI@>PKZ8G zClw^a3Ar>Fq7Rnz{UL_wfOd8>GH{7UKomu2vq2c3U0UFJm5)USyux3bQ4Cx$K}OP9 zK^|b^V-;i#(c)tjWEo9l3|#a}T|^{fIY{FR)&?(NU;v#XAjkx*|G-T$#1&q(_rVn# zXklZ%J!rcU=+J6VV?;w2RP8+k)rd^hAWDOYk%6oB0Z5=4M2bByW-HbM6)&J_8YBWc zK6*E3s7Km>i2*bd0v>Y}(^w+Iz;=(FNkfT&f$I*)ZIE_10|O@~1L%-+@I6b@LFX8O z+YZc-JJulg!igh_WsqyZOE#e^{Dm0vr-3%YK7}ph=A?Bc^JQ z!h8de$&h*)bZ{pz{SS!7?+grFY*`U(Sw_-Oqo5*Co+Kj!m!T#S2g(Ggf-*r$G`=w~ za7AXKbVydyphL0=)*%7Ao>`0qyp&yl3AqP=*8c#NEqg)r98&)SHuI@%4ebUg$(B0xGJoendI4(9xqkb^lu^Hdp_{SL54 zz{cX~c1YA>?RJ3DL@lx1jy|Y+#8~o$85y{cT@Md2Ii~8Tpmb&hU+@g(g3~-`OmZJ6 z&4ZN)G30AVGk{Jg1^Ej@P8E-w8Xh@ym>dfO=q!x=aQnoB7)0__K(f7{^WL~24rTAl z6k=cpi?jE^t_WZkV+XA~D>g*r2~AL+9DGMS$Uk7SG{I(pPIyB#3nUI5GvolziXVWx zL5Lw=N1B06Odm9tAZ7p}q5W@gkcdI{Yl534Y(h-z`MNO09AL#9?0uPf972p7kaGh- z^$TdPIAVSJGtg*~4wJ?%8Sroo=K6Gy0{HrL5QnK6M1p20pF^W6LT$?JB>w0 zk)=;ZmKofWg`7|zz*G&AV`k~gWXTr?l|W8Vk-kjkd@+zf8+=F53vd}!`w~o*nt-M- zUV-d^rw7paZcNo6c_D^;Jy3{(#;92sKz=$13b%j4)vrOm(txWnkY-?GssRbI>2R?z zi4;GTVPMl{6cN!VXJF7)0}XkBBthnIGB7hTFdTxK^M;Fo#p*3+00Cy9KFGpe(9Ujd z_P)$s&@p*DAjS;_21Ydy10=!=V+garS*&mt8;E7d#K0uX&fcdZ1#u-PRdH|#vU7r_ zA_Up;%|Y=f%&DEsF32gw1zoSl#UaQ!1-w8{h)a-NkaJe?W*G)H@De^DE>4gfWJkCl z3y2Nb2@cv~J_WXmn++rmUWLcC1mp+MN<`3(Xz;uZ6Z=2mT9A)H;Q^wx`k1OgVXwmr zq4TYzAv^b>Tx-x!9fPm|BZE8Sup>c;1gd&2AqL0-Ha0DYbiNJ97))VXX$CgP`f+fZ zXEp-^!(mW7U~_|r7RZrrLD5_YHPucUl!C#-%-oRqF&+p7bv>I913L$2zCAbsL94xm z5mR35f~-?H1X-tY3bIZ`EC+}5ltFVOeVIl#m;_n=3D<(Ggjo$*8xBscpta!_LCF}g zQt=%$%_5g6ATe+`;0bmEv`hhsf?}V6Js%{Fqf9vmo5=?^Q&YCX>+BEUi~<&I22CtM z#uGn+tq0HVBegZJ6KZR6f#-Xe7(i$0907+t$ao>fd=7BnDzG{*G#Impaci@&fd}hA zg%+qC1zO*I6r}#2aP?M4`Tgh=UFd0d1G%=ip?ACTPf9 zBAfYJCXRo?wIK6AAr7L!OBdcl{06euih+UQ7|33*ZIE$v*Z>iW5Mw?UlCwcYC&bY@ z98B!R2SD)!8ej*tT|ry_j)UrJ_;~ga8PLfY$H3%K83r~D^zm$nS0H=a028{jVq9H znunPUX-r(>stf}gH@glGGdt3NICwoE3j-*OPJ;A;!>ClB34CC;CYunW5L3P)C@ac> zwoEXBwpT#6^09M@arR|u@GvrPae^lyK;wm=GXhT`%+ZFJ;|*?Ya+Z0s6FoD5u`eUB_!43PehD1)IJ189j21E?(w zO1Q{v;V1?MhSLbQXo1`Ux_yoWKcbd=dZbL8Ue9J5NL85kHEht4XiPVBpER#qrNH2IEmz4o@8uJ;1J2h z#3sZJnU??yZU+l$goAE}d;pGZhzavSyIG6p$uO|-uoO$nfEG`3h=_3J3xHk0Dk98r zubxd3dbuUbB2{sYMXC~l1r!XpK#p|E(R8zjJhve3@qFlxr_{KyqpR?j0_BV(wqvQLwxn*I2BUb z7#NHdL1|j!7N~NU05flbn7m--Z4i@5gomS42b5ZbS#;RIyKgP;L62w^`zPE0vWZPc zrS2;iXb**;8rV(^V@}ZS36PkE2`2+r3CI8~@Frc*+#dsj1VdC21G6RAe-aE)rLcQp zn8Antod@|z9ON4&u+LEZ^o>YA-37TG;-@uBc=1nAc?G&GQig$zg_%hVA^sR9lLt_DzyDr~s-h)aR-Cj)~*w>txa0%%*H0w}F3fbJucms5Dbz`!6Q zpAP00OEWTXHGn)I4vj6XBKZ3KpWvFX_7{j^t^EzECFGc@L0nK{70d^frJ#NTqzwtu zAjFXG52~L)Z9m8w2o$*hm>equs2_C!6qo;mtN(!NxKO5QkO|;A&JU!n*BrbZ2P_J$ z;~?VfObkq*I!+8+$3fi01a5@Fs=8<3st#l;utS&^6Os;Jp~E44_@-mqGS|!>-f=qDnTF(U1pF9mRcqd#m8F90;XA{;&r&0 zOC6aQm_$H#mWtJaEiYoKX5(gH(P7kL60ZfZn5sb*OvFeb$brm#nV`;q6sRD~L)8Z1G3QHy%4IahiW8-7b{|)l0AH-e!jNqBd{8u0`u-lj! zK;u`CGy`^<5JUbOkgGr!D}n@|T3A^7GFkJ#fb^l6^%5io57_S@9s_7B!k>|W;X3Hd z8rFZJM;RHI_}D}OA*sa@R2M)TRAR@(z?9Dlny9V@MLBr1jE4!#7Rv$;nlVFo5E4AN zrLkEUbm=Bo5eHZe#IRClXl*IW3A!A`Q=EZKkcG7nbb1RPi#LmRzMu>Po46KKu@hJ^ ztBxV3sxZ3_n;?5%rY@V<17S98Zb5dje$Z&n15gno$X09$nvm|x%;%S3U=sl?+X4j) zA1gTT{E}v1<70y?o(O~(&Bw|n#K6ZEkPniB2$i~kY~$83fo?((=HO!skP_q&lNZq7 z1dX5xa)8f%Yy>%$osUI`GhY-Gje?*%P+9+pf`s{4#6rORI4%azt*YSs1&(siA@$%p zpZVDNIQTg889>Pe90z_NMc`o$P)5;Ff;grGl!2IwHQ}LNyi|sPEuR;p4Wa@j3C@1t za0V+8&;JRIUhsZp&`ysVptK0Se-#uWknrcy(PUQT(P8E2%hY8Rd%&&D$pH;bZZ>vs zP%`&r<_m#>k_S@mGBZ$SmN3MuCWzZL%s3gi)R?M4MTQPHG}*iYjho6bX?TH-64GK~ zW?|Lv1~H*|Kn^-*#H46OLQhx(^@PA>9S>A5 zT#FhTxQ+*1FAK_7EKJqK+zc#@p!MfW%o-lx(;CIJSeU`fR9N5_9EoYMuxYGdgp9 zoPk&%eD;a*5=jWRvNF^{?;DYj>|GAZtQQ*jq1(iY#bg=S8bDXk!sTjET$Ur6dkzLV@YLfuS6;cpaNXX1lm6V4WCkWC7mAO!js!Isj zDv3F&;xMa(!NCOcRVS)05m1trW2%;b(vl!rjfweEEtn<8R4ok`0khm z2E)m~z#z`R0IoWdvs@?;dapjj|V9U4QWZ)8y zdkmHv@}qA=tnSkTMXT9U=@?rk&1IeGsI^7p$fSWGRTx4iSc^ zab~JM0&2HvGF2Y}sZ|84l>!|e4dO$h0V0=g&B?%}Ed+9wC1}wCI~&*t5iSn#NFEL` zo7{i@|KAe_t%=icl?7cbVZ+J5#l&6W`fe>XHc4in5rWVk%I8@B|wqf zE6)HL&<8nIBp=LSU|?{RVPF6ye9$JDwTui5yBQ%F0MxvwV}clxFAO@ASPIG!muFzp zFasqoRC#HryfmgfNQfCGFOMm23^E_;;(T*Vc}rw@Tev)^Eecvge;d?R$!`H2ZOtvu zz{Wa@3*r=J7SNLYv*5Y^x&|Hw7A=^#cm$geb3RChhmQq(6t;MTFblg5E4v_zIU7VR zhc1gCi#8)CXz-8Sgqa;g3$mE8fX1NM1zFi6H9pJ1>N{2jUj_z-JE-npnZ+f}%?vi3 zM_Z4bBSIpE7wP~`HX#S zX!$8p3(^5G{+}qQO{4V>D#ct|3c9VG=^vYuECXAyEhht4{(VLU&=ORT1QSbb8K_~x z3NeA1g;h+$8RXb3CZ=kzf@-il*h%6Lsb|bO%&fY6$ku5~fm(0*f8`k1B3SePfs*VE zMh3Q8kSjq8xR~-?K!&n`)>`Dd$uh7Z#+R8HKv!@WfZ7Z?S`a(A*mQ*0P+a@~*ILA)%K>fIX|aeIiZkc2fRKo?Ta!@$2)K-8f*4j!CRb9o+zyjK4QN+eR zi-#kh1C+jfKy67DK2~ieJ{Hgj2}eFCWrH_BYMX&}1J45O4Hjg{R|18DAbY-=ECU;- zh9BtAa}Lms#(Wjf(XuRp91+4SprccS*+ApTpiSZ&f-L!5@(gUCRdt}Fnv6PNZ933d z-uIXp1jU#QG??Yh4V0P1A}?{VvE<)oWZ=^0WMRv{!^ps;%?O&oW?(R7lF*XUlJ{V? zRR>)$D<5hr52igLT|tEjs8Hbo9YV;!z#zrI0G^-%Sp>T14K%?4x(pQ5kPc#CU;s@H zfGz{b0xk9~0AB^htzB0KYI|{Om(_uqS=`!rb)Z%iw{}_`s0GEX9ajfxEpcmy)q$Eu z+}eJ1poS2)wp$&j-NUVIR|jh2aBG{@fm$@&+In@M)(f|`S{O8|xAOknUqKu(H-i0_bR3#;gW`fN0fU1|0 zDq4Alp+E}Cm6k5r3o;zSh1w`7S#i|TiM5Fci(ghUaFGbANZ<4{Vf2-z8`($YoF zXBi6QP^^@dEec0*RVIcKIk_T`Aa2i>qPYq=B|!sFo>QK)sQoNMfdt%di$OeyTR_Qg zJ;)Gfw81oS$#WGQK8u{7K$_%z5xS7AQk9TE@i5F3Zh7va>t`7Xq~KO7h%gk$J0MJX z39=i;myjs>3F3P~_Ik(pt?s`UbrY2#pqNlszl^Pia_FsG+hW%h2(Yggw+m` zM@ycf@}fnv@i}laNRv3K1I6UUiq4`q@F^Bm;_~7}AaR5Pzk^iaaUeLgp~bL-yhIWA z1>`iUeF3%52NyRG2ZFMXElAoA!iPnJq`YKND2gGVOo$W>*&t2+5KSOM8j<)gL!{)T zik4nLj&bAwhN+U4moD0gq6%BOkdc=uI(-2-Ki>w~h!i$oLHq!Oi$pIXRc(@zMcN=f zTAGxVmo0L>h@9Hc3tub=Sx#QAC=^9gGRSCHmJt^(%17eEyeTg)U(|RJIWUlQ!Bi>8 zD-`vEbaTSXt%V>ilHprHe3-u_B#O=>^CcyVULy0Qq>30XA;rG5G^F}~nI|JtBoC5@ zrXf{XS=8!8POiupB#&BM%PYz&7CBx*_Dm{B71UIiXO!fXiYhN5r^J3FRiMng5}7X{ zQFI)M4>LtsUb*NgNE{I)C_x}Djv53K5~x8SDTx{cQc|cvAT3?=7i2sv2xMeXgFsdm zB?wgIn6nhytS(6e(pq39dQ`O|v ziYhN72RyjV0F54yTaYs%DEngbk-EHkQS)Ww)+4$pb3x$%GgU&Os2~|N%WVY7Lz9lG zlvL4K5I+z#1T^F|ie96H0Phvlx&*~m2?^BLk(9)0s;0bVk@OYh*Z}h&R)Ye-7$gbd zLgIp1+&G6t+&F_xUQ1r9DDVohzq3Iuf@L{zaY*`s@g*dRDnarg5Ys?$f)ct?QbnyG zd6arYI}BkDqKQI@JrG~8$!p7N7xjZY2QNTC#l1YNs1_G5S_*OvG_}KY>B#F89YoOu z_LCOWPvYW5??Jjy{JhDH8Ykz*fZhr9v8H?<&LP*Y&KjO2}q zW?x0_g@8g1+E@oU1zdxeLJg6SDB1`z#2Ct#lq@<8;+sJEpxy(B56d2)Vg`v1v(#AL zxQP22a#mHphE!gQix=4<^U;z&%oG!OlOoS+$Q}j3NkS}>W(n-!I!*fskayiWrPrkw~b%zfta=0#Ugd`Sf-DNU z%TB16DhskGC@Fmu)k_y-QIPa_C!<#km9kz28X5o02tF&|v&f+kQ*l8S1(vrb0`;l{ zSrkAbdNCH4A@V$v9#6Ce9SJGOqLA?|;jIH`IG3}C`8sTv9dyX3#WF?)22RA_y%p#r zKZ}WAK~cEM?I3Gwz=DWz{EHyLbg&>|EdMn~FbFId03YDL1`@Od3o63R1Z`lq0IiRK z4CPyau4!XpX5l~#^20{P!6W^kk#P$F@RS5-SlM01)M%;DZd|>ZX9z!iWE1 zYC)sxV71y&&^Z8W$QZn?F(m#Ga~?XNSpkk>JhKAgAlHLu1t7+=flU_SVux&(U-I|= z|9c|rpe3K+?eg$R0zC5q5)kJ@+=Q4H(B^@NLna1b?ph5pMwgvQ^e#K6TZ&ZBJ$ z@gIi}b3SOFBj{WiP)g*ihHp-+tKnu~0q>^FUnRuArpwOGk^h_tdKVX)*?xA7FW^}L znEj7X?7xU)e=Nx3pj$Yx+rI~NVUs2#qi|LSgYNGDZS*AGepc`$*5En#YEaziGBHEv zKOmmW2gNREIb8l3&(Kb{lnQlnN5XzBxv`?4~C{P_gkpRj2-(43qGxNad? zY$Yu0C3vu;F-crS3wCc}Nn_8E{E0bLi|$WwUd8k$Xj&JaKVt~{a}CU&a@hPSPmw=s z7#J96G|#NV%t_o-Gbmkw?#ZC?JTr5C9cZFT%NW`=V9uWcst~w9v#}Z}pc)IjHjx#) z*Y*WyjvI6$FEe7o9X!#kEdwdlnAzEcm>_f8!mJ#|Ozc|ViAKmgxY=znEy$V_(AxZ$ zpmYOXOaZY{2V&)Akd;i;poVz<1P0IoG*I&#;z}Wgd`Hk}Xi`ko2tj6+Vk>0^HdU^C zCr$>gdpuCR6B!uT?y#}u+bT1#LC;20W-tr^FHK``D$)iuOZ$Wv*cw1pI;dBGzJ#!f zSx1r?w7^%ul%I)NJW^gDN?t(26XZNG(EcG%9dFLS!0-wbCOVu<%=zx1VxCKg@t^2b z1_o(%Eyw~v&{@b}-QabBLJZ);GmGOv#}XScRrhf-uzguBT0IzvG*WL*g}_{_*!kjt2$Y>?}im|2RqfI3bfCo(aE*GScZoC#xt zoC;S2axa_%ax|O+aygs>az2~`@&lX$@(2^NhBy-gXdOWHdQimyni}uR1g(bH0BW3p zPHcd4z)K@Q_lki6z=#Q=fd{k_Mvkd^9kL)NND!t1WF%gab-NDVkA_rp2&8poA@}n2C4lgsrzpyn6cFa0la3L*mtvn_%h=WDI4rZzW zc@Me{1a=M!=td-vaiAN-Ky)4xWUUyR90MEpG;VP3mtBs5Edg}JCz!_tY7T?$AOmRt z-82TJLG5Z#aDuvSAR5#s1JR()7KjFQq(C%iy%dNBt#<;K9ZU>1@HD&^wECgg8PtUb z$ulw6?t%pUZV<&<3vvOISS@HR);%6I@Tq{Hp3*-laCrba2T)U=fk%{qfpHg;2D)J) z5W_@j!GdM2{39iiE%M8v*n)$`2t)HqOIftxm!mV(pS^vE^0+&MvZfzQV6=v5VZCP z6eN&lqb@g7F$<{g1PWouN;r_vIgk)2upzx;kPsheeH$p;nZP|@kWe~E2pk1*u=QA= z)-kxB1X=F{7l-#>AmU)Rurky#FfhCUI-LcksY# z4mR;fP|pjrEK5g|mD5<2O+1o|P2BW>Hnh>o%+3K@HzfpGH^qxwwcKH2XM?WEf~=PU z*CRo&zO14=1DhCg{uOw*u`uXE&wvIm2w{d?QZ2-gF9|Bdp{|ALPL^k2lVF4Bh8vlV zWF)8@fSU(eu!7$_b&yu5c?>9eL5o}P>(!QLU=zox7qk!tzg~N6{%{021{yRVw`edh zFuVoDA*4pn*9B>U$a6uv8akXp3}WD`hQViEvoN6R(FZw_fF96Y)bE%X1i=e?(A*8W zo&svUCdhdZ|ANki`yt1`ro$=32)7;_e(3gll43t-!4Piy-9bi?YJVcg(RlsO3_gPa z9M09}L5oD?m})>Y)YqU6gBZA7Bcf3WKJx;siW%IT!5R(Vy&Ir?Y7jFoK+OcvP%}Y| zb2KwSviQwpVSvXIXh9b4a8d;&6a3-C!~i;D1zcuU9|gIOjY;E~ECU-eD5K{wfyMf= zj6jhOX0uHNEg1u~TR{8$--FU5SRAw=3|wG>yWrr`34DwM7gPRB&^_5=JlZaxBUC_l zVe>L^=FbLq9ze$`$_cRuvVs$?c%(2Jn;_d%T~;*89;H57!&C#Z9pNL; z_y=lD4biWYn8j1<0@?r|F3hT}1Svz<1X($R*dYBo zPEJ8K@qAaLv*{rQnO)(`cjIK>Dwbwq-~ye&nBUIMz$GTkuAK?4Y6V#Y+4K9^8MuTv z@hVrSqo>S3w@d6^xab-{Z;5arM*XgGdA3P+F_EF3{>L^wWXU|@iR zBS;((j-a*xu5c8idN_K){V&YHB*>A!2p(SYnBm0+3NH?ffVzerP^+10Kz>356lm`~ zBAiY`!|4-JIDy1q;RIsC!ikxok%58XBRIW*#1Y{H8frtNHt0hAd{D^;8h^K9;>e#1 zTXZWY#4N}Hi+b>x?x3QYm1CYD3uv{zAd3()B+4O0H9Oc?v%O3;ARAHh4Ksr_0|Ub+ zuzSux{qY6d>IU(cg&6YPK?k_Avq8pBAsYa|?TTlN3=E&a`am6$d{DIxb2O-7%q_wL zsd7LE%7E$(h%5Arp>6{mfXu}sCd{cV#v#Nk2pJcK<{3`$2+&DRP?bjaA(;oPLzo51 z0ZmK@vx*CIY3Fn3aB&E7<$Ho08Ux9Uf?Pt}`TIblUf%42+|^N_5v~qd1~wfV5H}jm z)fHrcNrSZO%EI|jr?A4LK|{*090hTLS$nY;=!y=|X(XWhB+M=*%%dGC$STMK&cnjc zJq=8Py!mTn8Q6sQATBZ#WE1482Dw3q9~`>6VsMe-Y0L~1yF-k`FBUyv6(g(Ao! z9wE#l$Ro&Zv=9=Ed4eqYKAa3(S&^CG;dNmSabW>%b#O=sKte)9kVO!})a4Z95EOuz zBp@CkEFdTVF~#gWQ_Wd!1{Oic0B!LLCI&7M4Fga;&Qt@6e?c}8jcO2AD~qWbB%sU2 zqyb4DAbr(OL03hN1@~7)z+1JLL~22E$px^)pYi*VgzU|&@MzaW}PrWwtVomMbHupVRmhOLC6XV(5=4U z?L&Ej9N_&!c@aXa8lVxtJTvYh(HpR#OhIVUJaLalkX?sekR2TBcc7+fuz;-L6yy}w zV;AI<(BspVVB!>HE7k)IW@w9p*}-5ocabC9Og54Hv$70qY{Fcyl(a{df$g7^AeR;c zZ2lUw!4Ncdb)10#G6)SCv;mF9g0{#oGBC(6Lc~FF3QBKh85kJ8L&N$yBLf@g`aEzT z@G$G7av*|$SKFBryu<|D*7_?4IvfG){|G@AaCn$YKpBE85OE>M1=uK|!U6eLNDgy(<4`v2I&@qI*%nZ^@`JjmA){cclGmj91hCgT$zy!LY0=^VQ zhf};b0Cdj1wj@*vz92=1T>>Hnl_U)gY>ODH8)zEyxdIT-q+oVk|;T#fpEI;LunW;XWxAWjA@@SV315%5N3qjj(e z0PvV23qv>q1H&(H7=dr|V9tx+VuReh4$AkpL8gMIFqpwd`+?4v6M|f-%gd?5!_L7u z2i(GjNa`a^yJ!0a} zkOURxZcN}4B$(tCm?P!o<5Lo}Ky7RZ zD@0hp>qJ1V`vlelBEha}V+N~Z2Ft@;1d@ijNXw47`ZHJ$h=kY!Vxfl}=sFV?@TDf8 zumjy@!cq+)L1714(7^(}7X=h{pp_gf)gTh&x*uS(K_tj^Kfyc@33eS?*n#X|2Ac|Z zDadH3OPRrDBEk-2CL-)WW+I2(FR)D@65=Ni3lw(0!Qvni@PINKhy*!; z5zGUTAS0N-JP-*sqK&y4q>i~7Bo8%$xf&!5bHqF5YG$w=5DAI^7BCM)f=p)x^FSoX zbT%*#M1oD<2hq!14N?s^9i$j)I&(EhEiBMMZf6IZ03t!AbAWju5@b3jmH^FSobJdir( zYLGnKJdiZZygKG;A+R102{J(#%ma~N6M`V}%+(+fs0pBK2)c=Y1$-X?B*}vKpb!!T zYX^}a!^FTm5D7C3B*R<{5_peBHPDhpNyA|Z|g zu|SRkt=eI!29Y4gftKsARD(#6(F$NaAQEhJ8#7oPGguyKG;=jb8s@ld%+-ouJs=Wf zo)VY`B0=UUgLxnlW*$f#b2UgFZXQS)$vhRX9uNsKPZi7qks$Nbz&sEMGY_PWxf&!7 zHxDEYGtZ8>S{=ABxkekz1Cb!t z=zw`366~6N5WURRAk}c!fD}Vr!(0tg3(x0u%+rk1%V~CJ?)d;KzL>d<| zR~v(QAksLQx!MHG1Chp|%+;n~9*6|hRAyivhy>MC=3pL(1O=c4mdX?+E6BNKn{2fq5Vj z6!y+w9*6{my$hHJB0*vA3g&@Gkc-{GJP-+Tu{)RtBEc@k2z!uAn5#i9fV&^$0I2(! zt3mc7!X9KlBJ4r-Bf=hJKO*cw_9Ma`WIsIY>zJ!Oz^($3AUAq~c_0$(#vq71b2Uf= z>MBr<^#UsckswcdgLxnl$l9*6{)9suTnNU-T`%+(-u%+(-yxalBisOixBhv**!f(-zXptuYI z^FSoXTcD-sEZ_y|Ad5r5av&09aVVGvBEc4aW3C37!CVc}3%3|#0MugUYLHHtx0tIz zI$^N~3eYgHc_0#Gb2yj>B0)AsfO#MiWOF2#2O_~X?_;h8>0+)1sfODOQVh2lq!wl~ zs5AqOrn7*@)IsKf2C`Ye!`Wc-f|$WF%wQ3yd1!sA7_bXKBq+>c!8{NNa(Nt>2O>c( zj|cNWB*>-&Fb_n6ZTiMs4Kjnd8l)F$6LU34E8OKEoiLX(SA%rI!>o?EIuUFhhyd8e}NkS0FQCzGAKhnF)(I=4z0cu(Ar2!3)7Qfk==mioiS& z335d-m=AB8_@<)&0GzVhZ@0L4U&d=7q);=ueeQ)fvw>IXl!N{6LT$S+=Gdw z7Btks#99j);{cr)2pXdRofrrjoq*Jbj0~VN1Htv7D=T!wmJ@nRAn3S2&?%$Z%1q!9 z6fGw30E!k9c;rNj2|Q$?#RMKJ(Gt^&Vq&fZ-RZ`}QVSZ{U}CKWjag`|V}@UQ3o}?- zlnFc(qQwLrLv0J$7AW&v_JXk>wjkF6Fo zrU2^8Gcx#q91m){xU%7JzbfePB`qfK2np!k7f={6fyYF&n7{)UT1?d-bG4YjLls(L z;6<>Y@d+&>W?gnB@PGx>gP<`ACYD;z-~DRi&jB+R@=qzba zN(U|01nJUZ0*@MKF;#hwV?hz6KgG~XOGJ=kV-8k@JN6b6L<^& zY6Pf9&%{y->e4f@)`B|oxQqa))M5g6{@6sfcoG}EVZCcI1_6vsQZn}2#`uGCUAFMi>Vr{ z65SZYDtYn0Rg z64zn^ce|k~L0xJlmReAs8bu{YT#E_Z*M>$KxL*x%KbQ&L(*rr97F0DbG1r1RwM;Cv zpnf$IYb~fl4e|@9D+?-HL7iAo*$V2uGV!t3f;z5Dd>pl)E-MosXDz6+3N3SUK?Z{B z8cAz`c4cCUAFNiwWF= z)?%s#*{#I{?lWsKfji4uOx0kEA#num5JUV3WJNj?@&$Q|iMbZk0cB#T1@%CgSZhIjPf$34x}BhK0(Ce+;RNbx zg2D;Z$pnQHsCx+tCs4VrHF(j*ly0J_wwV>WAN~!^gYcYX)v09My4eEt5vDAXPp-il`pbjX=ub{ps zzVr>!rNsp9ylOFlyRBMG)nHAK7y8BUN10eHSQTj9 z60vPskZD>>;O?gu6S(84#Z(QlQ;P}Q*MyctpbjPzOD(7$iQ)^8xE2$*e+g9y>N_&A z)Pg#XC@MkXT1?83+>bZgJ2X)#&;SK7pfpR*i zqoxJAQ<3;KHppNtCUD14iwWE%)MBaznXAPF?geTwfxCauY7x|zV`8ZVb>^5@YeC&O zT-gPrQi}=P?E~#S1Xbk_KZ81ROf0pa-W-abLE@kTa}g>*Jvb(oT2L1bMI}fabP_2- zC8*oR#8M0Dx1p#6iEA-|`*TnafO>IEEVZES853(QsAGo910a=JOyG{378AG&2dTb_ zzk;T*<(P`UfoM=4s+Na=g^8uM4n&F6)`Oh23VJ^>|4sOHG$3&%v0AWVX7D+-U>#b| zn5sciIRg0Oa8e~319ApM_1ZXQ7NK8wPsn`y*vDAo3$l$M-t)! zrfLmF29^j2$ApECMLdXwkHtM+2YHE<);cDzg-pz~U<+7k!Dd4)^O?s14_}Z4TA+0* zfeZ``e?V&+G(c-GxR{H-Ffed|mRg9xms$w0bLM|#VBk`NEVnRv#-hW{!EDUTDjvka ztS7+4#vvXd86p2CJ_5W?mOXzS=q7C}S9^f!W6=7^zo0dbOd2+_3~c61BA^7%&A~kl?Rw1 z$5g!^Bp}CBeE>uwE+GJ^XJV-Zi88U)f)!1IpOlR$2`V#SCY}SC1hN9mkYlPo4-)`0 zyBUxo>Q8FEb3S6~8Qh8$D%RhR&nA;(mG z4JH6)$T3x4hY5fga!l1XU;j8m;jg|$5ed_CIDv0F;(A&34j@(Wiv2=J0J#V z*$jvVIsGn(0a`W#qCo=pKn&2b84wK;xDR5;F;zbR(I5dZLyoEXAxr?wkYlQT1QP%= zMt+>Fhh>1`YTKT%#dTM{st2O zGvt`6zrzH;3^}IiA20zhLyoEXCrkj$0NvvU6Zi#U$T3y_2GO8E1~cTCs{gc21nFhh>1`X5XH%#dTM{tpuXGvt`68F(33z#~y$h8$BhBTN9ykYlQ5f(d{ba!l1{ zU}k_Ba!l1{VFF-=98>inkboOg^LWZ1ED0AuWyMjDj2u(-F(`c;N}qtz zC!zEy5N*U%4N@;2FZPcav>_VA0o^DG=Ro%TLzT&am6<{G$Sa`m9Kbv$h@3(L0|NtC z0J6~)d@%sH9${lx&&a^=4^$3UALLf8yN~;A00h|L0hvGocifVR9@IeAkh&dm0?l=##4zs)k zFB3;!W^X!ZjUXtPn5sc02(!pTmbD49f_4f;3$lo3#e=q)f=?9CW)uUh?gd}`6E6(9 zb=!y;B*F?h>wcafJ5x2tq`pjjaR^J0U6B2fAn1DTS;g(3U|U|~9gOBP zX>`dmu<7uEoDNz#R||?dK~`ZlW*uum*1k;e8arV&(B2JILC#AWpd~%bx)lKyOdkr!RRVGlSZpN=x%~GFxf88zy><6Ki?O$YF~%}Ts_vF2DMr= z`oStDfX*F|V*>L)eHIo5&^p2Y;5Y3+d$Wc2(m_~vYT)hC4-U$cvU1fXvrXWx!^W% zzm%Clm>JaKU|?W^SRyt{LjdGb2v2;Lh7f`$F-t=P!IPY&A%@^d&C-xS@T6yHNFjJK zvovH7JlREDZ$&Po8s@h7uB&YnFxz5|?|Hh8hx=XO@Nr5|?+Dh87Z+Z%TWtK(+5?6JWMidfPZI(t15?6heMjR4XW0pn& z5?6DUMiLTNYnDa|5?6bcMj8@VXO>0=64zjsMivs+aF#|664z*!MjjH^c$P*164zvw zMiCO%be2X564z{&Mi~;79VeUGXe7dHeXJc(JU1%nO*cw5WfG&*#^<_ZUdqCVGi0+nrBHY4O z4LULfYC3Kg6?cK`1sMpjmxBSc?*d{kXv-c-7!(j;uMi{naxdIAvQ^^>1GZ|=AuUiR z7x#c12C`8cRL(Oq1i<44bQB+oy9$YL7fN^(_kj!tX%h$c8&lwBgAS=fF}sKevkAs~ z@dS{4AfrI`A^Qb%JRpjF#YEVL>X%6%vq9QGW^;h|gD`>9Fle7BirFP#vmq@wZgw3W zc4n6R5YP@uCUGq`aLNYlIKrB;nZU6s!~{;@PzoB8Owe==PR%e5I3^*S;wc~pg6sw* zG4Px}A}&G49HO|f6zoQbYe2nIY_37||1^;CAZ;N3vogfN;}W!c7RBr`BFu)yC6r=A z&b`GmKsJF40eJ+}kB^1h1v)SV#jbK9>_YJeN{%U>1+ofc2FNP#9j1u#KpDL}sG!I$ zR6ouESqw4|WU;UT8$&kSkDwzfQ2ba)guOzH8XFlI*q{`OUC{IcDJP5Pfh-1@2+r@U z3<&>%j(UI^hPzt~%oE0$mh|;=SS(AWJ~H!RZ9KEHy;W7xhHgfs#&&SAh%%X#64Av!4bH4|YUN}QnBTD%El5y%WI;RZUw7R9a>Qtc|< z0x}+?4df5xa08uYf?{?n5oQw(w{0N%Kt`e42ReER#lAMG*tY{@AIK<(eTXs^bgC7K zeeFcphdZ87Q^ziltsnzIkp?=S2vPq#qvxv*Qtd6?12P??4df@}^1v0{>`s!+-Ul)p zqzz;?8$%(yyapX}g%Vy}M3_x5J)qWz2SApC%moD-cuypvJO!QDg<^jq@FS_}?#G7Ay3}i4!1IS=u z18#;X@VN0uH@A;?bD>d$i-H6n==exzH-)VlbbKV713Etv$|*hpav{iSP})KEcObg^ z`iXa6@hOn0APo?IvoJ)!{T+;M?gZk^g~k_@Dn0|U1*9G1c5VjHnVpb03q`kMB5`(r zZhFQasNfz0q%Fu+OWF^QbP<*p9RKU{| z=-f(_a%L*=_Q5@e)J8<{DO)wT&j^Y1;%gu`fQ$#Z0lD81kM8GbRCGh}4Un}U6T$I| z+;#yUUxYjcG@S^0ao35(w?H<5%z(x#I|JytZAiX?oGgYk-ZX=-U6A0@HHD2kLGu?% z%%X&M@m-J$KqiZ85v>Vg3#?GPgD?R+hk_hlsp#=EldvCH@PyZWkX;}%py7pV7vuyn zr0|+WnOzS-c7e=*+Qr6D4$lLb=>D2bkzIJ==P}3?Ak#6@Vm7)P=1}B@;-?^+KxRPw z%g)dW_b=$oCX_rsmm<4x`xjb3K&j&AAUA>Rg1QNLEGHk`|MQ4&6Es6WDHL}UzXVwZ zG6ZB9sIQ9X_ZOnuHJ=E(@TB9{Age%TfUE+y;}CWgquaHBGP~Y_>;jpA#V*iETPX3m zkTSd8gX{vC0ksQx%m#D}7m8hrD6$JR?mmJn1{o->mBhr%f^nuJNjnmM%2Udni z(7IaC+ye__AfJtoMJz;23o@zA#iqm0#>~RX$C6(OItGqOT#Fez2+A$Q$RZvIH5EL( z&zi3&%fJR%X~W0DD#VztDa*hXg57%1iOk@+K}dKoQ{Vo4WmyI`2|Z3|#?fYnrtlDP zYzOl*fbI}r2DcMgKyJ}x178lO1-+~twB83g%Pqvf44%jkVi01~*vH5KUJE3|z^<_Z z%4QH^V3&x|*abS9>K>2UKPfe^Q9Sn;IJ6jLKodQ-47^?p%yA41j0_C647|P!oS^fW zKnsa3z!nls0WDMlt*K;UaA06yP-bKhWRgqfV!Fi5rpr+m&BwsPK1+*D;U8$lGe=zv zgwLb^GSQf=E|w3pEkl8kk%7UOtu7A46VZxd(q$IWW@D;W$vn*?I9tQ(kEhC7>TFV5YL~1$t7+6?9hm?aR zmb*af4OmLs85kHx^8ZOAosmopD4_9CJk(Ysm6XN9#1_nmZbiOWkQ6gLc zlORie80bXRaL`frYLAsV56k~NC;G$p;*K&YG-=d0Y+y+g8vTO8#7Kb>3R4{R9+yN~uWCnApK~%mG z7Xw?Z6FA|4($#m+z4oAVqsvwt1v){ADL)$I_!!X9To5+57>~ti&_*8069`f($IGb>9)9At2GKV9_54QLx%;V9}p&QAogF2aEoKi$cu30T%rY z7lo+32^Rf>CVC4j`WH>~wjcwGFbkU?OMVwxa!ss1+^lgjs}GIP>|K z7`QY*2Ia41goSutrqOjaEzr@NpuDNE2vkgIJOG{74x0Z4-OV_WnSp^DloqQ&>D$tm ziGhI$%z3wDK=$h;3_s_X5ivt%eQ1^;F5QUxB3rC#bBO9q&!dbMQ*ly zD`o~RH8CEGJ7B3qP?r17z`!NXlNG_159UfTGH}@{Ff%X|f0AclaDo+x8;ihIfUV&HNwTx$gY>8|Rl9q^0;(Zfa!szlsa6rl!J=m>Ivg9o;P zOpw){4-`a9)u7VUQWtznC5WkU3v{nvGU&)$E{k6b3=BeC8Yv(iHRI`%;(( z#08Zt;Aj`-738i4l__FI{2&Ps6D*<4C?d=!Cd_ZKkO3Be0)hg9+|{5WOpt#HI1mK| z1bM)zNl-vg0PJfCJr+S;Z6-m!T2Oit6cDKeMYx~<$ZSxdD#$+t?2KA)_<@B%RROH$R{{R19 zh)W}tlYz_X*T4V&@9_z7{SymiW{`#)wh79gjxwN=9~l@*nHU&&85tOwm>C%OKus=a zKRl0tf#D|ugP=H5wF{`W0jE+(p;%m~09wt$R1Kp3793T_O^^Hyw0KCa4uE&A^{8_cPJ zVcc=JacWF#8n5IbSL%Wrh`NGsje;x?oq{Y}Y+yMZ?jrs>u%;cvZ>|gs42u~V1nd6u zGO#e`dnhxo>8RKJ19L!51XpcbP+715sPU<)%cRDpg{};gwn2LoK+AM_F~jRDdU$~Z zG%`Tp)rlTn$#)Rp^%)U7knsA15C9p$p^=FeUSQ)O{sZl{Dh&UfP(0i5-$)A^s6% zU|>)O^|Qb&4bTm18pjkE*uV`0Sojw+LJE_j&7jD3Rc2so0QD`34#T;i9z)ShI2Y6h zD0&X(g4*jv-{D+P%fE>8E<-^v*eFm-xkww%1-1B#oZ(zho4Y6$&IL8LiyGlvPtYWWhQ>jpriHdocHb zTFphua4x91T;vGng4)SN@o+Avfn1ae=Ym?sMXhiys7YKj6V3&-g~3jP1OzCP6m5pf zf-(@O(+<94+X}uf2GmT!A`I%@YK6g7fw-U@;Gn)l6H|2<9|McDoT^aP3|@1rVW?wP^Bz*zhZq;wucsl2?NKv5!w zx;=1pvmka#=m`|9#!v?8$w7>RDwEU`DEf|}Yzf@7c@Wd&1@#1qoFAaO?jT$p)Hqo^ zfuddvWryI(x}e5!=?N5FM^^`N*ea+Jemw~YOGltc`5~Ik5T!8Fxb*~zs=xjXH=x)MGHmi%j=fUhe> zFv}3kas;yi!K_3us}Rg;1hWRgtc5e>8<-5lndIvYgzD-*?XvV9L2Z{6`vI^L5 z%nTbD7#R3L^$&PJi;E4MwYk|{L9G?g2>~$74fVGO0|NsHgZLmCCJ$=Wz}TRBsXQ1M z7(f^#2BNiv*z&I^FtABQXh9fqFb3$j2tEdu(vyq~(mW73sR+yQnb> zvsj20GqV>Pdt^k2mKKv3Gm8dD3e<*!+^;Qw92Vhx3@j4H{7h`%@{EO5Ll9&>6KE(` zLkPqKjpwm|*TD+1FbJ}Ug|Lc+Fw3hOgF3LFp+Ii-Qczn|l}Cq@BmVV*%BXd<-mH zZ1O^gw9F1_KZ07LSTJa;5`?w+S;a!Md0E9nv^iKMLbRDdKCO-do8>CY0J->`ADTE| zG$?_9uq0F*#733_iKAoCpanh*%5WfgkUlmA&|rX`n6?^dv|WpjMLa}{k3|ARNP-B_ z5G@uRR;aKTNJK0|s|+%BTPMZOz@o51x5{Ju9<3p0|;$;xpw1lV*bmS^Gbm2P7#P5pQ)ugmYJqOhmC%yZlG2ja zlF^dYl7r^YrJ%9|#s(E5T1A{s7z&s)GC_l2zd!@aptdzAdNAB05h-cL%O=mK$HAt+ z`Hz9Y80)q|26hWYXWAeGz*m5{Jj!5TJP5W|H*TKM2vKyC-! zS1t_C|KPacW|xU{1qBx$VJ9mp7TataKC>IfKSR{(h+Qo>Z4sTx!wlx}5WVA5ij ziM+_A&BZRy1)`ZmwAh&Qb2%BfOgNa?^7BB=aS`ym4ioqceGybQaj{86g3o{gmC>N~ zHt75(aCVUAi9|srdU^lIUiJt=_s)1aIoa>;b36X%96o-;6j69z~f zh_A)O0`UVATj@q71||&+P&mK@*-B?IFfi!|GeH>nx7ZojAj-AaboiLqz%xBi0j8n} zLJS3PPV5tg0v0w6W6*pMI7kpSiHKS|2PEE*p`l15C`s-Qeo2r5hDARH|-2+f>d1QNA^@>ueVL0ms*zmuuB1T?P( z(hX_HFf*7z%OFe@VqDr{P-7rvXnrZ|k`hSaYV=SGW)E13S&L0eiG?}e6O=ZUSVSQV zaJv|CMSD55SL2~5fk+w0a#=;fH-cD@XQBsdcv6*q_yOj@ zocDnw%EVd=wiVo_P-kEOr4vDj3%J-cLO`?1Vnw?_Wxs}p0s|W&FKDrW5;1s8M2@Li z3+6yDLyk!!1e7+cAT$$mEmXK#8>SA-kYlRWfeC;aa!l2_Faa<_3nBpOr;Lhz}As0*UJ> zFt9JofZE0~(USkF=lZawwkY-~6PnQZY{u2c)t6y=UW=J@K*TI0yVPi#$V30>ZWiLoQs2vLlJ9PDY zEE-USAa$Uz0St2yaRF8dQU_{VW0;39iUFnu5l)B@0vj@qiG`0vV;*Sgi@DYeGyua| zYY(FMSZf_Xv}mm@DBn$E60bD}@tJEaK@>}^6^LT3wFXgqEVVWuRp2`%tr);_ae_=5 zU7)yQ5#ze2!^EV~4H{#g53)$32ShT}*ny_XCMz(oiF4iKQWN94#|k3Ai;N)arx+OY z^cYw-GckZ#DGYkX46G)gB`yXm48DvE4AP*qQVnvH4wJYR%ze-qIM7j2V3$Mrpd(7S z*kt3mVRK!evzS3AL0xBHU;tqd-{KOeIW7V5p&Z1AY!b;3KZ=39$Ru8C!N`5R&Ifz64eZo6B1VS_cCTG^jT4$syq2LlyvqBZLnj!KZ%6^F%UL zgY1=xf~>oP@FewxnIN_)eE-kD5D#|%L@C66ZP3wVkZDO!pyV-CgY3+UfEquQk%2AG zj0w~W1LrGd22%zG1{rYJg407a*hST#!~k9bR;s`VUUmZN66UYx2dz5+b+*{SYf!Yz zm>}kZ7gT6WM%j0u(tAu}E!3u@Eh$8c;seXaQ|W7ZBrua$CVyrpkzOF;#)7Ko{e&*aupN z3KlQ^3|i>|Q3GAw0$xG@S=}PY0+B&l#Q_mORtj2#09qCUk%1}&EkS@RUeQ(IghVq$ z9y#@aVh3}f3q&1w{RDX3gEl)vM2(44$yAq*30WHBmR|oPk zx;l`Lp^H{jIEe5uM6I~72nX~4K!_7SD?JcC=79JZ(!H{G1o;>=ZUMW?22%1!fCeZ* ziCSI&bgq;(Bd#SEs*o}(KMs`1n5sb~A$ZA!DigSb$xnfZgDQpmd{6~}Z7Bw*9SB}6 zCOYXoY7P1>X1C3)b zGl15t;V=US zoJO@lEgP_+d~O8>Hi#fh8)&@ML=Yp^!Ru$4z;m59LE#2TXP~-}3$lV<53-`3ZI%{z zB|XFdaH%~DI+hK(NBIyFgCNpiC>I-erV-RW1WiVOTJWIWJ7^RIl$${_sy+-144WAk zz&k7w85kHc85qF3qbnI0z&DX~GB7YqV_;yI$H2g_nt_4AVjZaU$eh0t)XxW{DJ>@E z{8gYF#>AYz8YBpwyl->fR zw?gS{P6RBk{J>)&_D#W?IN^{puF{r z3~X@D77&L^M2kxVF0>sa1gcBgL2Ge9=@1fEAXB&?#^*tz0Gv9qBBZh+*z%;Zq9VB2 zMe_`VAO%VudjurU=NXDaEQWBwMSw;mXpu1+_$WRe_FP^uVHRz14nY=9h)Qt#BVwK) zi+BVm`+%>!<iNMQ9y^ zcn3UVBQI|ZO}rW)N$?c77Svgw)CyjF0uQTgps+%A*j|uTOw9TFKs4N8AdP4a0}Fv2 z1|D+)^;I$Fr9ksBT(J2V$iyDF9{`zi(E!CwHK@krVrGNRxv(+kqs+O0a)c&W9k^a( zW`oWXu`#306U}5`V0a3eS7fdRHFY!&gW7{k%+;Va4w%Eu&SnbgtT0!DnmAw~9wz2$ zP}>H~;pOB2$uonOsfrs*F;|1yE4oZ#S`Zev)Z+jhYR184%ErcN!X&1}!EVCF&I!`S z#$n3F!448*<1}I8WCw{s)}b&`Q6e#HS1e@@5*{oD5tIUVIEJ7y95*pp|a&X8AoJDQ}QeKU}I7tP3LLgDN!< zNy-;hYAKSGA4m$m;IL>fl9WGaL4GgD)&LL-G-TQk4B9>ek`U1l25q)c(dgr3;3_%^ zD$e>j8MwsrCxH0ZpE4BWPXuWV1Px?J8$iy^&}Lx}tOFSVs(ytSH70Q~aMghfXA)w{ zpA71nv2gI-(`M2*1!}$Ova2y^99Ljqb`cF(W(F=DCK0VV5Le?gC<3Q~cEGR|Jq3AJ;KET@fNIn* zFlgsb1N92)K(QdAF&*S8ZZ>u%jT0c3+!F&aPlB1;Y9b9F6Gb3<)Ijs=3^okP@eJIc zeQBVvBGCM)E@)2(_`Y*hF?p>yTyoqj8fQTI!4@z}_kt9wim@$H6=w&JQZG`K;8>JD zgOh`l`Gwh>3|wOQb3n|wpkaH^{MBU8x+HL3nFsb;-F%Sr z0?-V`1yKD5UQn995M(UG0o-+<#Ke}rh?9Y<1eBzB>Oe_|L%e4<0|R6JVo=pXBf*P4NWK_3(+NU4WOL<=+u2TFeIJs^^+4kXLQ)H4(21UB%J zWU%8wWdaL$Jq2iL?j85lU~X7VwxfT#W~ zwt@Mx;QVD^{(Lxp8kj#D&Tj+r7r^;tVE!C9KMl-Z2{|d zB*{JKk`hRg^U)pNtFs%l_4xNIhe&X>fkZTjxH&VB>4)oD60-hrv#EDXvrxDvZN%EBq&!QNm_t% z5l5X7%ncTxT*Luh-v*9R3s6qus55}cYZr6W8N)az4%UuDkwJ2;wmpgrl2f%+QDl(Z zsm+Zf10Mfiv)BIp|37%oiUtD%gCVHA)8zt9nlLdkNV91%Gv%`~fmT5=G3PU~F>q-i zq(JMl7+4t?j6izeWhAK7#8O6rh705cO+^G*<@xk{1X<+;tq+4rv5hPY41%ok!q&f- z!3_CGac5OV5EHyCEfRbOBd9NWh=GBjhnaz)m5G7DiQgVV*FwF5wkaW*rhIs^{y8~Qq<-v7VfcOyIpvHp^ zKO`K$+jE84v}GaOQqU4XOCPvea9#oJPlT?UzQVu&ib4j^{2SuXi+ta@LI4iXn{3~ z@HDV6Xt6bla6MQUwD1~5I0GyUT7-=v90(Q$EyzX@wgL--mV%=QD>E@L$TtYG*-9}n zFbJ~A*V_t$6@u1oLlg?KL6&eslGA5UX#$A^&>})m&)V`nDD|@BgVr>Fl3*$<#$Z9V zA0ZD;gK6jrKqaRj!~k$2Oh;Exi!cG43Nz3Z#4s{2h(V38^+%|Nq$E3#qw5M_nk@7{ zd^AshS}<@EKpPIBra?^j15ONua1-8u_z)AI+3*%ugIcL8!cmtAQw$A6?OLcLXhgp*3tcuIDl1_u!cmuvF6#)Dl?2J= zpvx-5ylo%}RR?yp0XIio5lk(#eAq$_B< z0&IW`G*tp?jDeOafEr|=1{mn57|=0|psnkm)n}lUhn$ec*e+161U2N48)J}a2+kT^UA;f|3Uo+CWdU#=^mguMFX^~L`{r~30%2=MzGyL zdxud+utDRkppDY<7LXv#fR060L1yI{Kr3-UD>y*C8(+|6AfVYR1_lPu;y=(>W*7ql zgCK{(T~Oz&%Hkmd14CU8ALzgW?c%y#2qUX*5`>Xh*9T!l)J=vk{OkH547a)|5Qc5t z1PH^VZYqSKT{jWJP^ts1S{G)~maGFUP#0#=7N`TQMHgn#X0HP+cNb=X46uV&jDl)R zoe)7*@MsGsm^2rJ(43H=NMSZ@A&7t=3wYcxLOep44XQ(sEmD|WzCn=PKtPaPzTSX~ zQxMW(7w3Wwyl?*Z|3916GVmQHL++Z;|CXMf)t!$t* zkUwCIpD@NR7~?mL@dw8E3uF9)G5*6C44~0Rkb&SmTc|s@K*G#0c@`Lh6~oZ4_+; z33DS0gX)W-gCJoZWMNQ6QFIX`%!@1xsv(LVf`s|xg^+>+)Q~Is2omQ9i;F^o3DiU@ zVt&q0ATIzGhdBmR;S~vk#0A0PuwVsM#6`*=aUrlc%p6elT4V|m7Y2*N%mLLxMXn%m z5l~D@Lai+Z#aS>&SQO-Xm?@wpPEk5YSPWSh)Q~Hx1PO~H3xgVRMcp7_aLmID0X5`` z=7NO5Q4bRaHROucgM`6x4-*D8_ zHROuEgM`8H4-*D8IZA zph~ic{Ut+zya|dpsO~M21c{rXh=Xe2B5jbk8HzZl9xk#4iJPN{gKFa42n zKqEy(p&(&PF-d87sDT+YPkgx-?FsPkYv=Sujh%5|hu@!9x2|FPR zgW7IIM?u2Q$ikpjT+wBaunV#&y5r)i$O{6JxJUQl;TC9DQpQynDG@u zfxJ7i@KTVlFi6+~S$G*pSQRAfi7dPvBy0{6_Cgk30TT8E340?8uLKE4gM@uR!eUUD ztO5z=f`olR!Y~J}1_{@Kg#AFm;!xFVK*IeXVSkXY1XOq}NO&PgH~=Ip2^C%k65a|D z4g?7cNkg*BdXVr*kZ=&P@CK0ZZIEyOL>Ar-5_Sa%MhPI38JeFG#o%B%FXO zybmPY4iZj87TymM?gt4cAqyV>2~P(JCnF0V1PRXv38x?n9|8%l1qr8ug`q|IVUX}v zkZ>BZ@DY&kUXXA)NLUoA`Y1^FEJ!#5S@;-8_%28|6Iu8;Ncb&CI13~!1~udaNcb;E zI2$A^4i!EL66SrwP#~WJ5|)4pp8^TXf`oHH!Z4Sd1_|qeg!4ecFtg8qgl$2>`BD;+ zh^pl*NZcPJULemaEh!I6%jZDi(ID|cu(&WZ>7NIQr-Q_cb5fFz;Rg32z4pSIYB( z>UEg^#&w08zco9VL_34 z3zAw7l9~j!465rLNa`?13N*EgqU$|K>N-dYbTa{p)CZ8%YmgLZgCUC4N08KikQ8Y3 z6i7-;9%|Pokd*Lyh607@=+5{Il2Qdp&45aY!*qQCNm+uVWQghLzeuAXtf}}tLULd>R2L1v` zZ3IbymfS(4_#k%u21y+SNr8s3AX5AgsXrj8n;fixMX@jId6VCEHpkfZ%t>OhqS%ai5Ld}B(5Fbd!8zckT zpaOCpOoksM6AhBNjHX8bB$Ek}0nKS3>k$OW)PrQMqUjL=$xH>wT!YHM+DyVAnWZ2Z z&|VpkX)qZPkj!q7%ndX>q9B>mAeozJGGZW^haefyxHz(D;vkuiAeq}}dL%$H?4KA4 z6hKF4f_s4AfoMolmITSlf@DDhm*D;kk}PO!wMY{r3!1l==LdCnkfcFFjYXCq>HAPi zVGRHokg=X18PHM&kV9bsFAI_h2g&>Z=|LKDk^{-4gJgc9$;g9b%0V)q!yS(5gQ7@~6zHf9uoSH6VgNEQ6(j{ZE(0tDYX*U4$cqX=QoQH} zf~LHS>OoSVgFL{xUq4wAVIk`Y0Zu>i?D2g!(n91d>#LT$1HNqq-NiGih%%(DVX z34UQHP!I>12O2(=g=9l(kc=!yMgmR71|*{kl92+*fZC|g^koZ@u?5MT4y$T&0;1Lzz?eb9M^I_e5X=gKsKHc*H#LC#fR zOH`Q5$iNr{*+jtvK8wKUF`Jf=Snoy#2I+<+pha(XOw6@C{0uBiEVaG-3@lo0MWtUD z3Ye-v9Pp}prfQIM4>tn?6Zk+2EiUjG_Mml)T8NG3OF?GIF;#hR$fw^`WXho=4?Q#%Rvx1X>>z^n{FLU*J1_rMD zJ_gXS?bW*(7`SRzax!q;C%04-{_IAS)rpPXHMY;e)JTss`C%?88(Ib`Dq~e**&pm%b$v6PQ=MkpZ*<79^d& z6~WvFav#V>CWuz?2(X95x$a3ZX{-V*E4(KNH300bi6GarX)!>~F%V$Lr~n^z&#(!q z2;mq#?xOB5uqE$INC70K#ik`yEXBycRh0&xwpk4dMU6F}jW%mR(E~atAGF31)UYxI z&D~XlRB$m>UuIz7;szb4Ag-4rro|*$3le8yhXnLGkSSud>p^?4qak8U)gVDs$FM^K z1EdZb7+@wiFgAe95CK(Pu+)l4F_AhnRBtz`#I>rhe9*^iq+ zzGbcj>0)95s|C%OGBbeAWCf>luw6QmPz#vyw}7Gu!)UNCbp#>yfH~m2qXj-OM@xyB zB|j6i3LnJC0x{$u5wFF?0zxpJ(*@AVSn$fvdw0U3~X%GcLW(&xY^}7O%*}w*QFt+1%uYefOf)w z&dvj2&42*K( zU|m{DOw1a*phdOdGhX;WECy)Rj>+GULBdD zm2h30=sGy^5!c+|+!RBiig3cCED4IaX7?#{xZID*+S_2RTF+zh0 zbgVBE69ZeV79#`8JuyL69dqtN5q zKr2Ap86ijUfs$_+6U2$CASbdjX-F$Fu&HT*?r33Ss9|Jau!P5zn1(z!TEz5aitfOD z0zD=Lbovt{Iv@+C9Y8}!Y+@1`ii!+uS={WRS;h)QHsA3EBiJGA8oNMy0wmbPG?Wz? z*myWZi>EO$aDjtRSAYYo2F$Sp^}&ng;5U*@EK5Q|36eNScR`kh3WgJSk({8TK*)Y3 z4oF&Hhej-Wtsy94CGf>B51W_~JDY|AC?f7?!OmF+EzU_|WMIf=WPnuo3=9l;$Z^NZ z#9V9uxIFX5gt9CO;d+}~isl5fntlkJJoIssJrfP&hz6z+?*u%-dWdT|O!~~Jc-wV>V zm7jsd0yH4S#8eGp=PQG1mu+Cfz@}G&*!kW}3|zYTOw|Y>@q8a91}-Khuzc-$kOuKu zkki2RDu@A*%C{C^V9Re{V&D=pREO9MwF%@PsD6kdkTYvRj$jh01=$K!C&R$NWflAX z|9>VCh%DG^`TIbdCT#Wp|NjrJok1>u)y{HE)nG2HUbX_~6OfxA^)e`^!GR90mqFr8 zT-xkn#Twu|#8kZrw73=&l;C<<4^*YVYOyk=>h1gtEY%U9q*AkkpMix%m>Jk=4}gpjuLX&KqX@(( zdi0&4K%j0{|J^SwdW038Bp7OOqX&%mPX%2W;J zR)cu6@_oPur-9o7klTO6nK&SpNuXNB#01tM9sxE6!hsmomua+`Nu(BJDmX4dPDP4K zFc%b;+6)W~HgG>f;t~`j;J^XLCCF2dxHJXFCFpD@Yf$_lg7XN-D_|Y9$3Vde8d5M| z0-u)y$#WnDTx{}x^;p=%jky@^u`_8nD1w^x&~~vP1CuZ)dxFYgW(FJ3?Nwkmf%I{+ z>+rFQTZ0C+#JKJ%ffk^N)`BFMs*i)RCM!sUsrn>8155sGb_O<$2|^5PwWmQ&f(Tw` zXJFH1uj^xEV9{o+>t|$O;bG#aJp)o8R(lqdSwUl%Oia~ap=yxGtlD!RX^0K^I-vY} z9wZ?D7i_b(3sW_SpRWz>7(na-=>YGm(Wqi%;Ns=fSO}_Oq?kBskAk#{gLR5?-AiVI zngTTgloxf^Ljr_Jq!wf@lL*XykYmInz^-HhyA0yWzD#=`NbUu@Sp@7|F)mQJ+JVBA z4P1_bT4|s<<3x4^sYtxD0trumA*Ero#<&h&1S6Iyt6lkaLle3YZJt&*=<02Ol0U zkhB7dZ*a_m(+W6R!1>-5oK~2sPl571C~nx8s!xE}pg05PY8TWrbO97dV3TSuVNF9I z1!!r=6XaJ|-wHVmv4HO*wgr1a`Z7NQ3lF;v2fMglfEd@kN+!`-kPH(CQ}q>o z1{RL$X^adk8jqP7*dXzJ4dfpAzhFh$YE0E2J~+O4nK)}Nf+WSka^hU~bU`r+HVmQ) z9HVEMG(gT{5~&60gv5F$Q4c~E>Hw1eUUqy^l}0dZ_pm0C^r9AHJyZaUJAEut~KyvBn2T z0a|1Rv5ZXcU0n!4G50GU@@d4(-h5~Tu2$cgD*Ps(qi`EG+6krsdmY_yG6KCyxkk`e*hKh6D z1r0tkL9EcO;?TIj%)q8o1WGm_>zJyafD~6h1MNe64$sUlK!Wmr!A59nGgX85;KU=$ z!X(H7u|NVWE6#NnG_eNC(GX97m4Z{y2}l4kiPVC`u-f<@&Bi}qGqp94ZDeHDN-ca)3SxueiH)iHIfxC4EpVDoKuz;6LD2@bq4qUWnsutDRO zpk1UcV1I+`;${c82|)o}%fP?@+O8(XbypOU=s^mYn5y6KGqC6gL+Jc`ZU#18W(jQ$ zDM)|2q4pifPjwR*8CdcUfO-q>L45hYwIJQv=1espzQ#dL1}+|sYH(Y&8l=NmmWiYG z6-cQ#Sfx1EUC`(WD4BvZLbV;@WZ=@>!=wT7CPe6;XaX~XG!uq>f54__n?O{7?c?P{ zvQH1xZUNgT0ahu_box`k1|dlKYynBCAa$Su>*atu$shr6Oj&|fLotDw zwf{lJh}AL(FtBJxF;#=P)gaz1rs}_-wgRF(FbkzUz|9WnOo=nG*Zu|>B3=u!0Nm#W zF+kUQ2{5pTM}W;{0-Fgjzc15h8j}dvW^gwcq#G$H!CZLR;QSS;&7 zTMR8LK?*s*GYz#IAooF)ZwD#AFT?;jAHJ3oNoo&B3f!aS0*O|G$Rgb+h63q)KT!Xc z8*=V{El8XRY8*Hk!FsqsdLT}y1`WYLx>h_OQTe~MAO~B34ohRI1_^<)DKAttXyAqu z+ExUa0%pqef=e|(3P>|mgM7P4 zqlkln3v3WmHOR~&)KmuAJPJu?(x65m6Udd~U`L8`-SYwEUyy^LZUq-kF5tom6l+W( zwIDAri9o_t1QLcKkYEw11=$8ENg6;=j8-r1V`N|eVdQcIVHK!20GSObD&&}|K@LMo z!(c8r4TJjUUhp&mNyDJD2Tq0HGz>NsT>sTW(=fXL14}I^iLfzMvx3;5^aD=MZK&y) z7Ze;|lWO^q(leqi1Sz1TF6;q?43kDThyvGzy&x7S-!PI@7lPcw%~UNQ0P6R{n{AkN zAxIslE)*1CV9`L-g`yz;%KxneNrUP_5Fe>76b4CGgY~?HS3Y7OLHR!rJ=#pwAU-%% zL%JD!AZc;1EK*$vvH+?Sl&Ex1Flm5-f=Q$nq@Af6Y%xd%S{H%>h)JXtBn&QA!F3^$ za}aeQSik&lu!W$y5X6T#2V56|og)F3h1G@VZaK}Q0g45vTOcX86BI2()rAn#Kn?|^ zVGs>T!{E9QA_;O5ND@RtBtdl{E;%`-YLKIm53erT(>^F^)Pe{$rfLyT+6RRq8&kCqhz*Kba6Xubnh(T5kq9=mRuU;6fHn<7%5{(e zaGyln3^dv)i`3{7WVpx2q%j>7fJ_?GK$I4w|1HnJqzGxxF);`;h-yICptTI34Y!c~ zH^^LWrfNBGdIk@Pf+i)zxbA|cxR^w1LGn!1QlQeF160m4Rm*^?0z_df4{|v~1yW(G z01}n|3)XG{IxCQ=8YBcxC%jPAh{70DMlw}{Oahmq!YoW2f-D;E;5k4MY}y~NY1(c~ z)gV6DD2OKX5|>qw6<*@9)=Gdhi-YxwbKMIBH54J90-FNL0=jD!BnjQDpfy#CQGzIA`oSuF(K3udC;J$ z4oHDmt*!tAi-jyC1%rjEK_ati^+3{0)gWUa%?N#vfc#&u11vzxXqlL*L1N(aR%-x~ z6{|G_nFgA>VX6i(brqPZ!7|lg2Udd&MT|QMvuJA~%Y)N66Aq<pb}R+0_+@!OC-SOt}=;0913wbI3b&X6EY}jm_%wp{$Ub< z`5hDx;t}8wVgiQ>Q#B}r`ZDb=`~%PBfq0MvKMxeOXzh$`j0_AQjNHzEI1ywGC`p58 zc#;PB2`Nc~x!`sNsNdlSPaBXl4N7z1)CW$}U{k^Uj=9h@4N5+>AcBplS`CzrLFt8! zsag}n1|<@3nqGpMrj0KtJNSuki z`aUBAORX8m5T5=_+~Uj7d7yj%VY&_#owDK}$~O7U8d zY2dyFhyhW`%fu-j0X71{XQ~F7YP1pD$pC3X3OFzqR2G27Cj#K^hJ+i)Utk}C!wqZ! zINX*&!wuxMS`YyapEaoAV+nE}Sa+>8*6;x-;9{z_K@T60I4pc@L546@gD6P&*ntGZ zYVD!n1Cn5>2Jv9w^9mL|Rv?w)wII{L;R9koltRJ>qzS@jss@<~4Ihv;r0@ZAVc`=9 z4j+&~knjQd3+zL1_<+PAW#u|(_<+1t3nIYbvjsJL96;^^>#lVIg%8HOBuD{TnYa^_ zaj=z%ObnoD!XU8wK>E0us+}QaA~(CZUW6FeUC?GBCed1uBol|mK2Tb71Gzx{FIY_5 zhN%X`*Vqr9AJoz1%s# z&V&g46Me$KAPvd&+d+;8Rde8ZRnYkGj2V!&1ZYGJ>@cts{)vI~z;imtN~8z@bD?Ll zg8CG}a6d!h1QeFwPzA>c*i>+u-3E;lP_Wd32sWl_S5W>2c@P{wdr{-Z9pqK8NwuC> z;|HVwEq)GxyofD+m>EEuIUw-^(#OqI?SqJ)95JrDpp83BqO~ANCZ=jH0S1=hm3$0r zwf-PyKqD*w#FqaHR-|puR0HBeB8;g9q>eNH7&y*+L2-7AkAY1G6lWeFUE*L(us8$T z0?`hRvn@;-Ag4o2M2@oqAP=F$*_t(oI71kN7H1$Uk>U)@g~l1Ed=3G}8AvxI&OqS{ z4ry?lfy5#CXg@U0KtWXtBG{O!{XlUB@*o>iwKs?j3Mz2?9RtN5(z=a60S1=pFW?m! zK>|3}Z3Kf<=`%5~Fx7I`;*6zu7c&D_Z44;&A^9s7q`wcWKMqYllB#%+s`+453Aj}yf>a#^t4hMHDjB5e zJXloV)kSxKisuZNk60E8Wx2j5zs&ufbDl}Dyl^xZfKmwKGSr9Sjm@60fZnU|?aFS7xdPF^WAn8Q6G*n8DYgXzbx; zU@Hw|U|{0m(9ve%sI386CSD8D2(C^*42V8(|5-c&Y?wBrk_9P7O8;OkH2s6>*)X`< zAn70Edaysh=^tz|xXgM8P5&V0*MbOeI)4sI=ZH{f067e-yS51$3a~H;2ipTuz{OPE zj2;FcaVGKF7H}9yF;#;YSi;~lA`BWqR*BbwG=jqb#DM67g#pM6Xc&MLBZUE&ixdVC zaJNCi0OWSCFTh~{HW?fSFQH)oa(*p{0EfYQ)G%lTISj13wjC)9YCxyZgY5w+;9{!o zK!kx8I30k*nZ#?m!C}C~R1IRFgaK1^C#dhR7nB-qBSNALWTAL1NIN(rKn#d(SV(|O z(q0X2a)A^hg#?%jZmWXouPC_tAmIRVKiDVWZ~&VN4u_A>Z~%Fs7DTWyRd<2PKal&t zVe%a{OnN|01e;XbhZH8D`%0q0c7haeF;({?!o(RICLnPp@!AQXFcD{}2GJ-%0?8UC zjPR_{3$jVP7Nidx7$62jA1p9HW@v8$2L?znQec3&u=Z69++C2c0J$6N18`V?jRl9r zPiRz*J}H9|RT`v61NAg>SE|6v5xcnq{iAG*5(DadAl0>d917_-p=15qr^0R;j$ z@@nS^FtBKW3TIHc1nM8fg5w#af{UqoJ|g`=`bQvfCidz&76z8u1t3$HszDT_{l5?- zAXd8w+WrSgFja$iu=YQ^e>4}QQoI&q8aP#g7!ak9_CH7ygwIqBG8NkX2Wdk}pI|O5 zea6Av4N0FMkAb}iPM=^4!0A&!3AAJ$;f6m!XFbNE{YE%Rz=PRf8x<_^bd4h}Euyh7U-BsT#zCg%7-cv;?G5ycT2{ID9}1 zh*C)SfHXn)Ow}M$q2UA4h7>+vE-ZZF!Qlfk2ogRZe}R1n4j+&>q+KTg4Ihx#YC!}z zeB?mkgOtoxfs)x1a57tsmdrqV$JT({&r-V<6n68NszF?4FsY%U#K5K_#8eHEVg{2M zi$V8UgZFlT+zP4}5cWx&ZP?-(hc7;%YL-cgXnKv0lHKFWYwkOe9# z%)%+i0@4jWT92(S(`b)4QbJe<@(4JXYBzv916uFP%m7+Zp9peeHAtR|sd^(K9i)KE zX^=P*yM~$o16%DDkQq$XAS(YfsBgCwBp_D14U`UiAQDW~AYMKrGidon{wGdQ?`{*Q zrvM5Z9ng@%dXOgZT9CouBmrVTbU~5?NI!(nR1LDgXc@Rj2Wdk}5@0U8eoKP;0g@&_ zUIcp3Ffb)zhG);iKSqmcAn5s8}>Nk)R!RbRAls*sz%yy7t!6w!2gajM-Ty{|T z0tq*e0xqWNU5IdllrJE0Sh(#58NyTzq9Eb62P7a?yB8F0jt~i^Y7h?=Zv9*gY~aA! z0a7Vm3o;EHSRe*ODI~B!njn0pYLKbW`~%X46j)#`C{2Reg~{Ns0vQAeE0DjyJ_Lsq zNF0)XbfIAd@>(s30Edq;YWVB}xeu(n_5jxK0V&{Osy>JwJ|J;e_#6Tm!c+~SAmMWu zBp_CM1R6dd38rcg4;DTXVBxbLq*A;VWEwbpKn#ddNcey>LHJD7AXA~?1JZ^RK42~^ zd{V&S12PB_J|KUAeFzR8kT@iKOrhZe@>(s30Edq?YWN%lxeu(n_Bc}bfbv}`*dCAq zE~e@ei12~rJCHaNyM_uV-<<{-!c+~S@*_ZSb_Wq_ANN9 zz&3#Moh>x1K;Enc5o}D=r$G4*a*3%7Kzogf8VOw||B!wn?P z#I9ir3b!jDLzt>TRDL8V+^&KI#A>fW!wn?CR1M4)%{szDY&!wsYjDcrzZc(`T2{QwC!kRQRm1&15h25`8!Lc1b3l7`koWq4m4QW>Dh`9Hw>dO+rjW#zwQ1|0+d zvVyZOGrvt36fIz0ehY}rR1LNS?3#Q>W(Ka}2We*q{gQTO+#GcquMFl=5gjR_iBU?cyD zfi%O%`a$l3l`uw3)gW$95;KD|^gcpR8z~1KACPhe6wTlW2bVKoUx3S*d}uiXin3Y| z0WMq0Ksf?bw%h}S8%yndW(F=TM5%EC)ZtykTn!Rt0h7iOOw}M!=4y}*7BHEA5~NH_ zD-EI$Swa3OP6nqQo1D7z15R1ldcw%7&X%h$Q66d<-2udtq8z6e*1tK6eL5%yu%)q6) zgh>PB3y2N>M0di|M=i*2h&?Uawygp~h>M;k^59_tNfV%u zMx+U_$>20m15Fd4V53x<^hSzF=9Aj3fNOf0ovX*s590g$*Hlg4zYVIXzP`TS7Bgdnoj!XO%9 zm>`G?G7Kco#8L~EmSd_G0g1~oY0QHf22#hI&jT_n3|6$)ih@!IORX40ZM6)DR$^kV z1v3zZvn)tiF&hg5SFIdKi5ye4GKl`fq|wR9z*T%2R5Zzh6+Z=2@}M4@rYWmdS(`lm7w@%ssx&)z!u0<4RSe4K>j&UAyW-IbsZKRiL3Z22eQzDlZGb?glvsT*q)}^9wP6D->>Kc5odb#GnBx*L7dq;}c>) zDv$5L${-#F84U(L(D0@aB<%7pfXY9;;&q@Fj~>Y9u(k|zd>`cgLeO1y)u5D-&(Foc zmcN~gfem!Sn-U8H7q<{23l1rbzZ?u)T3*c6(t->uEMQVY0F>HbR)FFIboNjY3xgm( zlSY9EsKzrEWMEO%6;oqk`p33eiGi*7A}0fvDpxH?oGt$n$hjbWpc@^O85snbstrL2 zsoF@8frVM49&7|cgas_Z#TLoUuEWHx1x}mH`6q=L*jT`1{tQs1p;x>W&&-iVc-(u(pH9;0I`8B|28KBSM?pxZG++wVB^4tLqTNo?{YG5 z8J%YmuLU_-tFHJSD0G=??}I3&+6SQ1lGq+{GH?|?0)@00#AN3D#~@xFGx!7N%+0p| z8EOUPvE)Ao*$mL>{0}^?l=1wrEB4DWvLC)@3Ox2-+3@rRi8lOcO*!Y<=zKAlg<=+Dp;c`sXVGyO& z;UF4h1W161r54ObG^ipV(jv8yAR9z#!F+K2$ie_RAL=>i?&oTdWPZ9Z0~@yxqsC-L z1~#su4d9M1NO?XlBLf>7^ej9Sl~WlRAmWhzuU_#JP?;44vJz2GGJ)?}T>=V+{M`&t z--8%Eh71f$|HMFKelDnjLNw80K#m1BoonMjra}78pt(j+{4iC6=1{NN1}uRtt+pv>6!~O2BOvkX_tN)$!my4t$S93IhWJ z=+sp)uDeW-zBfo66GwFsI|EDp0yYM&+60g%0aH4kskUvxOPh zIIF>7EY8TlR_rCtz*ZXz(k2epCC+shbeJ!ws{=9wYQ!Qo1}@zVOd23hL4^K^E@xtp zX5y$W1zFwzvOE!Fiu@n2G1`_)H6Xr5BO9n!#U#j*&&bZeCCHNhTMWfk39xd=>MV#> zsKzFcmAjZUK%oZ_`X@S@3D(_y4hmDWb+n)}NI)1AKcJ=tsK1Ty!#^>QgCTt@gbc`y z|HMG%LS*EaszHH))Yk!VdsZ+qFoDln1GOtl;c*1%bAgfzIN^Z%;b0rVeXeJqHa8n2 z8f!su3GQ>f19c}5$u0>LXkgv7DUf6bZoeYdhl3QL^^-q?JP&K5BA>6p%m6xbs|@Tu zkUnmv>QrzV0{4^S#klT*xBZFMf+U$Zs@H?!?msB*(m>9T{|lDTwqvRW@$(tjK?kOQ zBM!8|Ku3*9kcAT|0+T_S#KC&Rp~r224Tk6jt(w-|%A^5uEt5zs$VA9$$d4fBL(g6W zt%aO53(^+`Z81UU2d#Ss>4C=!$Tp;S0dY~|r5x^WNW6f;6CASOcmbOXj+YP6cmV}X zEra;ozXj1jOx5o|tywOn z>i3{yn*K3riD_vuF|&wid;rOV%RMFr(Aqyxnq&f>?pFH|WUP4YClFQq8Pxjw0%m>% zF+r9v6@LRUzk@_IKnE=`G1vY8aad|W)-kcx{sfus#Z(Q_$ejNR)QAN+7TgwQW&oYX zR{^T~!A(#d0jN45hWy{4&FGLODGOUQNJ|Lx4l>Z%u_Mf&J_5)JU0x=Le{27MY=Ux% z|AL$a5@D(ak<9u3K&}$61$&-LTMHu0mj55ppypO(uLT7j*dlg4b|x{fN@x=sWI{eD zIE_wdnL%u02I~azK$1`%sBUKlFVFz_iK&`_i-8N&7iHvP;8Fwk`9OVP(0!bhpuQ2~ zKQYh=rr<6GQ#B~qz`YS2&>5mkTnt>|5w#!+5_7u3Oib0Fh~NR8iV0$HX!G*JjM&1? zz{aI*&BRpA4ABUpaBCD~VyXtkE!Zp&gM*8it(b+2fr}d&1MK;%T%d7FP$aYGvw_*5 zSY~F)XXgTUWf-IlSQr!-85pX-=@}FkmY`bzAmLNT!NtI(sw=Km$H~RO^^c8wYEXLA35O;VutYHr7Xw!E6A^C&ctmtQ6EQ1RZ~L2a?$o{{R2aV8&f^ z?*~IcF}Rng1v$U<5`+3rNI%_-sTv%b`GTOpgtZ7D=?65dTn)+-EXGV?TFgw<6@m;b z#-Mf*j47_gR9y*bR^`jGGjMT1I4oceHybGDHpGklW9DIpGkG~UjSV?;#F+EH@H4Q1 zMh{uQEJ%xt4ea1}kTB>V%>NAW5OEG2CQ&VMEl>-p3RHx$)K-Ive#EF!4MemSB)X}H z;U{Q%0mOkei0T9xSfEUh%KUaA%;|u7kP+b0ueK3n40Np)qFwV3je*?&Laj@Z#U271Fn2=S1MxVg?M8L*F?O(#qz-3hc9_t5%2t@Rs=skGj zgAWu=sAK)ij0_AQjNJABhXmM5|HMF=;WZh^X-G90h>Je1TMG|sNL>bsLvU<@>oTy( z;JS=g8M59A6dko70$i7gC^Nv%CWem8>J^75Gq5$Zfzkq^_0bLrB(S-)ogf*swg*TW zEse;4{Eoft0V=cV!0ra=<7TSvLZlJU6%1lrcR{DkGl|xMrWsj*$0fsKi&8f+-ocBDC?4v@j(U~^$}L|_-AD2L7wfenCI&BwvOWmO7JH=t00 zIOw0~b9lOu0)-uFx)En&U;ts{bOW{vY~(*NkY;$g0l5n)-GI30>82hY{*ZJ7idAs@ zg3}GyWN^BXgr*x%6xD(VaJo?dr5n9sWl&1#2c-vi0Sf9bgT@{kK;JM_dpDYnTUdQ3Mgh-YNvt>C@N9` z7px#o&k_a(My6_zH26qgExlqrkWJG-3SoiZ#ashY%Tf&@HAFxTVh}dqVCZ6GU}yq| z`y9|biYONYmk5^_w-}EYuZS>U%tz)dK;|q&;($%&;GD-) z4bsdZ$d=zL$-p*`sT!mm#O;T0K?Z=h6CqrX5g_hl5Er!gPmonSLYS3PkOgu@FRvgg z3;6b8`zQbY|L4##WUdb7WME-t%fBSazy|dY#7>A+Ow}M8n5sbr=O2?~U}M*jV6&V8 z+FuC{GB)viaV`cfizd*uy=6?r5}>vRC@h&Yq8J#oYeC@vY20gp+KLGb3=GYnIAg9| z1W6N%K@@B45$zB*|9K1~61sx#QNJYu}s3hbQFh-4LHVaqRKW8h+g zd5eovJc5^#!{`nZTkTR%+7UKjW3YvdpX#zRRf9#DszKI(TCjy|3|u-)Y+6j!AZHZW z{bVQ*?**M6t}4d7DF2ZpXow%IMX%TtlpvRZ422~~Xx{>q_FKUDYq}IP?SmK^ccmEE zv_PvUR)D<5Qo9mFvDU5v83Ag0tOoH}YS)1Hpg96H`1mfL8ey!6l7rGW#%+y;?Uw` zHe=%ukL1>7;Si7DVq-U8VHY(%16^aw!T`FLs~w!SG;F}dtS(z!0}p5+xOfD&wiGkO zST^xUgu%v2Y~qnzY~luwv?ZYO>`1cw(8f5#g+_PT*&>UdF)?uQu<>e3b3n}FgsA@k zDuO^0d|>ag8$IOE_#(%^rge^qxw@8zfu;5gDAt*)>p<+Y5OzI?eGbGHt33~)E`Sn+ z98)!zHiFRLCZ`r;jV}EDh-#2NT|=g7u*PbTi6+XRLt8=SfCVFJL546vRES4_Z4lRD z(r^YQd!HwG(b0-IsZ$s`8W2bwqmSphz}AH;x|lYa-aP6=eNHmLsw_7qq< zcH5whAjBBuC6NCR^#X{?#8P`1B+3BF3k4ttfy?8If($Go8p2ErTsk~VkXbGbPjG@q zlChSC9)VNz{wL_H8*!#;kddInZ=`>L1SFZNL5714ztIE72_6SM3P`ZNI<$qdd0F_3|tMMzAfBQUd%P1 zVG0&-M-ie78lO-K<{&wy>TjSJ1Wmw$8FEb3-(dn^h8&Z|J5VbFoz+4StKwQMYz~B_@<;2JU8U==&jb3J= zXP{?nU~CAQ6lP#$$YEe$STc=`LAj2BL0~!?1J7$l2Ib(AqRhPXVo-9EY2sio_{G4W z92(5vQ^Uz1z`($u>>la~n!Amu;beFr&B&nal#>sdlLx71Vqj$q|G&+i6Lg5(FGgbq zG4Le_49^)D7~+{37=8*eFhnaeFzBf=FidA=V36fvUQJNXL_X3=Be#KrF{Y z3=Gzwp=pL02Vkrz2Vt!3a4}0bD-6!cgR8UH2h(wRF9Sm#*ez^gj129yAXn8KV1TlA z?qy);e+d$suovdO*@qYyk{Cf^KNd1VS*<(_3_89b_icrMjq*#q%88w2M)7;6<=cK1{U2D5sQy;tBqT7M9x&T<>fyskqqv0%7cYP=btdj0po z{K0nsrtX+HOmCntj8y`6=^j~_FR!RFGNg)vTp)W6#(I4KrsEb1OkK-9n3#$sBZJ0S zkdB`J3=GrEKq2%~iV@24lZNTI{E!hEt49@KtVXzO4xFX@kO69*_>3W5orUn;|>o@Z1yw;27hpzSIvNh#v~b-y8F`@7(OI}+}t4yi5V`2hwxa47J{jp zv>1|xxEM5_GcaU;Q;s|nBg35gAiWde;dkO7%vJW#_=smX9SBL;;*2mB8$%-0Ha3PC z>M)mrZu|m;8XrUCdPas#zd+%a0*wzoh9DW3*z7i#9W$oDSbNl9A(^oY;!-w-b#Sr2 z^)T7+Suoi~c-YT}+9AYni3b)!_6Hdl^uVF^cONWQl)yu6gF4JSO*rd^Im{oeb68MefO!hjDRF42Y%lerj9-eLsjS}q20 z2^j0O4vgi#3znz<$imX@8crBXK>^0vF9l=C@xfSib`U$*7>Zs%(zrMyy96Z1voXw6 zg@~~+=(WRKzj6vp%zqn1jE`Z*21xGaV_0nlW3`-wu-F*p!PD~zcsPqGz!vU z$6Gu+TzaR&WT(JWPCPvJC&J5!CCM;#<}EOm1w1Yj++jI+5+jUN4HugW&--U4FhXnl zwNTrH81_tMVBpdP#f-2!B&@g?yxU>9*0~C1n*+4OWMg2+g5_1_AQwmU0)yVo`#z>f&JPMB8C@*uqV@0%pbl1J84FV*!e9k9`LhE=#DGDB!3k{gF{sG~45FYuHKPE-9v%jU z-Ia_Cp$rNP0SutMW%HpT3=E14LEuw+^if1WZr%tL31v`Z2nX9$D-1D5i9wa2i~+P^ zdo^5*IztUuB#9fMCX_*op`L+*QGnqpR3wo>m!S!4*KkLhz`$^j!GvKFScD%g;>IuuZ1PrP zh#CflaIhKyhF8y^B8=e-8^Phz{~RU~$*>h{&YkrPP?HlG_JP$bGl8iog^EbSOlB-& zH~>~t)(2Bl%WwiLlE)7*hk>zy;Vf80L<%M{pW!W7Bp+__UIt!9(0t8rH>f!bCm5u_ zBJ3SdT?{7}WWXXaNFv&dpmg}B2BIsJ;RJ&&BPdQIRw8s6GlD`)U>QW@Aj1g;Q?M?v zT9~fy45nZ;fu|uN2N}LISTTaqvntfCP=;R&R*axnek%u26UxBMn9K;u7i?895jMtL zusKQ^FuT|p3&0{(j1V;k88{dVz~)^0!@$sM#=!7~K^!W=_ZKE2!B_*fUE&!dSj__l zNyZLFMnwUJjWQ6Ciwv@i6B$AILeCT;lE@&-IGGWYQSse)oZ@dBdQ}$jSr?)xXOiY7R1} zF$yt(;)1glA`;4=&M3qL$~!N`5F#Q>pjdtZ6=7h|WRwJ(d>?Ap0|re-X(mv}8$;dv zfWd@O2dw5JJjBcyjlm*1aQ9d+IxvCq*FRfEhLFXK42cYujJ{wO>f}O14l-CW`Z0mR z$Kx^sSWPH{FQXsWg;5R=H42Ooj4Qw!n|$OsL?n?Rk#Qf`WKb;+vg;s2 z65}zj-(zbb=7cg7FdhS|u`Gdz9Aqe9bYup_SF9aGB$1(<(UBSCQ)?xNNGL-!qYpF4 zg$y?#c7-xDGFCBz!f+APg)WTUjN6z&alxPqQ3Db=2%6$!;PZr;)600285BDwq#z;( z8Rjy60h{b{AEGOiVLjs)uV;NW%8&p>V;{nDxu&!s&&;W@vfo%hgfiSAR_x8g~zQcHg1r+bX8zJsVWO&GUAFRd#DiX@@nDGVJUvI@BYJwP^GyVgcyu%VA z63XzLk%N^{L4e_n3`Arj!wW_(R*=c{W)P7?h8K){te_Y?_Yxu!%J801lNA)sADq&g(HYWsX4oGA%TO%U_L((FMdqNq?n3l7FN;X4i z?q*=9U|P)vik+^f5H*Pm6-;Z`KxLHVYlvNm42?|I?4bOWGZUgFl%bi)o*m>b8wQw2 zE0Zfb$Y0l>?$KcCV`^sy`O6BL=0PIe>>z*TXG3%yWSGD-1#FJM0fh#5s)v|t$~OfWLUxkQ8RHFM1+B11ym$z zK0@Rc*qo^|5h8cNB0K63BKN=|hp!<-9)LwYUqXny0gFUJQxwRqw_uSIaG$PVf{1vg zAauP0t9e+35cvQWX{|(vd;*Kav%^AT1rtPs3&}kYk!$M^YCeN?9e|c3AoqL&iyZob zF!?7~WHU6sgVg*5i?DA(n8UyUios{T2wjX|kxN$*B1~YBurP!OGgxGm2*Mn8u*kx- z2sIpFk)O*EBAj56A4p-y1r{+wGKUu|vIbf{gWN0t7STcSsR~%c(G6j{7FeVUNkp3i zlv*tJLDU>%Siz(NR?}n!5n*6h$E3pn%3t@PBB2cHnDjV6`72oyq9&AKBa<-)D1SYN z=C2n_TbW`wK>6z^G(Cev;=pz-Yl7%H$gqtm0j%o^G+%@=>|sja0OcKLcZixqhCNIv zV7r$5hJ;Tj!$GDcU|mO`b}=v?W!en3OATrlNMtM67dB9n85mA5?F5U|V2E@fiR=Qa z*@Yys8!S?>5@I{ZoIPL>NhgR4K_bV&BAw7$1|)I5_t^{u~K+Rdy(lqID9UfLTpcDxXSb%Y)<4xn8`PoeuCpm z8!F>i`-|D0*icwoAZQ8 z4=l0)F7krOh7%NnhR}SP$ncWMi4&AI?nA>Tl;JH?G$*Ld?+0&d{bicT2})6muR~lI z%J7$IHdxmbXe{S2voPP_1f{4C(C`6?+~WkLUQmx7(uQPbegrlr30@N^GCu;F!vi&^ zhS`#N0T;*|7pOTPk!4&UzlW$pLN%1ZmU%lD$mIPE5Rronj?9O^x~4(Pu}}s#=0jjL z%JBNao%tje$nPR;5MLxRL@=KOtJ$6dGbf7q6c@;+Q@kN+LK%{nPjP|5XD>7*EMQJ& z{tUM3kv2pPNaPz>4I{Kp31!G){sngPa;OVK8FHAJxIrdQg8RLgnV%bEvKrLyTbSoC zp8$*86M&cu5;@Ba@_P|9H1;shW4^)-^1B7JG(O01fVqbUROiY={hr8hl(~loWLNAJ zh&iDQCz*fofb6P*+I5Ec9J3%VD4Z`rO$Lbw^MXw7TL;l~kl_NeI4{Wdwa^?F%D~J5 z5@BE{gNG^$iwrNwu2;}nCX|7PMTQq-mjl$UC(IHo{$RT%K6s+b1 zw0#)LFa;_y8!j@PB^9h@BV1$-ODmC^f?b#a zudUXxOymQ_P7zd1BEu<`iF}||K^e5a%)oG)rHUVxXn_-4+=wOXn!!2;Q`A6 zeo$y^f~KDamM1Km`9V2F2wH!EM7HsR;U>AP2fv8Dj_{s7NY)&B57oiNlS>Ax{ zIs?xae^@?)eK8%L2jy8mgMDEF^~D+%E7nH>AYU{=a{)-?8CYZvyyUlINdS#1PCVORxib%!!|vf2uQ>?(kYoM7=|jR&jQ z4Q-EwGWfCP2!g`71M0#HEa9vxz`7nmT?i6c4c7G(9y?L28^9u3(4P1mmT1=dV39be z$OD#W)`x zODyXLu$nwwNbLMzNnrgA7V$?CVGsh@ejM(e1XfnCNG{am2P_G!>|l{MaFIk-ZXr+@ zszY_%VM%6{0IO+*su5sKVU+@l)I-&PL}b9artN~{N|1;gSWPi>>_Ub$g;fp&?LqkJ=HG|a-ED{1W86@HW7TE|j zM}Rex)dg%p$u899zvjaKVuIGLkHGE)*2yDYWWPUPeCGeU~|4h^KvLdDQh!W zr0o&RoHEvSu&x5AIiU=dtQUnqIWD>iVsa=$73)LAxzCaRz_jasN?<#5Rp)ZW2}tAAiLD(LPQQS z++gJw29-9Iu8a(E&Y#b8}m;db${tq=yq7o#=I909fsV1KRJ1#_VQ+ZM3DN}z6L zU=U$DBn%q;o{c1O0<4AwYBEU8Nw8hTjWCl%*v^1OmKwoCq}a}bb*-?0h%hiHvfTr# z*#{K~Wl&_h4;I-l3FaOpwntzQlNS(Op$zJ5Z^7n>Kx2o2!IX+=qs9B7-}dAXvoE8=@tL7DMTcZA)hTDY>q<%L?o1Si}k%hAC{U?AJs=vBM7c zmpJ=pu!uQaM3Vg*SY%-U#HWc2((FG)K_MRmjh&s0vh2UWBGpj44l>BH{}Tn}!FO=? zD6{_qyYK{D#ERWa3}jBpK8U{#GWfCQh=FQhDOrffMur@a2%`W)57guYwjA~XF;J+Q zz4$V7zSi9K|gGJ6mO%7$4$bJqi zlFCSaFm@%9AuXmG$kmoonU7Y2f0ukUT)lG zw-*QL(t*ZcD8nOmPjOHSBv}b!P9no2b}z8V)O?u86LxQ~$z^9DBB2bg*?q-9DPa+! z^kWYe2gRT}G&B+!KC*{^ZGY$m@p~x4H}+Jph>teJoIR`z93>Eu9WXWA9Iapxb$Cg_ z$I%NG`2`KJPzDi>ey~U{v;;_E4C7c07O{b<*~1#nu^ue)2wG}|GQ@D~0sGys3SxUG zLk`C+u$l~K28Q`DpxN6Tj=NxgsY68=7z#L^iG$Kl&{IaJngWhDU|pW;VIn0QJQARA zW?upmDdP~50L`o&m4S$CWGLqllK`bL%RLagb~2W8NJ@Z0OxX;gCXu0>Ll&&2y$zz~ zAVW2WD%fOk7l@irh6x<15}^E519f32!&DA^u$o?|2m|{J4s)=`)zuJlLK$XqSWAFP zt;`5UhJ)^)x%Jr`_7b3!;8g_^S;FA}cFz_E2C$k$h9w-1U~|IO!PKk)i!d;BS3%Sq zWZ1yr3wBS35=_lu4qvdY$;uEB1@^-n0bmg!RhY;zj!>}3TDY3y98qAAi*S(>90_3e zR4<3vmB?_CBMq$PpbE^K(;OLK5jnW7GaR{Kkxy_nXE}<&B5YqE=7chwb{}7MTs#^^oHTIK=eS zATCT~c*1cOtY#-%&2x@(V3B|g5H+C;FF3A%(?-$^n83yk{Bp2a8CZ;ud*O^9b}N^3<9fBs)nhN;|!7nm6;{yAZijBZ5usLgZls<|1!=7chobIO6$?11a4;8X;Q9D(bq=hOm= zB$&g@Y2h@K0=1~G*+N7Z7&kpks{){PL6gACU>FN4(t{ey^vGCTo`FfjODfQTGq zc*=PN?60S$5ch;Kuy9=ghvBO!5RpU%7OtyO42l8_tkMvXjSOsDkHIEaKy^uQuyH*H zn*$0TkWWJyq_~)+LGG!7yGM$PMS6h%1H+u%3=HLyK`S4xLq+z^M2N70)qFN(gsWi# ziv)-w)QE#csoTDHTD8gn&iz)*;*z2Nvl%iV#Tzi#V@Ah|C9z zd~`;LTmXxtB8ATju!u2I_%O?WLcSjYkvlDVJO2FuA5*rpb`LNjts|7 zuBTuTPzeAMQQ`Q{^$9HE4mF2?gMs_I45(h-{+EH_oHheP2`4)@pDakEhn*2D63W2N zEdmxfsR|R3;8u_Y)u+EtLv$Tvkmc3|i##uas5!`x$*n633e{LQh?*sw#UM2d0u1i| zAtD8w#oQLMpic4|@F)&`_W|afQ#eBHG?r;l%MQrV1x*l*#%Yo`; zpNkNYM23gl9bl30OE8gV++AQ1VYtXk?jEp+(^Z(7_uPG8k*EtWkq_Jxz#^$|HJ`aB zfkoEB)qLTe0v73jtNFz}4J@+pGR&Oc+%v!;$#9W>+_S(Um2mek@XP^=R9u7UV&<6# z7I_W#7dy`au!s=c94?+kV3D=gVY+yDmViYZ;UfGz%fKR%a1kM%6=0E*aN9+AR)Iyj zuE5L@nbQ{igLc;13Vroi1(!Sfz0A_EVfDxQyEk&u(H_^RdkEC(uAzrst=MxMXm{2puq zQNzI40u>R5mYF4-?K~{h8lRg2s7?Wmc|zQ*#TNor^Y0Es*9|T$ zzEH5pk-IPvZN5kaP+c(B10uq}V8&Mt7D+%7sQ~MG4)?nmUj^8%&AVW>JMzs?XkcVu zc;E&xCzQdH@2CPO3}02kL_+w^g3ST#y@0qdgzvHfXq6ynUj{@Zn(vhYC{6{|KukW! z;K=_PERwPsCgK4VVF`hle2^iA|Fr_BmCFO&wGqlt&Hq}VnNfft5wuMfbh9QyH~$+2 zZbkuyW$K_dFR0(t!~a%+jX{7RV?9J9l%bFRy#g1b0DKQ%B11p_R|RH90fr*bQ7B+@ zCiDLRi=;qxsWHstXHf*HNmvQqFv1YZFq@wfERu~R!lMXsk7O0huG#$jU=dp+5n)Bp zGUYm`u7eD7_{9{N6$Kcyq#?R4GA!U11M3Q#4-pAvSimm<7Gb^(6IsPC54Js%1LmG} z{2E{pU(jY@urIdr8-PV>KwE;rB0Kqwz#?DdVCL-RHvx%{~4Iut*==X=5Br-$`TtZV5D{vVsf-pH=;3}F(qQG^q2*TuKft%no zc6c+yrw18Q1#W}YAj~O-ikxDCs0n2#6}Ss_Pu)#MuuvjHxxjriU6oLgb5dX>4519w z0uRAz4#C5@LEt4=Bn6%lS_M9WMaq?7x_ShDf<+K+o+!Ym1j=6sk;wwgU=c*fPZeNQ zLe06;1=zuA5dNAazy}sd0iO#GN>OtJ1i&I|C1AEM7LWjoAatz~P*4KJ#SVD6u|_}% zti~4Zi**93U=h$Be2__@4BG{C!6N6f6=5*L76D7A*3M7o-Q|o^t}OU=as+ zI=n963${I{1{U%U1VX`TQrTg;9tnggwK51WNPELXo(M!Ju`&uUEcbzk=1Tmlu*fRVvB%*2^<5xeiHA{u;V7se2kZJTP@%-aD8L|O z5Ak~_1EXLiSl2^%9%K@%0gD{cT$l|Uu-PpFzu20f4n zqX5GWW{9p(21CJ(XlhIZw}8XBKp3XRTyO_iBoAJHSqbg~+f@uYC>I<))`CaT%&`|d z3RW`}>gGg-V8L5pUtER9PN?8*u$mNAh`$mU!UXRsF)<1-{1=0Wgfc`3K0q@$O7Jn* zoaykgH%9OoSVRe)o|6PWfJIo~ZcZ2c2^J}Zi)0D@0*g$7mn{{79Lk{l#VHT5J&~bG zkV_eq-?^YUE|j50kQ*%W5S}mU1$n``x~{`?wF!!W)hvRmX&01KMvaSpK_#%721|&p ztBjKb)zH*T64U^zxd08rP=+aj+GuK~3F?Avf4v71Ux^Ge1P#EtWbGg(hce6&GytnP zTn|&TNYDt)oMnP0U^OyOpC&S_5HwfjWfWkT2#=lBf)>i4R>2O?g&_=}@$j{RR$vh( zBZ$cd88$*iPC*a%ImoaTDuU3p3o3%pwGS$S&~-@AN*R>nc6UQe4rMqFRkIo1COIK! zr;J+Co)NTDW@ZpzumK$-2+qqF1zo`+&!D~tWw;{fr7XmG1<-!Qq3bFFpwRfYSz|%={$iiOH7guu(X zZ-PO}p!~EGCB435*PBH4F?)47u(M40$yS z41o5!8Sck2GL(U~@iNSM2@zvt2yA9#r~-?9Y=f~9moP9igWYGH!obkQ4sstz zEQ<|v?o84VMuv8<>}5AbhHkLl{ZJnS_Tt4vlPZkfSYnv8>a3RoCP|22jYV3KVUi}AH&ow zcnJ|hb~DJ{`CvCM5oTb3u+ECZSP?QXR)rjlrKSO6#q5Hy8eTF&^~x`Vv8sh(teEF8 zb!#hOEEZdstdR$d_2oQFwsRYVrN|IJm673rAt-(oPeIbSB0Tpf!gG%z11$F_!gG%z zgV#0&hQ;7ir|SaKo8by$&4IEYp#jRZVGR;;j9?vM4K_C+dczt#&%?wF%wb}?{9r85 z2|yq_!Wus6z|?Jk%PxVlEGl6-K-CdMhqg9M?DTdRtHTV&GBSd(+#O&nk7+R0FLxM= zofTrQBE##Iki4qMAhC>rVL906r|Tf43UXL|=!1npUlmM;pb1PJsB8kIAw`DhoiKIU z#*7SWz~((MW@Ok1W zGBWG{`$#Dak~$R`j-G_+C|?6p_YN*L4=$!#0+ZFvhq0Uz7#a40&7*dxfx_w#*yO<$ zRuET#!V1Cyg%yMa3M&W;e^{Mc#J~WmqZAoHwUw?Gs1(?K8WszPlED?4lNA|Yd0LTy zvkn&aj_~-sQwvKaB7HCxD7Ay~KBN=?)xVHZ0F-;e8p;$P`6#Rb)Bu8rfjX}c7N}hS zVRZ|_)S0WnSpUUftSECBD@-58`X&WqG04GK^G)F_4H#>q4U9DpZr*oIn3yNrJMr4j0=6_s8ZLFukCw<{+VQ6fU*^ z&N{CLQ@0e(dJJdng0mcNGlEO5um)*3D;UnwgR>OiF8Bf0YYZ3TfwCa63Tp9$HGs}Y zIts4oyq_{MfLMVIk1ZfIyCK7^GmH$UY8V&{88S~pSd8#?9V5fWH4I=`Mg|`xMuzj? z7Jx@ABf}MN&O@{#+7cKU?tsO%nlLgv1hZQE7#W^{S?v9c46kb#7z7zUE`@{!#C_P( zAE@*RYuI#*0bCA+HRQj7vHajHcQ`8&&T^U$DY?QLlHg){gkWMk9x#?7ob`hVCdP9c z#ySnvp$KkwLUJCc1^N-}^U41i7`}p8pfi*~Ih2tB*5+bF(g9Pa$nXf>F78?e$(M`_ z2~aUZhHtlE?MVp>MuuNtlZ&Jn8KROvVO5t2ku_sD(+sf}5o#=8lW!Y>TFvjzLrMll zhC5LV4FAEVz+8arK7^Z>Ok-eRsRgw=v!5_BfP4vY{T42e*qY4@44e?z7YtCh1k7h- z;Hw3>>hCQGi;)3g2f}1nXkZIJgzLi^(w8wXh}42wjG(=25SA)jY`+Oic9sH+6)y>6 zO@gzEO<`gd%#2X;{)fTDCVhmlTtC5Bm8)UuQXj&^T0LQ6zo){)-mQU&EnNZ=n*}wG zg<)kfB*a-5beR|#Bx^yjkSxT=AO~ih$c40!Ss29bGcqWH#X#k_2AE~Pi-7^c(nw@v z&;^V6r!X>@fm!i6j12Z*)}K~J2A5h;$=@-Pfx#EdYEOXJ%gCUu#sH2FMuzH-kh+4A zL6HyQ0!D`P889&=Xj|TpLFW;~UPFdy`yebu1`caRhM-yo2K1N#`6#U6xc~#$Z($9e zq+l%2xn~er(79(2)?`hX>=#)WYZ6@Si6Knv4Vatn@(&2hjG_4l14B$L1A`fZ+G9p2O90AJWN0d31e?sr zu)!Z6LEJb*)5)y-;c5zrk&00o=#o!oZ)nb6MKK_8QB7VYH>2Ma~Gnkld1&jqc zzXoE;&sQ+>o`%6>Z=QmQy?Y81v-k{Sb^F3t>E$qWbK$HU3y3TW!!0R@EF*)c6C^$u z!TqQe;P_SA!oUDwHBDkD2 z_09ms+Ia{j`y9>!T}T7baYr5|n;-yVz2=9ps-$2nH#nMUVJ)fG%$nYF2TfY<%M~L`kWPpV( zBZFK8Bt0X`BJ%#Ejf@N*z~;fi9yu0ZwYVY!%nn6{taFSEU%~d)&SYfx1!ifuF*5uI zv*Pj~ISM(>WyKg7Sn5D^%A#CG22L=GxRODU;o)MK-woC59x1N&u3r| zsspux9?yfY5a|F>o+8&Iu$0KcFn=opgE)?~!NTydnt?$EEDIVZg|OUeVPYGj7#S47 zvL{3s7_{oJw=%H11(uqy)mF$Z?ed3|Yb*>i=R(>WEDR4CVJtIIMh1Pb3tq=U@>^g- zswHfU7PG~p$Z!nW_CXH6`JWgVOu*sCu^h%a83AMI?uD`LF)%{afzFhM=wN;X6Z-&{ z74wDZxDRI~Jcg;`{tlB}76W5}Vi029tKTp&P+UU9n7+cqD%ZkHd7}mq!ydYr`5ZY+ z5wQ;%p|S*rpXV}020Jh-EDjQqEDWg|85rEaV%wmh%fhhB9Wu(q!jKOan+$JxT!4#Z zYceu;gY|O2%@bMA$PfS)D}amPOF4=Rx3eJrg~S%9pBL8P2HG(Nj;)_=3=E-Q^APPO zL~9A*OVV3LQ$!gUqUt~`qt!AHR$#*-BS>pFu))j_!ct`D_hMj31*iL&;*b(pk-@`` zks+%N)C0mSsRJ7(>O)dzV1tzbgr&&9|C)gzA8g8PU5F`+42-WC7;3<#e0&9AA!3?^ z!P}ORp%Lu!RwKwr4EFdvRRzo4ZnGH~+Q2$6(}p4gW=?^GIHY{h{=~r04-WCmYZ;*| zsdX^c6S&wfxVriKVX_=>mM@$YbO0iY?xQJS_vIg8#91O?b19;3RAT_0R1YeL)EJB# zAf*(}LrGSw^8O-`$$jG1vW_6S>GFXCHvZ0I&E?|~gIwOOBJ*b4!f6c%U1!k#3 z`;v+bn>RBsB-Ml3orrV=O5>oOCJRID6h?-8uq>i{M$|&Yr3gf-gQN{eDYgC+14BtY zs1*dN#UU(EEe>IUQVE0ws>LBJP%RE&fogFG3sj3kSfCUJVS#FK2#e_(%#MKXFqX~( z7)#(YjHPvi5$YBXILoySChN2iCJU0IORFukA78mxUoNj*($1SY5F?Bf~r}3)U(SWpIbqm#hp?lOZm}UI#3L zwo4QlEV3CH7K76ysH|H7W+{AQU|0)gfl?i4#5J(tPZJ{pNEVWYK)Dt&o(K{PYd9Fj z0G17FSk41c7uH}G0})eXP*-DQ*jmp39r1#sKZ{QcV0*(Fewx5opz&vrTf!RN!o}j3 z!esY;gt5S*5a6`C6Eq$HW^rGE$x7dYv9v(r8(>+^c$gUbBN*%MLm2D2C?pKR8kRy? zYz&}v)dxUsW{4GGWB{{}=H5XgsYk&ke|BeNfUwTPS^Cy6F$Y!{D;>@{w~Ya;1Ci=j z7_1r?z;>`OhCPs#vU@_rR1}LjH6}Hwuxe(H#Wn_3+02wO?Y48q%%<6|Ua6o4$5w1thGbhs+ z8Sa78Wecu~*5pu!*@&dBf&1{228;}o`5D2pjEoFCa~TCV7l12(zJjgi3-%sTAG$lwNM9X!U! z;0UUPVAug>&DLRHI0$C#(P3aX1!kSoVPLon zX1&*DV7LQj9n@uDcnW5%(qUkD2WI`zVPNtA`5sVeV&B$O6*0J7#k-?=A zR&qf~z1A6!_zi0St;z?*bXWsu{R@QkXC_1z(Y{h-_{GV{;MoZ3?`yC#GWdd7`=M5`+aBQG&2QBT5h!XhaFZ0*xp^ zSfCLl2n#f#1YvJmYE?Vxa}C$aBVG&wcrkn1sY|7r~};+ z1z~A{&J_T+RF?$9)UAZGw!vBJ;Vj*!kTzym!}jYi7MC1Mul{qGnCoJg*k41K*p%Ba zu}(PaB;2JZ;4FK%-o0>pXTe#E;jBNuU?w~H!B{L$V0M7U$RNHngPXVC8YTMCQQe!IGAjc7lZ|ws|`N#j?M{ zST)~ZEYNrfL77nUNtAoL3)QVqnMvi*drmWOu{*0kBzfMFv>Aj*;Q*UC8``B11T|H=)Sz z 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