1
Fork 0
mirror of https://github.com/thegeneralist01/Scene-Manager-DevRepo synced 2026-01-11 23:50:29 +01:00

Added "Reset Barriers" option to menu

This commit is contained in:
Rich Dunne 2020-08-30 15:33:28 -06:00
parent 5da0176f10
commit 3f5ce3aace

View file

@ -13,12 +13,14 @@ namespace SceneManager
class BarrierMenu class BarrierMenu
{ {
public static UIMenu barrierMenu { get; private set; } public static UIMenu barrierMenu { get; private set; }
public static List<Rage.Object> barriers = new List<Rage.Object>() { }; public static List<Barrier> barriers = new List<Barrier>();
//public static List<Rage.Object> barriers = new List<Rage.Object>() { };
private static UIMenuListScrollerItem<string> barrierList = new UIMenuListScrollerItem<string>("Select Barrier", "", new[] { "Large Striped Cone", "Large Cone", "Medium Striped Cone", "Medium Cone", "Roadpole A", "Roadpole B", "Police Barrier", "Road Barrier", "Flare" }); private static UIMenuListScrollerItem<string> barrierList = new UIMenuListScrollerItem<string>("Select Barrier", "", new[] { "Large Striped Cone", "Large Cone", "Medium Striped Cone", "Medium Cone", "Roadpole A", "Roadpole B", "Police Barrier", "Road Barrier", "Flare" });
private static string[] barrierObjectNames = new string[] { "prop_mp_cone_01", "prop_roadcone01c", "prop_mp_cone_02", "prop_mp_cone_03", "prop_roadpole_01a", "prop_roadpole_01b", "prop_barrier_work05", "prop_barrier_work06a", "prop_flare_01b" }; private static string[] barrierObjectNames = new string[] { "prop_mp_cone_01", "prop_roadcone01c", "prop_mp_cone_02", "prop_mp_cone_03", "prop_roadpole_01a", "prop_roadpole_01b", "prop_barrier_work05", "prop_barrier_work06a", "prop_flare_01b" };
private static UIMenuNumericScrollerItem<int> rotateBarrier = new UIMenuNumericScrollerItem<int>("Rotate Barrier", "Rotate the barrier.", 0, 350, 10); private static UIMenuNumericScrollerItem<int> rotateBarrier = new UIMenuNumericScrollerItem<int>("Rotate Barrier", "", 0, 350, 10);
private static UIMenuListScrollerItem<string> removeBarrierOptions = new UIMenuListScrollerItem<string>("Remove Barrier", "", new[] { "Last Barrier", "Nearest Barrier", "All Barriers" }); private static UIMenuListScrollerItem<string> removeBarrierOptions = new UIMenuListScrollerItem<string>("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");
public static Rage.Object shadowBarrier; public static Rage.Object shadowBarrier;
internal static void InstantiateMenu() internal static void InstantiateMenu()
@ -30,6 +32,10 @@ namespace SceneManager
public static void BuildBarrierMenu() public static void BuildBarrierMenu()
{ {
barrierMenu.AddItem(resetBarriers);
resetBarriers.ForeColor = Color.Gold;
resetBarriers.Enabled = false;
barrierMenu.AddItem(removeBarrierOptions, 0); barrierMenu.AddItem(removeBarrierOptions, 0);
removeBarrierOptions.ForeColor = Color.Gold; removeBarrierOptions.ForeColor = Color.Gold;
removeBarrierOptions.Enabled = false; removeBarrierOptions.Enabled = false;
@ -148,17 +154,27 @@ namespace SceneManager
{ {
RemoveBarrier(); RemoveBarrier();
} }
if(selectedItem == resetBarriers)
{
foreach(Barrier barrier in barriers.Where(b => b.GetBarrier()))
{
barrier.GetBarrier().Position = barrier.GetPosition();
barrier.GetBarrier().Heading = barrier.GetRotation();
}
}
} }
private static void SpawnBarrier() private static void SpawnBarrier()
{ {
var cone = new Rage.Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value); var barrier = new Rage.Object(shadowBarrier.Model, shadowBarrier.Position, rotateBarrier.Value);
cone.SetPositionWithSnap(shadowBarrier.Position); barrier.SetPositionWithSnap(shadowBarrier.Position);
Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(cone, true); Rage.Native.NativeFunction.Natives.SET_DISABLE_FRAG_DAMAGE(barrier, true);
Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(cone, true); Rage.Native.NativeFunction.Natives.SET_DISABLE_BREAKING(barrier, true);
barriers.Add(cone); barriers.Add(new Barrier(barrier, barrier.Position, barrier.Heading));
removeBarrierOptions.Enabled = true; removeBarrierOptions.Enabled = true;
resetBarriers.Enabled = true;
} }
private static void RemoveBarrier() private static void RemoveBarrier()
@ -166,18 +182,18 @@ namespace SceneManager
switch (removeBarrierOptions.Index) switch (removeBarrierOptions.Index)
{ {
case 0: case 0:
barriers[barriers.Count - 1].Delete(); barriers[barriers.Count - 1].GetBarrier().Delete();
barriers.RemoveAt(barriers.Count - 1); barriers.RemoveAt(barriers.Count - 1);
break; break;
case 1: case 1:
barriers = barriers.OrderBy(c => c.DistanceTo(Game.LocalPlayer.Character)).ToList(); barriers = barriers.OrderBy(c => c.DistanceTo(Game.LocalPlayer.Character)).ToList();
barriers[0].Delete(); barriers[0].GetBarrier().Delete();
barriers.RemoveAt(0); barriers.RemoveAt(0);
break; break;
case 2: case 2:
foreach (Rage.Object c in barriers.Where(c => c)) foreach (Barrier b in barriers.Where(b => b.GetBarrier()))
{ {
c.Delete(); b.GetBarrier().Delete();
} }
if (barriers.Count > 0) if (barriers.Count > 0)
{ {
@ -187,6 +203,7 @@ namespace SceneManager
} }
removeBarrierOptions.Enabled = barriers.Count == 0 ? false : true; removeBarrierOptions.Enabled = barriers.Count == 0 ? false : true;
resetBarriers.Enabled = barriers.Count == 0 ? false : true;
} }
private static void SpawnFlare() private static void SpawnFlare()
@ -207,7 +224,7 @@ namespace SceneManager
} }
}); });
barriers.Add(flare); barriers.Add(new Barrier(flare, flare.Position, flare.Heading));
removeBarrierOptions.Enabled = true; removeBarrierOptions.Enabled = true;
} }