Decompiled source of LightControls v1.1.4

BepInEx/plugins/LightControls.dll

Decompiled 6 months ago
using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using TMPro;
using UnityEngine;
using UnityMobCracker.Plugins;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("UnityMobCracker")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("UnityMobCracker")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("ed682d65-6d24-4d50-bde3-77517b2ce593")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
public static class LightControllerDetails
{
	public static bool DoorsLowered = false;

	public static GameObject LightBackwards;

	public static GameObject LightForwards;

	public static GameObject ComponenentForward;

	public static GameObject ComponenentBackwards;

	public static GameObject ValueAdd;

	public static GameObject ValueSubtract;

	public static bool ExecutingLightChange = false;

	public static Gradient gradient;

	public static int CurrentLightIndex = 0;

	public static int AvaliableShipLights = 3;

	public static ShipLight[] LightObjects;

	public static ShipLight[] HighlighedShipObjects;

	public static int globalLightPropertyIndex = 0;

	public static string[] PropertyNames = new string[6] { "Mode", "Intensity", "Speed (Dynamic Only)", "Color - Red (Custom Only)", "Color - Green (Custom Only)", "Color - Blue (Custom Only)" };

	public static string[] ModeNames = new string[3] { "Original", "Custom", "Dynamic" };

	public static Color[] LerpColors = (Color[])(object)new Color[7]
	{
		NewLerpColor(148, 0, 211),
		NewLerpColor(75, 0, 130),
		NewLerpColor(0, 0, 255),
		NewLerpColor(0, 255, 0),
		NewLerpColor(255, 255, 0),
		NewLerpColor(255, 127, 0),
		NewLerpColor(255, 0, 0)
	};

	public static GradientColorKey[] SmoothLights = (GradientColorKey[])(object)new GradientColorKey[7];

	public static bool incIntWait = false;

	public static bool decIntWait = false;

	public static bool incSpeWait = false;

	public static bool decSpeWait = false;

	public static bool toggleLightWait = false;

	public static bool toggleLight2Wait = false;

	public static GameObject PanelCanvas1;

	public static GameObject PanelCanvas2;

	public static int BaseIntensity = 100;

	public static float BaseSpeed = 0.0001f;

	public static int SpeedIndex = 12;

	public static GameObject MAINPanel;

	public static GameObject SECONDPanel;

	public static bool currentMode = true;

	public static ShipLight GlobalLight;

	public static Color NewLerpColor(int r, int g, int b)
	{
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		return new Color((float)(r / 200), (float)(g / 200), (float)(b / 200));
	}

	public static bool GetGameSceneLoaded()
	{
		return (Object)(object)GameObject.Find("OutsideShipRoom") != (Object)null;
	}
}
public class ShipLight
{
	public GameObject[] Objects;

	public int RedValue = 255;

	public int GreenValue = 255;

	public int BlueValue = 255;

	public Color CreatedColor;

	public int ModeID = 0;

	public int LocalPropertyIndex = 0;

	public int SpeedIndex = 1;

	public int IntensityIndex = 4;

	public string name;

	public float LerpWaitIndex;

	public int LerpColorIndex = 0;

	public Color NextColor = new Color(0f, 0f, 0f, 1f);

	public ShipLight(GameObject[] Objects, string Name)
	{
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		this.Objects = Objects;
		name = Name;
	}

	public void UpdateLight()
	{
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		LerpWaitIndex -= (float)SpeedIndex * LightControllerDetails.BaseSpeed;
		if (LerpWaitIndex <= 0f)
		{
			LerpWaitIndex = 1f;
			LerpColorIndex++;
			if (LerpColorIndex >= LightControllerDetails.LerpColors.Length)
			{
				LerpColorIndex = 0;
			}
		}
		NextColor = LightControllerDetails.gradient.Evaluate(LerpWaitIndex);
	}

	public void UpdateCreatedColor(string r = null, string g = null, string b = null)
	{
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		if (r != null)
		{
			RedValue = Convert.ToInt32(r);
		}
		if (g != null)
		{
			GreenValue = Convert.ToInt32(g);
		}
		if (b != null)
		{
			BlueValue = Convert.ToInt32(b);
		}
		CreatedColor = new Color((float)(RedValue / 255), (float)(GreenValue / 255), (float)(BlueValue / 255), 1f);
	}
}
namespace UnityMobCracker
{
	[BepInPlugin("harmless-exploit.lethal", "Simple Game Config", "1.0.0.0")]
	public class MobCrackerBase : BaseUnityPlugin
	{
		private readonly Harmony harmony = new Harmony("harmless-exploit.lethal");

		private static MobCrackerBase Instance;

		internal ManualLogSource mls;

		private void Awake()
		{
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			mls = Logger.CreateLogSource("harmless-exploit.lethal");
			mls.LogInfo((object)"harmless-exploit.lethal ONLINE");
			harmony.PatchAll(typeof(MobCrackerBase));
			harmony.PatchAll(typeof(MainPatch));
		}
	}
}
namespace UnityMobCracker.Plugins
{
	[HarmonyPatch(typeof(PlayerControllerB))]
	internal class MainPatch
	{
		[HarmonyPatch("Update")]
		[HarmonyPostfix]
		private static void updateObject(ref bool ___isInHangarShipRoom, ref bool ___isInsideFactory)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Expected O, but got Unknown
			if (!Object.op_Implicit((Object)(object)GameObject.Find("harmlessExploitHandler")))
			{
				GameObject val = new GameObject("harmlessExploitHandler");
				val.AddComponent<HarmlessHandler>();
			}
		}
	}
	public class HarmlessHandler : MonoBehaviour
	{
		private void Awake()
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			GameObject.Find("AnimatedShipDoor").transform.position = new Vector3(0f, -100f, 0f);
			GameObject.Find("ShipInnerRoomBoundsTrigger").transform.localScale = new Vector3(5000f, 1000f, 5000f);
			((MonoBehaviour)this).StartCoroutine(ExecuteParty.Main());
		}
	}
	public class ExecuteParty
	{
		public static IEnumerator Main()
		{
			while (true)
			{
				CheckForGameLoaded();
				CheckForGameUnloaded();
				GameObject sourceUp = GameObject.Find("HangarDoorButtonPanel");
				if ((Object)(object)GameObject.Find("First Component") == (Object)null && (Object)(object)sourceUp != (Object)null)
				{
					Transform MainParent = GameObject.Find("HangarShip").transform;
					GameObject[] FirstLightObjects = (GameObject[])(object)new GameObject[2]
					{
						GameObject.Find("Area Light (3)"),
						GameObject.Find("Area Light (9)")
					};
					GameObject[] SecondLightObjects = (GameObject[])(object)new GameObject[2]
					{
						GameObject.Find("Area Light (4)"),
						GameObject.Find("Area Light (8)")
					};
					GameObject[] ThirdLightObjects = (GameObject[])(object)new GameObject[2]
					{
						GameObject.Find("Area Light (5)"),
						GameObject.Find("Area Light (7)")
					};
					LightControllerDetails.LightObjects = new ShipLight[4];
					LightControllerDetails.LightObjects[1] = new ShipLight(FirstLightObjects, "Front");
					LightControllerDetails.LightObjects[2] = new ShipLight(SecondLightObjects, "Middle");
					LightControllerDetails.LightObjects[3] = new ShipLight(ThirdLightObjects, "Back");
					LightControllerDetails.LightObjects[0] = new ShipLight(null, "");
					LightControllerDetails.LightObjects[0].UpdateCreatedColor();
					LightControllerDetails.LightObjects[1].UpdateCreatedColor();
					LightControllerDetails.LightObjects[2].UpdateCreatedColor();
					LightControllerDetails.LightObjects[3].UpdateCreatedColor();
					LightControllerDetails.HighlighedShipObjects = LightControllerDetails.LightObjects;
					GameObject Panel1 = Object.Instantiate<GameObject>(sourceUp, MainParent);
					GameObject Panel2 = Object.Instantiate<GameObject>(sourceUp, MainParent);
					GameObject Panel3 = Object.Instantiate<GameObject>(sourceUp, MainParent);
					LightControllerDetails.LightForwards = ((Component)Panel1.transform.Find("StartButton").GetChild(0)).gameObject;
					LightControllerDetails.LightBackwards = ((Component)Panel1.transform.Find("StopButton").GetChild(0)).gameObject;
					LightControllerDetails.ComponenentBackwards = ((Component)Panel2.transform.Find("StopButton").GetChild(0)).gameObject;
					LightControllerDetails.ComponenentForward = ((Component)Panel2.transform.Find("StartButton").GetChild(0)).gameObject;
					LightControllerDetails.ValueAdd = ((Component)Panel3.transform.Find("StartButton").GetChild(0)).gameObject;
					LightControllerDetails.ValueSubtract = ((Component)Panel3.transform.Find("StopButton").GetChild(0)).gameObject;
					GameObject LFparent = new GameObject("ButtonContainer");
					GameObject LBparent = new GameObject("ButtonContainer");
					GameObject CFparent = new GameObject("ButtonContainer");
					GameObject CBparent = new GameObject("ButtonContainer");
					GameObject VAparent = new GameObject("ButtonContainer");
					GameObject VSparent = new GameObject("ButtonContainer");
					LFparent.transform.SetParent(Panel1.transform);
					LBparent.transform.SetParent(Panel1.transform);
					CFparent.transform.SetParent(Panel1.transform);
					CBparent.transform.SetParent(Panel1.transform);
					VAparent.transform.SetParent(Panel1.transform);
					VSparent.transform.SetParent(Panel1.transform);
					LightControllerDetails.LightForwards.transform.parent.SetParent(LFparent.transform);
					LightControllerDetails.LightBackwards.transform.parent.SetParent(LBparent.transform);
					LightControllerDetails.ComponenentBackwards.transform.parent.SetParent(CBparent.transform);
					LightControllerDetails.ComponenentForward.transform.parent.SetParent(CFparent.transform);
					LightControllerDetails.ValueAdd.transform.parent.SetParent(VAparent.transform);
					LightControllerDetails.ValueSubtract.transform.parent.SetParent(VSparent.transform);
					((Object)Panel1).name = "First Component";
					LightControllerDetails.PanelCanvas1 = ((Component)Panel1.transform.Find("ElevatorPanelScreen")).gameObject;
					LightControllerDetails.PanelCanvas2 = ((Component)Panel2.transform.Find("ElevatorPanelScreen")).gameObject;
					Object.Destroy((Object)(object)Panel1.GetComponent<MeshFilter>());
					Object.Destroy((Object)(object)Panel2.GetComponent<MeshFilter>());
					Object.Destroy((Object)(object)Panel3.GetComponent<MeshFilter>());
					Object.Destroy((Object)(object)((Component)Panel3.transform.Find("ElevatorPanelScreen")).gameObject);
					Object.Destroy((Object)(object)((Component)Panel1.transform.Find("ButtonLights")).gameObject);
					Object.Destroy((Object)(object)((Component)Panel2.transform.Find("ButtonLights")).gameObject);
					Object.Destroy((Object)(object)((Component)Panel3.transform.Find("ButtonLights")).gameObject);
					Object.Destroy((Object)(object)((Component)Panel2.transform.Find("ScanNode (2)")).gameObject);
					Object.Destroy((Object)(object)((Component)Panel3.transform.Find("ScanNode (2)")).gameObject);
					Object.Destroy((Object)(object)((Component)LightControllerDetails.PanelCanvas1.transform.GetChild(0).GetChild(1)).gameObject);
					LightControllerDetails.LightBackwards.GetComponent<InteractTrigger>().holdInteraction = true;
					LightControllerDetails.ComponenentBackwards.GetComponent<InteractTrigger>().holdInteraction = true;
					LightControllerDetails.ComponenentForward.GetComponent<InteractTrigger>().holdInteraction = true;
					LightControllerDetails.LightForwards.GetComponent<InteractTrigger>().holdInteraction = true;
					LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().holdInteraction = true;
					LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().holdInteraction = true;
					LightControllerDetails.LightBackwards.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
					LightControllerDetails.ComponenentBackwards.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
					LightControllerDetails.ComponenentForward.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
					LightControllerDetails.LightForwards.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
					LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
					LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
					LightControllerDetails.LightForwards.GetComponent<InteractTrigger>().cooldownTime = 0.25f;
					LightControllerDetails.LightBackwards.GetComponent<InteractTrigger>().cooldownTime = 0.25f;
					LightControllerDetails.ComponenentBackwards.GetComponent<InteractTrigger>().cooldownTime = 0.25f;
					LightControllerDetails.ComponenentForward.GetComponent<InteractTrigger>().cooldownTime = 0.25f;
					LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
					LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
					LightControllerDetails.LightBackwards.GetComponent<InteractTrigger>().hoverTip = "Previous : [LMB]";
					LightControllerDetails.LightForwards.GetComponent<InteractTrigger>().hoverTip = "Next : [LMB]";
					LightControllerDetails.ComponenentBackwards.GetComponent<InteractTrigger>().hoverTip = "Previous : [LMB]";
					LightControllerDetails.ComponenentForward.GetComponent<InteractTrigger>().hoverTip = "Next : [LMB]";
					LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().hoverTip = "Add : [LMB]";
					LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().hoverTip = "Subtract : [LMB]";
					ScanNodeProperties scanProp1 = ((Component)Panel1.transform.Find("ScanNode (2)")).gameObject.GetComponent<ScanNodeProperties>();
					scanProp1.headerText = "Light Controls";
					scanProp1.nodeType = 1;
					scanProp1.subText = "Don't use on the job!";
					GameObject LightSwitch = GameObject.Find("LightSwitchContainer");
					GameObject LightSwitchScanNode = Object.Instantiate<GameObject>(((Component)Panel1.transform.Find("ScanNode (2)")).gameObject, LightSwitch.transform);
					ScanNodeProperties scanSwitch = LightSwitchScanNode.GetComponent<ScanNodeProperties>();
					scanSwitch.headerText = "Light Switch";
					scanSwitch.nodeType = 0;
					scanSwitch.subText = "Why would you turn this off?";
					LightSwitchScanNode.transform.localPosition = new Vector3(0f, 0f, 0f);
					LFparent.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
					LBparent.transform.localEulerAngles = new Vector3(0f, 180f, 0f);
					CFparent.transform.localEulerAngles = new Vector3(0f, 180f, 180f);
					CBparent.transform.localEulerAngles = new Vector3(0f, 180f, 180f);
					VAparent.transform.localEulerAngles = new Vector3(0f, 180f, 180f);
					VSparent.transform.localEulerAngles = new Vector3(0f, 180f, 180f);
					LightControllerDetails.LightForwards.transform.parent.localEulerAngles = new Vector3(180f, 0f, 0f);
					LightControllerDetails.LightBackwards.transform.parent.localEulerAngles = new Vector3(180f, 0f, 0f);
					LightControllerDetails.ComponenentForward.transform.parent.localEulerAngles = new Vector3(180f, 0f, 0f);
					LightControllerDetails.ComponenentBackwards.transform.parent.localEulerAngles = new Vector3(180f, 0f, 0f);
					LightControllerDetails.ValueAdd.transform.parent.localEulerAngles = new Vector3(180f, 0f, 0f);
					LightControllerDetails.ValueSubtract.transform.parent.localEulerAngles = new Vector3(180f, 0f, 0f);
					LightControllerDetails.LightForwards.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
					LightControllerDetails.LightBackwards.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
					LightControllerDetails.ComponenentForward.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
					LightControllerDetails.ComponenentBackwards.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
					LightControllerDetails.ValueAdd.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
					LightControllerDetails.ValueSubtract.transform.localScale = new Vector3(0.11f, 0.11f, 0.11f);
					Panel1.transform.rotation = Quaternion.Euler(new Vector3(90f, 90f, 90f));
					((Component)Panel1.transform.Find("Audio")).transform.position = new Vector3(2.5507f, 2.9481f, -11.75f);
					((Component)Panel2.transform.Find("Audio")).transform.position = new Vector3(2.5507f, 2.9481f, -11.75f);
					((Component)Panel3.transform.Find("Audio")).transform.position = new Vector3(2.5507f, 2.9481f, -11.75f);
					LightControllerDetails.PanelCanvas1.transform.localEulerAngles = new Vector3(90f, 0f, 0f);
					LightControllerDetails.PanelCanvas1.transform.position = new Vector3(2.25f, 2.7878f, -11.7294f);
					LightControllerDetails.PanelCanvas1.transform.localScale = new Vector3(0.0005f, 0.0003f, 0.0006f);
					LightControllerDetails.PanelCanvas2.transform.localEulerAngles = new Vector3(270f, 0f, 0f);
					LightControllerDetails.PanelCanvas2.transform.position = new Vector3(2.25f, 2.5751f, -11.7294f);
					LightControllerDetails.PanelCanvas2.transform.localScale = new Vector3(-0.0006f, -0.0005f, -0.0005f);
					LFparent.transform.position = new Vector3(2.4016f, 2.9481f, -11.75f);
					LBparent.transform.position = new Vector3(1.8109f, 2.6454f, -11.75f);
					CFparent.transform.position = new Vector3(2.4326f, 2.6209f, -11.75f);
					CBparent.transform.position = new Vector3(1.8654f, 2.819f, -11.7501f);
					VAparent.transform.position = new Vector3(2.4326f, 2.4316f, -11.75f);
					VSparent.transform.position = new Vector3(1.8654f, 2.6572f, -11.7501f);
					LFparent.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
					LBparent.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
					sourceUp.transform.position = new Vector3(-4.2485f, 2.1882f, -16.323f);
					LightControllerDetails.gradient = new Gradient();
					LightControllerDetails.SmoothLights[0] = new GradientColorKey(LightControllerDetails.LerpColors[0], 0.14f);
					LightControllerDetails.SmoothLights[1] = new GradientColorKey(LightControllerDetails.LerpColors[1], 0.28f);
					LightControllerDetails.SmoothLights[2] = new GradientColorKey(LightControllerDetails.LerpColors[2], 0.42f);
					LightControllerDetails.SmoothLights[3] = new GradientColorKey(LightControllerDetails.LerpColors[3], 0.56f);
					LightControllerDetails.SmoothLights[4] = new GradientColorKey(LightControllerDetails.LerpColors[4], 0.7f);
					LightControllerDetails.SmoothLights[5] = new GradientColorKey(LightControllerDetails.LerpColors[5], 0.84f);
					LightControllerDetails.SmoothLights[6] = new GradientColorKey(LightControllerDetails.LerpColors[6], 1f);
					GradientAlphaKey[] alphas = (GradientAlphaKey[])(object)new GradientAlphaKey[2]
					{
						new GradientAlphaKey(1f, 0f),
						new GradientAlphaKey(1f, 1f)
					};
					LightControllerDetails.gradient.SetKeys(LightControllerDetails.SmoothLights, alphas);
					Panel1.transform.Find("ScanNode (2)").position = new Vector3(2.3161f, 2.6208f, -11.75f);
					UpdateSelectedLight(add: false, edit: false);
				}
				InteractTrigger LightBackwardsComp = LightControllerDetails.LightBackwards.GetComponent<InteractTrigger>();
				InteractTrigger LightForwardsComp = LightControllerDetails.LightForwards.GetComponent<InteractTrigger>();
				InteractTrigger ComponenentBackwardsComp = LightControllerDetails.ComponenentBackwards.GetComponent<InteractTrigger>();
				InteractTrigger ComponenentForwardComp = LightControllerDetails.ComponenentForward.GetComponent<InteractTrigger>();
				InteractTrigger ValueAddComp = LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>();
				InteractTrigger ValueSubtractComp = LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>();
				if (LightBackwardsComp.isBeingHeldByPlayer && !LightControllerDetails.incIntWait)
				{
					LightControllerDetails.incIntWait = true;
				}
				else if (ComponenentBackwardsComp.isBeingHeldByPlayer && !LightControllerDetails.decIntWait)
				{
					LightControllerDetails.decIntWait = true;
				}
				else if (ComponenentForwardComp.isBeingHeldByPlayer && !LightControllerDetails.incSpeWait)
				{
					LightControllerDetails.incSpeWait = true;
				}
				else if (LightForwardsComp.isBeingHeldByPlayer && !LightControllerDetails.decSpeWait)
				{
					LightControllerDetails.decSpeWait = true;
				}
				else if (ValueAddComp.isBeingHeldByPlayer && !LightControllerDetails.toggleLightWait)
				{
					LightControllerDetails.toggleLightWait = true;
				}
				else if (ValueSubtractComp.isBeingHeldByPlayer && !LightControllerDetails.toggleLight2Wait)
				{
					LightControllerDetails.toggleLight2Wait = true;
				}
				if (!ValueAddComp.isBeingHeldByPlayer && LightControllerDetails.toggleLightWait)
				{
					LightControllerDetails.toggleLightWait = false;
					ChangeValue(LightControllerDetails.HighlighedShipObjects, add: true);
				}
				else if (!ValueSubtractComp.isBeingHeldByPlayer && LightControllerDetails.toggleLight2Wait)
				{
					LightControllerDetails.toggleLight2Wait = false;
					ChangeValue(LightControllerDetails.HighlighedShipObjects, add: false);
				}
				else if (!ComponenentBackwardsComp.isBeingHeldByPlayer && LightControllerDetails.decIntWait)
				{
					LightControllerDetails.decIntWait = false;
					ChangeConfig(LightControllerDetails.HighlighedShipObjects, positive: false);
				}
				else if (!ComponenentForwardComp.isBeingHeldByPlayer && LightControllerDetails.incSpeWait)
				{
					LightControllerDetails.incSpeWait = false;
					ChangeConfig(LightControllerDetails.HighlighedShipObjects, positive: true);
				}
				else if (!LightBackwardsComp.isBeingHeldByPlayer && LightControllerDetails.incIntWait)
				{
					LightControllerDetails.incIntWait = false;
					UpdateSelectedLight(add: false, edit: true);
				}
				else if (!LightForwardsComp.isBeingHeldByPlayer && LightControllerDetails.decSpeWait)
				{
					LightControllerDetails.decSpeWait = false;
					UpdateSelectedLight(add: true, edit: true);
				}
				for (int i = 0; i < LightControllerDetails.LightObjects.Length; i++)
				{
					if (i == 0)
					{
						continue;
					}
					LightControllerDetails.LightObjects[i].UpdateLight();
					for (int b = 0; b < LightControllerDetails.LightObjects[i].Objects.Length; b++)
					{
						Light LightObj = LightControllerDetails.LightObjects[i].Objects[b].GetComponent<Light>();
						LightObj.intensity = LightControllerDetails.LightObjects[i].IntensityIndex * LightControllerDetails.BaseIntensity;
						if (LightControllerDetails.LightObjects[i].ModeID == 0)
						{
							LightObj.color = new Color(1f, 1f, 1f, 1f);
						}
						if (LightControllerDetails.LightObjects[i].ModeID == 1)
						{
							LightObj.color = new Color((float)(LightControllerDetails.LightObjects[i].RedValue / 255), (float)(LightControllerDetails.LightObjects[i].GreenValue / 255), (float)(LightControllerDetails.LightObjects[i].BlueValue / 255), 1f);
						}
						if (LightControllerDetails.LightObjects[i].ModeID == 2)
						{
							LightObj.color = Color.Lerp(LightObj.color, LightControllerDetails.LightObjects[i].NextColor, Time.deltaTime * (float)(15 / LightControllerDetails.SpeedIndex));
						}
					}
				}
				yield return (object)new WaitForSeconds(0.01f);
			}
			static void ChangeConfig(ShipLight[] selectedLights, bool positive)
			{
				//IL_031b: Unknown result type (might be due to invalid IL or missing references)
				//IL_037b: Unknown result type (might be due to invalid IL or missing references)
				if (!LightControllerDetails.ExecutingLightChange)
				{
					LightControllerDetails.ExecutingLightChange = true;
					int num;
					if (selectedLights.Length > 1)
					{
						LightControllerDetails.globalLightPropertyIndex += (positive ? 1 : (-1));
						if (LightControllerDetails.globalLightPropertyIndex >= LightControllerDetails.PropertyNames.Length)
						{
							LightControllerDetails.globalLightPropertyIndex = 0;
						}
						if (LightControllerDetails.globalLightPropertyIndex < 0)
						{
							LightControllerDetails.globalLightPropertyIndex = LightControllerDetails.PropertyNames.Length - 1;
						}
						num = LightControllerDetails.globalLightPropertyIndex;
					}
					else
					{
						selectedLights[0].LocalPropertyIndex += (positive ? 1 : (-1));
						if (selectedLights[0].LocalPropertyIndex >= LightControllerDetails.PropertyNames.Length)
						{
							selectedLights[0].LocalPropertyIndex = 0;
						}
						if (selectedLights[0].LocalPropertyIndex < 0)
						{
							selectedLights[0].LocalPropertyIndex = selectedLights[0].LocalPropertyIndex - 1;
						}
						num = selectedLights[0].LocalPropertyIndex;
					}
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).text = "Change " + LightControllerDetails.PropertyNames[num];
					switch (num)
					{
					case 0:
					{
						int modeID = selectedLights[0].ModeID;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = LightControllerDetails.ModeNames[modeID];
						break;
					}
					case 1:
					{
						int intensityIndex = selectedLights[0].IntensityIndex;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = intensityIndex.ToString();
						break;
					}
					case 2:
					{
						int speedIndex = selectedLights[0].SpeedIndex;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = speedIndex.ToString();
						break;
					}
					case 3:
					{
						int redValue = selectedLights[0].RedValue;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = redValue + " / 255";
						selectedLights[0].UpdateCreatedColor();
						break;
					}
					case 4:
					{
						int greenValue = selectedLights[0].GreenValue;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = greenValue + " / 255";
						selectedLights[0].UpdateCreatedColor();
						break;
					}
					case 5:
					{
						int blueValue = selectedLights[0].BlueValue;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = blueValue + " / 255";
						selectedLights[0].UpdateCreatedColor();
						break;
					}
					}
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).fontSize = 20f;
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).margin = new Vector4(0f, -10f, -5f, 0f);
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)258;
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).margin = new Vector4(0f, 0f, -5f, 0f);
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514;
					LightControllerDetails.ExecutingLightChange = false;
				}
			}
			static void ChangeValue(ShipLight[] selectedLights, bool add)
			{
				if (!LightControllerDetails.ExecutingLightChange)
				{
					LightControllerDetails.ExecutingLightChange = true;
					int num2 = selectedLights[0].LocalPropertyIndex;
					if (selectedLights.Length > 1)
					{
						num2 = LightControllerDetails.globalLightPropertyIndex;
					}
					switch (num2)
					{
					case 0:
					{
						selectedLights[0].ModeID = selectedLights[0].ModeID + (add ? 1 : (-1));
						if (selectedLights[0].ModeID >= LightControllerDetails.ModeNames.Length)
						{
							selectedLights[0].ModeID = 0;
						}
						if (selectedLights[0].ModeID < 0)
						{
							selectedLights[0].ModeID = LightControllerDetails.ModeNames.Length - 1;
						}
						for (int l = 0; l < selectedLights.Length; l++)
						{
							selectedLights[l].ModeID = selectedLights[0].ModeID;
						}
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.25f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.25f;
						int modeID2 = selectedLights[0].ModeID;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = LightControllerDetails.ModeNames[modeID2];
						break;
					}
					case 1:
					{
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						selectedLights[0].IntensityIndex = Mathf.Max(0, selectedLights[0].IntensityIndex + (add ? 1 : (-1)));
						int intensityIndex2 = selectedLights[0].IntensityIndex;
						for (int n = 0; n < selectedLights.Length; n++)
						{
							selectedLights[n].IntensityIndex = selectedLights[0].IntensityIndex;
						}
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = intensityIndex2.ToString();
						break;
					}
					case 2:
					{
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 5f;
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						selectedLights[0].SpeedIndex = Mathf.Max(0, selectedLights[0].SpeedIndex + (add ? 1 : (-1)));
						int speedIndex2 = selectedLights[0].SpeedIndex;
						for (int num3 = 0; num3 < selectedLights.Length; num3++)
						{
							selectedLights[num3].SpeedIndex = selectedLights[0].SpeedIndex;
						}
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = speedIndex2.ToString();
						break;
					}
					case 3:
					{
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 7f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 7f;
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						selectedLights[0].RedValue = Mathf.Clamp(selectedLights[0].RedValue + (add ? 5 : (-5)), 0, 255);
						int redValue2 = selectedLights[0].RedValue;
						for (int k = 0; k < selectedLights.Length; k++)
						{
							selectedLights[k].RedValue = selectedLights[0].RedValue;
						}
						selectedLights[0].UpdateCreatedColor();
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = redValue2 + " / 255";
						break;
					}
					case 4:
					{
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 7f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 7f;
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						selectedLights[0].GreenValue = Mathf.Clamp(selectedLights[0].GreenValue + (add ? 5 : (-5)), 0, 255);
						int greenValue2 = selectedLights[0].GreenValue;
						for (int m = 0; m < selectedLights.Length; m++)
						{
							selectedLights[m].GreenValue = selectedLights[0].GreenValue;
						}
						selectedLights[0].UpdateCreatedColor();
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = greenValue2 + " / 255";
						break;
					}
					case 5:
					{
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 7f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().timeToHoldSpeedMultiplier = 7f;
						LightControllerDetails.ValueAdd.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						LightControllerDetails.ValueSubtract.GetComponent<InteractTrigger>().cooldownTime = 0.1f;
						selectedLights[0].BlueValue = Mathf.Clamp(selectedLights[0].BlueValue + (add ? 5 : (-5)), 0, 255);
						int blueValue2 = selectedLights[0].BlueValue;
						for (int j = 0; j < selectedLights.Length; j++)
						{
							selectedLights[j].BlueValue = selectedLights[0].BlueValue;
						}
						selectedLights[0].UpdateCreatedColor();
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = blueValue2 + " / 255";
						break;
					}
					}
					LightControllerDetails.ExecutingLightChange = false;
				}
			}
			static void CheckForGameLoaded()
			{
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				if (LightControllerDetails.GetGameSceneLoaded() && !LightControllerDetails.DoorsLowered)
				{
					LightControllerDetails.DoorsLowered = true;
					GameObject.Find("AnimatedShipDoor").transform.localPosition = new Vector3(0.2533f, 0.2784f, -0.0709f);
					GameObject.Find("HangarDoorButtonPanel").transform.position = new Vector3(-4.2485f, 2.1882f, -16.323f);
				}
			}
			static void CheckForGameUnloaded()
			{
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: Unknown result type (might be due to invalid IL or missing references)
				if (!LightControllerDetails.GetGameSceneLoaded() && LightControllerDetails.DoorsLowered)
				{
					LightControllerDetails.DoorsLowered = false;
					GameObject.Find("AnimatedShipDoor").transform.position = new Vector3(0f, -100f, 0f);
					GameObject.Find("HangarDoorButtonPanel").transform.position = new Vector3(-4.2485f, 2.1882f, -16.323f);
				}
			}
			static void UpdateSelectedLight(bool add, bool edit)
			{
				//IL_019a: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_022a: Unknown result type (might be due to invalid IL or missing references)
				//IL_04b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0515: Unknown result type (might be due to invalid IL or missing references)
				if (!LightControllerDetails.ExecutingLightChange)
				{
					LightControllerDetails.ExecutingLightChange = true;
					if (edit)
					{
						LightControllerDetails.CurrentLightIndex += (add ? 1 : (-1));
						if (LightControllerDetails.CurrentLightIndex > LightControllerDetails.AvaliableShipLights)
						{
							LightControllerDetails.CurrentLightIndex = 0;
						}
						if (LightControllerDetails.CurrentLightIndex < 0)
						{
							LightControllerDetails.CurrentLightIndex = LightControllerDetails.AvaliableShipLights;
						}
						switch (LightControllerDetails.CurrentLightIndex)
						{
						case 0:
							LightControllerDetails.HighlighedShipObjects = LightControllerDetails.LightObjects;
							break;
						case 1:
							LightControllerDetails.HighlighedShipObjects = new ShipLight[1] { LightControllerDetails.LightObjects[1] };
							break;
						case 2:
							LightControllerDetails.HighlighedShipObjects = new ShipLight[1] { LightControllerDetails.LightObjects[2] };
							break;
						case 3:
							LightControllerDetails.HighlighedShipObjects = new ShipLight[1] { LightControllerDetails.LightObjects[3] };
							break;
						}
					}
					ShipLight[] highlighedShipObjects = LightControllerDetails.HighlighedShipObjects;
					string text = highlighedShipObjects[0].name + " Light";
					int num4 = highlighedShipObjects[0].LocalPropertyIndex;
					if (highlighedShipObjects.Length > 1)
					{
						text = "All Lights";
						num4 = LightControllerDetails.globalLightPropertyIndex;
					}
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas1.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).text = "Editing " + text;
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas1.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).fontSize = 20f;
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas1.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).margin = new Vector4(0f, 0f, -5f, 0f);
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas1.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514;
					((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).transform.localScale = new Vector3(-2.2695f, 3.9225f, 1f);
					((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).transform.localScale = new Vector3(-2.7349f, 2.737f, 1f);
					if (num4 >= LightControllerDetails.PropertyNames.Length)
					{
						num4 = 0;
						highlighedShipObjects[0].LocalPropertyIndex = 0;
					}
					if (num4 < 0)
					{
						num4 = LightControllerDetails.PropertyNames.Length - 1;
						highlighedShipObjects[0].LocalPropertyIndex = LightControllerDetails.PropertyNames.Length - 1;
					}
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).text = "Change " + LightControllerDetails.PropertyNames[num4];
					switch (num4)
					{
					case 0:
					{
						int modeID3 = highlighedShipObjects[0].ModeID;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = LightControllerDetails.ModeNames[modeID3];
						break;
					}
					case 1:
					{
						int intensityIndex3 = highlighedShipObjects[0].IntensityIndex;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = intensityIndex3.ToString();
						break;
					}
					case 2:
					{
						int speedIndex3 = highlighedShipObjects[0].SpeedIndex;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = speedIndex3.ToString();
						break;
					}
					case 3:
					{
						int redValue3 = highlighedShipObjects[0].RedValue;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = redValue3 + " / 255";
						highlighedShipObjects[0].UpdateCreatedColor();
						break;
					}
					case 4:
					{
						int greenValue3 = highlighedShipObjects[0].GreenValue;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = greenValue3 + " / 255";
						highlighedShipObjects[0].UpdateCreatedColor();
						break;
					}
					case 5:
					{
						int blueValue3 = highlighedShipObjects[0].BlueValue;
						((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).text = blueValue3 + " / 255";
						highlighedShipObjects[0].UpdateCreatedColor();
						break;
					}
					}
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).fontSize = 20f;
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).margin = new Vector4(0f, -10f, -5f, 0f);
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(0)).GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)258;
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).margin = new Vector4(0f, 0f, -5f, 0f);
					((TMP_Text)((Component)LightControllerDetails.PanelCanvas2.transform.GetChild(0).GetChild(1)).GetComponent<TextMeshProUGUI>()).alignment = (TextAlignmentOptions)514;
					LightControllerDetails.ExecutingLightChange = false;
				}
			}
		}
	}
}