Decompiled source of DSPCruiseAssist v0.1.4

DSPCruiseAssist.dll

Decompiled 4 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("CruiseAssist")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CruiseAssist")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("9cdb5e0f-fb97-46ff-a4fb-a9a400443fd3")]
[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")]
namespace tanu.CruiseAssist;

internal abstract class ConfigManager
{
	public enum Step
	{
		AWAKE,
		GAME_MAIN_BEGIN,
		UNIVERSE_GEN_CREATE_GALAXY,
		STATE,
		CHANGE_SEED
	}

	private static ConfigManager instance;

	private static Dictionary<ConfigDefinition, string> orphanedEntries;

	public static ConfigFile Config { get; private set; }

	protected ConfigManager(ConfigFile config)
	{
		instance = this;
		Config = config;
		Config.SaveOnConfigSet = false;
	}

	public static void CheckConfig(Step step)
	{
		instance.CheckConfigImplements(step);
	}

	protected abstract void CheckConfigImplements(Step step);

	public static ConfigEntry<T> Bind<T>(ConfigDefinition configDefinition, T defaultValue, ConfigDescription configDescription = null)
	{
		return Config.Bind<T>(configDefinition, defaultValue, configDescription);
	}

	public static ConfigEntry<T> Bind<T>(string section, string key, T defaultValue, ConfigDescription configDescription = null)
	{
		return Config.Bind<T>(section, key, defaultValue, configDescription);
	}

	public static ConfigEntry<T> Bind<T>(string section, string key, T defaultValue, string description)
	{
		return Config.Bind<T>(section, key, defaultValue, description);
	}

	public static ConfigEntry<T> GetEntry<T>(ConfigDefinition configDefinition)
	{
		try
		{
			return (ConfigEntry<T>)(object)Config[configDefinition];
		}
		catch (KeyNotFoundException ex)
		{
			LogManager.LogError($"{ex.GetType()}: configDefinition={configDefinition}");
			throw;
		}
	}

	public static ConfigEntry<T> GetEntry<T>(string section, string key)
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Expected O, but got Unknown
		return GetEntry<T>(new ConfigDefinition(section, key));
	}

	public static T GetValue<T>(ConfigDefinition configDefinition)
	{
		return GetEntry<T>(configDefinition).Value;
	}

	public static T GetValue<T>(string section, string key)
	{
		return GetEntry<T>(section, key).Value;
	}

	public static bool ContainsKey(ConfigDefinition configDefinition)
	{
		return Config.ContainsKey(configDefinition);
	}

	public static bool ContainsKey(string section, string key)
	{
		//IL_0008: Unknown result type (might be due to invalid IL or missing references)
		//IL_0012: Expected O, but got Unknown
		return Config.ContainsKey(new ConfigDefinition(section, key));
	}

	public static bool UpdateEntry<T>(string section, string key, T value) where T : IComparable
	{
		ConfigEntry<T> entry = GetEntry<T>(section, key);
		if (entry.Value.CompareTo(value) == 0)
		{
			return false;
		}
		entry.Value = value;
		return true;
	}

	public static bool RemoveEntry(ConfigDefinition key)
	{
		return Config.Remove(key);
	}

	public static Dictionary<ConfigDefinition, string> GetOrphanedEntries()
	{
		if (orphanedEntries == null)
		{
			orphanedEntries = Traverse.Create((object)Config).Property<Dictionary<ConfigDefinition, string>>("OrphanedEntries", (object[])null).Value;
		}
		return orphanedEntries;
	}

	public static void Migration<T>(string newSection, string newKey, T defaultValue, string oldSection, string oldKey)
	{
		//IL_000a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0010: Expected O, but got Unknown
		GetOrphanedEntries();
		ConfigDefinition key = new ConfigDefinition(oldSection, oldKey);
		if (orphanedEntries.TryGetValue(key, out var value))
		{
			((ConfigEntryBase)Bind(newSection, newKey, defaultValue)).SetSerializedValue(value);
			orphanedEntries.Remove(key);
			LogManager.LogInfo("migration " + oldSection + "." + oldKey + "(" + value + ") => " + newSection + "." + newKey);
		}
	}

	public static void Save(bool clearOrphanedEntries = false)
	{
		if (clearOrphanedEntries)
		{
			GetOrphanedEntries().Clear();
		}
		Config.Save();
		LogManager.LogInfo("save config.");
	}

	public static void Clear()
	{
		Config.Clear();
	}

	public static void Reload()
	{
		Config.Reload();
	}
}
internal class CruiseAssistConfigManager : ConfigManager
{
	public CruiseAssistConfigManager(ConfigFile Config)
		: base(Config)
	{
	}

	protected override void CheckConfigImplements(Step step)
	{
		bool flag = false;
		if (step == Step.AWAKE)
		{
			ConfigEntry<string> val = ConfigManager.Bind("Base", "ModVersion", "0.1.37", "Don't change.");
			val.Value = "0.0.37";
			ConfigManager.Migration("State", "MainWindow0Left", 100, "State", "InfoWindowLeft");
			ConfigManager.Migration("State", "MainWindow0Top", 100, "State", "InfoWindowTop");
			ConfigManager.Migration("State", "MainWindow0Left", 100, "State", "MainWindowLeft");
			ConfigManager.Migration("State", "MainWindow0Top", 100, "State", "MainWindowTop");
			ConfigManager.Migration("State", "StarListWindow0Left", 100, "State", "StarListWindowLeft");
			ConfigManager.Migration("State", "StarListWindow0Top", 100, "State", "StarListWindowTop");
			ConfigManager.Migration("Setting", "CloseStarListWhenSetTargetPlanet", defaultValue: false, "Setting", "HideStarListWhenSetTargetPlanet");
			flag = true;
		}
		if (step == Step.AWAKE || step == Step.GAME_MAIN_BEGIN)
		{
			CruiseAssistDebugUI.Show = ConfigManager.Bind("Debug", "DebugWindowShow", defaultValue: false).Value;
			CruiseAssistPlugin.Enable = ConfigManager.Bind("Setting", "Enable", defaultValue: true).Value;
			CruiseAssistPlugin.Conf.MarkVisitedFlag = ConfigManager.Bind("Setting", "MarkVisited", defaultValue: true).Value;
			CruiseAssistPlugin.Conf.SelectFocusFlag = ConfigManager.Bind("Setting", "SelectFocus", defaultValue: true).Value;
			CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag = ConfigManager.Bind("Setting", "HideDuplicateHistory", defaultValue: true).Value;
			CruiseAssistPlugin.Conf.AutoDisableLockCursorFlag = ConfigManager.Bind("Setting", "AutoDisableLockCursor", defaultValue: false).Value;
			CruiseAssistPlugin.Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag = ConfigManager.Bind("Setting", "ShowMainWindowWhenTargetSelectedEvenNotSailMode", defaultValue: true).Value;
			CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag = ConfigManager.Bind("Setting", "CloseStarListWhenSetTargetPlanet", defaultValue: false).Value;
			CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag = ConfigManager.Bind("Setting", "HideBottomCloseButton", defaultValue: true).Value;
			CruiseAssistMainUI.Scale = ConfigManager.Bind("Setting", "UIScale", 150).Value;
			string value = ConfigManager.Bind("Setting", "MainWindowViewMode", CruiseAssistMainUIViewMode.FULL.ToString()).Value;
			EnumUtils.TryParse<CruiseAssistMainUIViewMode>(value, out CruiseAssistMainUI.ViewMode);
			for (int i = 0; i < 2; i++)
			{
				((Rect)(ref CruiseAssistMainUI.Rect[i])).x = ConfigManager.Bind("State", $"MainWindow{i}Left", 100).Value;
				((Rect)(ref CruiseAssistMainUI.Rect[i])).y = ConfigManager.Bind("State", $"MainWindow{i}Top", 100).Value;
				((Rect)(ref CruiseAssistStarListUI.Rect[i])).x = ConfigManager.Bind("State", $"StarListWindow{i}Left", 100).Value;
				((Rect)(ref CruiseAssistStarListUI.Rect[i])).y = ConfigManager.Bind("State", $"StarListWindow{i}Top", 100).Value;
				((Rect)(ref CruiseAssistConfigUI.Rect[i])).x = ConfigManager.Bind("State", $"ConfigWindow{i}Left", 100).Value;
				((Rect)(ref CruiseAssistConfigUI.Rect[i])).y = ConfigManager.Bind("State", $"ConfigWindow{i}Top", 100).Value;
			}
			CruiseAssistStarListUI.ListSelected = ConfigManager.Bind("State", "StarListWindowListSelected", 0).Value;
			((Rect)(ref CruiseAssistDebugUI.Rect)).x = ConfigManager.Bind("State", "DebugWindowLeft", 100).Value;
			((Rect)(ref CruiseAssistDebugUI.Rect)).y = ConfigManager.Bind("State", "DebugWindowTop", 100).Value;
		}
		if (step == Step.AWAKE || step == Step.GAME_MAIN_BEGIN || step == Step.STATE || step == Step.CHANGE_SEED)
		{
			if (DSPGame.IsMenuDemo || GameMain.galaxy == null)
			{
				if (CruiseAssistPlugin.Seed != -1)
				{
					CruiseAssistPlugin.Seed = -1;
					CruiseAssistPlugin.History = new List<int>();
					CruiseAssistPlugin.Bookmark = new List<int>();
					LogManager.LogInfo("clear seed.");
				}
			}
			else if (CruiseAssistPlugin.Seed != GameMain.galaxy.seed)
			{
				CruiseAssistPlugin.Seed = GameMain.galaxy.seed;
				CruiseAssistPlugin.History = ListUtils.ParseToIntList(ConfigManager.Bind("Save", $"History_{CruiseAssistPlugin.Seed}", "").Value);
				CruiseAssistPlugin.Bookmark = ListUtils.ParseToIntList(ConfigManager.Bind("Save", $"Bookmark_{CruiseAssistPlugin.Seed}", "").Value);
				LogManager.LogInfo($"change seed {CruiseAssistPlugin.Seed}.");
			}
		}
		if (step == Step.STATE)
		{
			LogManager.LogInfo("check state.");
			flag |= ConfigManager.UpdateEntry("Setting", "Enable", CruiseAssistPlugin.Enable);
			flag |= ConfigManager.UpdateEntry("Setting", "MarkVisited", CruiseAssistPlugin.Conf.MarkVisitedFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "SelectFocus", CruiseAssistPlugin.Conf.SelectFocusFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "HideDuplicateHistory", CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "AutoDisableLockCursor", CruiseAssistPlugin.Conf.AutoDisableLockCursorFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "ShowMainWindowWhenTargetSelectedEvenNotSailMode", CruiseAssistPlugin.Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "CloseStarListWhenSetTargetPlanet", CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "HideBottomCloseButton", CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag);
			flag |= ConfigManager.UpdateEntry("Setting", "UIScale", (int)CruiseAssistMainUI.Scale);
			flag |= ConfigManager.UpdateEntry("Setting", "MainWindowViewMode", CruiseAssistMainUI.ViewMode.ToString());
			for (int j = 0; j < 2; j++)
			{
				flag |= ConfigManager.UpdateEntry("State", $"MainWindow{j}Left", (int)((Rect)(ref CruiseAssistMainUI.Rect[j])).x);
				flag |= ConfigManager.UpdateEntry("State", $"MainWindow{j}Top", (int)((Rect)(ref CruiseAssistMainUI.Rect[j])).y);
				flag |= ConfigManager.UpdateEntry("State", $"StarListWindow{j}Left", (int)((Rect)(ref CruiseAssistStarListUI.Rect[j])).x);
				flag |= ConfigManager.UpdateEntry("State", $"StarListWindow{j}Top", (int)((Rect)(ref CruiseAssistStarListUI.Rect[j])).y);
				flag |= ConfigManager.UpdateEntry("State", $"ConfigWindow{j}Left", (int)((Rect)(ref CruiseAssistConfigUI.Rect[j])).x);
				flag |= ConfigManager.UpdateEntry("State", $"ConfigWindow{j}Top", (int)((Rect)(ref CruiseAssistConfigUI.Rect[j])).y);
			}
			flag |= ConfigManager.UpdateEntry("State", "StarListWindowListSelected", CruiseAssistStarListUI.ListSelected);
			flag |= ConfigManager.UpdateEntry("State", "DebugWindowLeft", (int)((Rect)(ref CruiseAssistDebugUI.Rect)).x);
			flag |= ConfigManager.UpdateEntry("State", "DebugWindowTop", (int)((Rect)(ref CruiseAssistDebugUI.Rect)).y);
			if (CruiseAssistPlugin.Seed != -1)
			{
				flag |= ConfigManager.UpdateEntry("Save", $"History_{CruiseAssistPlugin.Seed}", ListUtils.ToString(CruiseAssistPlugin.History));
				flag |= ConfigManager.UpdateEntry("Save", $"Bookmark_{CruiseAssistPlugin.Seed}", ListUtils.ToString(CruiseAssistPlugin.Bookmark));
			}
			CruiseAssistMainUI.NextCheckGameTick = long.MaxValue;
		}
		if (flag)
		{
			ConfigManager.Save();
		}
	}
}
public class CruiseAssistConfigUI
{
	private static int wIdx = 0;

	public const float WindowWidth = 400f;

	public const float WindowHeight = 400f;

	public static bool[] Show = new bool[2];

	public static Rect[] Rect = (Rect[])(object)new Rect[2]
	{
		new Rect(0f, 0f, 400f, 400f),
		new Rect(0f, 0f, 400f, 400f)
	};

	private static float[] lastCheckWindowLeft = new float[2]
	{
		float.MinValue,
		float.MinValue
	};

	private static float[] lastCheckWindowTop = new float[2]
	{
		float.MinValue,
		float.MinValue
	};

	public static float TempScale;

	public static void OnGUI()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Expected O, but got Unknown
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		wIdx = CruiseAssistMainUI.wIdx;
		Rect[wIdx] = GUILayout.Window(99030293, Rect[wIdx], new WindowFunction(WindowFunction), "CruiseAssist - Config", CruiseAssistMainUI.WindowStyle, Array.Empty<GUILayoutOption>());
		float num = CruiseAssistMainUI.Scale / 100f;
		if ((float)Screen.width / num < ((Rect)(ref Rect[wIdx])).xMax)
		{
			((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num - ((Rect)(ref Rect[wIdx])).width;
		}
		if (((Rect)(ref Rect[wIdx])).x < 0f)
		{
			((Rect)(ref Rect[wIdx])).x = 0f;
		}
		if ((float)Screen.height / num < ((Rect)(ref Rect[wIdx])).yMax)
		{
			((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num - ((Rect)(ref Rect[wIdx])).height;
		}
		if (((Rect)(ref Rect[wIdx])).y < 0f)
		{
			((Rect)(ref Rect[wIdx])).y = 0f;
		}
		if (lastCheckWindowLeft[wIdx] != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft[wIdx] || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop[wIdx]))
		{
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		lastCheckWindowLeft[wIdx] = ((Rect)(ref Rect[wIdx])).x;
		lastCheckWindowTop[wIdx] = ((Rect)(ref Rect[wIdx])).y;
	}

	public static void WindowFunction(int windowId)
	{
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Expected O, but got Unknown
		//IL_0064: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Expected O, but got Unknown
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_015f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_0170: Unknown result type (might be due to invalid IL or missing references)
		//IL_017c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0185: Unknown result type (might be due to invalid IL or missing references)
		//IL_0197: Expected O, but got Unknown
		//IL_019d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a4: Expected O, but got Unknown
		//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d5: Expected O, but got Unknown
		//IL_01db: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e5: Expected O, but got Unknown
		//IL_0222: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Expected O, but got Unknown
		//IL_0286: Unknown result type (might be due to invalid IL or missing references)
		//IL_028b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0297: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c3: Expected O, but got Unknown
		//IL_030b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0312: Expected O, but got Unknown
		//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_036f: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
		//IL_042d: Unknown result type (might be due to invalid IL or missing references)
		//IL_048c: Unknown result type (might be due to invalid IL or missing references)
		//IL_04eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_054a: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ee: Expected O, but got Unknown
		//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0690: Unknown result type (might be due to invalid IL or missing references)
		//IL_063e: Unknown result type (might be due to invalid IL or missing references)
		//IL_06b5: Unknown result type (might be due to invalid IL or missing references)
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
		GUILayout.Label("Main Window Style :", new GUIStyle(GUI.skin.label)
		{
			fixedWidth = 120f,
			fixedHeight = 20f,
			fontSize = 12,
			alignment = (TextAnchor)3
		}, Array.Empty<GUILayoutOption>());
		GUIStyle val = new GUIStyle(CruiseAssistMainUI.BaseToolbarButtonStyle);
		val.fixedWidth = 80f;
		val.fixedHeight = 20f;
		val.fontSize = 12;
		string[] array = new string[2] { "FULL", "MINI" };
		int num = ((CruiseAssistMainUI.ViewMode != 0) ? 1 : 0);
		GUI.changed = false;
		int num2 = GUILayout.Toolbar(num, array, val, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
		}
		if (num2 != num)
		{
			switch (num2)
			{
			case 1:
				CruiseAssistMainUI.ViewMode = CruiseAssistMainUIViewMode.MINI;
				break;
			case 0:
				CruiseAssistMainUI.ViewMode = CruiseAssistMainUIViewMode.FULL;
				break;
			}
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUILayout.EndHorizontal();
		GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
		GUILayout.Label("UI Scale :", new GUIStyle(GUI.skin.label)
		{
			fixedWidth = 60f,
			fixedHeight = 20f,
			fontSize = 12,
			alignment = (TextAnchor)3
		}, Array.Empty<GUILayoutOption>());
		GUIStyle val2 = new GUIStyle(CruiseAssistMainUI.BaseHorizontalSliderStyle);
		val2.fixedWidth = 180f;
		val2.margin.top = 10;
		val2.alignment = (TextAnchor)3;
		GUIStyle val3 = new GUIStyle(CruiseAssistMainUI.BaseHorizontalSliderThumbStyle);
		val3.border = new RectOffset(1, 1, 8, 8);
		TempScale = GUILayout.HorizontalSlider(TempScale, 80f, 240f, val2, val3, Array.Empty<GUILayoutOption>());
		TempScale = (int)TempScale / 5 * 5;
		GUIStyle val4 = new GUIStyle(GUI.skin.label);
		val4.fixedWidth = 40f;
		val4.fixedHeight = 20f;
		val4.fontSize = 12;
		val4.alignment = (TextAnchor)3;
		GUILayout.Label(TempScale.ToString("0") + "%", val4, Array.Empty<GUILayoutOption>());
		GUIStyle val5 = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle)
		{
			fixedWidth = 60f,
			fixedHeight = 18f
		};
		val5.margin.top = 6;
		val5.fontSize = 12;
		if (GUILayout.Button("SET", val5, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.Scale = TempScale;
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUILayout.EndHorizontal();
		GUIStyle val6 = new GUIStyle(CruiseAssistMainUI.BaseToggleStyle);
		val6.fixedHeight = 20f;
		val6.fontSize = 12;
		val6.alignment = (TextAnchor)6;
		GUI.changed = false;
		CruiseAssistPlugin.Conf.MarkVisitedFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.MarkVisitedFlag, Localization.Translate("Mark the visited system and planet."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUI.changed = false;
		CruiseAssistPlugin.Conf.SelectFocusFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.SelectFocusFlag, Localization.Translate("Focus when select target."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUI.changed = false;
		CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag, Localization.Translate("Hide duplicate history."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUI.changed = false;
		CruiseAssistPlugin.Conf.AutoDisableLockCursorFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.AutoDisableLockCursorFlag, Localization.Translate("Disable lock cursor when starting sail mode."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUI.changed = false;
		CruiseAssistPlugin.Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag, Localization.Translate("Show main window when target selected, even not sail mode."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUI.changed = false;
		CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag, Localization.Translate("Close StarList when set target planet."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUI.changed = false;
		CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag = GUILayout.Toggle(CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag, Localization.Translate("Hide bottom close button."), val6, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUILayout.FlexibleSpace();
		GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
		GUILayout.FlexibleSpace();
		GUIStyle val7 = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle);
		val7.fixedWidth = 80f;
		val7.fixedHeight = 20f;
		val7.fontSize = 12;
		if (!CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag && GUILayout.Button("Close", val7, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			Show[wIdx] = false;
		}
		GUILayout.EndHorizontal();
		GUILayout.EndVertical();
		if (GUI.Button(new Rect(((Rect)(ref Rect[wIdx])).width - 16f, 1f, 16f, 16f), "", CruiseAssistMainUI.CloseButtonStyle))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			Show[wIdx] = false;
		}
		GUI.DragWindow();
	}
}
public class CruiseAssistDebugUI
{
	public static bool Show = false;

	public static Rect Rect = new Rect(0f, 0f, 400f, 400f);

	private static float lastCheckWindowLeft = float.MinValue;

	private static float lastCheckWindowTop = float.MinValue;

	private static Vector2 scrollPos = Vector2.zero;

	public static void OnGUI()
	{
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Expected O, but got Unknown
		//IL_001f: Unknown result type (might be due to invalid IL or missing references)
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Expected O, but got Unknown
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		GUIStyle val = new GUIStyle(GUI.skin.window);
		val.fontSize = 11;
		Rect = GUILayout.Window(99030294, Rect, new WindowFunction(WindowFunction), "CruiseAssist - Debug", val, Array.Empty<GUILayoutOption>());
		float num = CruiseAssistMainUI.Scale / 100f;
		if ((float)Screen.width < ((Rect)(ref Rect)).xMax)
		{
			((Rect)(ref Rect)).x = (float)Screen.width - ((Rect)(ref Rect)).width;
		}
		if (((Rect)(ref Rect)).x < 0f)
		{
			((Rect)(ref Rect)).x = 0f;
		}
		if ((float)Screen.height < ((Rect)(ref Rect)).yMax)
		{
			((Rect)(ref Rect)).y = (float)Screen.height - ((Rect)(ref Rect)).height;
		}
		if (((Rect)(ref Rect)).y < 0f)
		{
			((Rect)(ref Rect)).y = 0f;
		}
		if (lastCheckWindowLeft != float.MinValue && (((Rect)(ref Rect)).x != lastCheckWindowLeft || ((Rect)(ref Rect)).y != lastCheckWindowTop))
		{
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		lastCheckWindowLeft = ((Rect)(ref Rect)).x;
		lastCheckWindowTop = ((Rect)(ref Rect)).y;
	}

	public static void WindowFunction(int windowId)
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001c: Expected O, but got Unknown
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		GUIStyle val = new GUIStyle(GUI.skin.label);
		val.fontSize = 12;
		scrollPos = GUILayout.BeginScrollView(scrollPos, Array.Empty<GUILayoutOption>());
		string format = "CruiseAssistPlugin.ReticuleTargetStar.id={0}";
		GUILayout.Label(string.Format(format, CruiseAssistPlugin.ReticuleTargetStar?.id), val, Array.Empty<GUILayoutOption>());
		string format2 = "CruiseAssistPlugin.ReticuleTargetPlanet.id={0}";
		GUILayout.Label(string.Format(format2, CruiseAssistPlugin.ReticuleTargetPlanet?.id), val, Array.Empty<GUILayoutOption>());
		string format3 = "CruiseAssistPlugin.SelectTargetStar.id={0}";
		GUILayout.Label(string.Format(format3, CruiseAssistPlugin.SelectTargetStar?.id), val, Array.Empty<GUILayoutOption>());
		string format4 = "CruiseAssistPlugin.SelectTargetPlanet.id={0}";
		GUILayout.Label(string.Format(format4, CruiseAssistPlugin.SelectTargetPlanet?.id), val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.navigation.indicatorAstroId={GameMain.mainPlayer.navigation.indicatorAstroId}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input0.w={GameMain.mainPlayer.controller.input0.w}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input0.x={GameMain.mainPlayer.controller.input0.x}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input0.y={GameMain.mainPlayer.controller.input0.y}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input0.z={GameMain.mainPlayer.controller.input0.z}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input1.w={GameMain.mainPlayer.controller.input1.w}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input1.x={GameMain.mainPlayer.controller.input1.x}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input1.y={GameMain.mainPlayer.controller.input1.y}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GameMain.mainPlayer.controller.input1.z={GameMain.mainPlayer.controller.input1.z}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"VFInput._sailSpeedUp={VFInput._sailSpeedUp}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"CruiseAssistPlugin.Enable={CruiseAssistPlugin.Enable}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"CruiseAssistPlugin.History={CruiseAssistPlugin.History.Count()}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label("CruiseAssistPlugin.History=" + ListUtils.ToString(CruiseAssistPlugin.History), val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GUI.skin.window.margin.top={GUI.skin.window.margin.top}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GUI.skin.window.border.top={GUI.skin.window.border.top}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GUI.skin.window.padding.top={GUI.skin.window.padding.top}", val, Array.Empty<GUILayoutOption>());
		GUILayout.Label($"GUI.skin.window.overflow.top={GUI.skin.window.overflow.top}", val, Array.Empty<GUILayoutOption>());
		GUILayout.EndScrollView();
		GUILayout.EndVertical();
		GUI.DragWindow();
	}
}
public interface CruiseAssistExtensionAPI
{
	void CheckConfig(string step);

	void SetTargetAstroId(int astroId);

	bool OperateWalk(PlayerMove_Walk __instance);

	bool OperateDrift(PlayerMove_Drift __instance);

	bool OperateFly(PlayerMove_Fly __instance);

	bool OperateSail(PlayerMove_Sail __instance);

	void SetInactive();

	void CancelOperate();

	void OnGUI();
}
public class CruiseAssistMainUI
{
	public static float Scale = 150f;

	public static int wIdx = 0;

	public static CruiseAssistMainUIViewMode ViewMode = CruiseAssistMainUIViewMode.FULL;

	public const float WindowWidthFull = 398f;

	public const float WindowHeightFull = 150f;

	public const float WindowWidthMini = 288f;

	public const float WindowHeightMini = 70f;

	public static Rect[] Rect = (Rect[])(object)new Rect[2]
	{
		new Rect(0f, 0f, 398f, 150f),
		new Rect(0f, 0f, 398f, 150f)
	};

	private static float[] lastCheckWindowLeft = new float[2]
	{
		float.MinValue,
		float.MinValue
	};

	private static float[] lastCheckWindowTop = new float[2]
	{
		float.MinValue,
		float.MinValue
	};

	public static long NextCheckGameTick = long.MaxValue;

	public static Texture2D WhiteBorderBackgroundTexture = null;

	public static Texture2D GrayBorderBackgroundTexture = null;

	public static Texture2D WhiteBorderTexture = null;

	public static Texture2D GrayBorderTexture = null;

	public static Texture2D BlackTexture = null;

	public static Texture2D WhiteTexture = null;

	public static Texture2D ToggleOnTexture = null;

	public static Texture2D ToggleOffTexture = null;

	public static Texture2D CloseButtonGrayBorderTexture = null;

	public static Texture2D CloseButtonWhiteBorderTexture = null;

	public static GUIStyle WindowStyle = null;

	public static GUIStyle BaseButtonStyle = null;

	public static GUIStyle BaseToolbarButtonStyle = null;

	public static GUIStyle BaseVerticalScrollBarStyle = null;

	public static GUIStyle BaseHorizontalSliderStyle = null;

	public static GUIStyle BaseHorizontalSliderThumbStyle = null;

	public static GUIStyle BaseToggleStyle = null;

	public static GUIStyle BaseTextFieldStyle = null;

	public static GUIStyle CloseButtonStyle = null;

	private static List<GUIStyle> verticalScrollBarSkins = null;

	public static void OnGUI()
	{
		//IL_001e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Expected O, but got Unknown
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Expected O, but got Unknown
		//IL_019b: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a5: Expected O, but got Unknown
		//IL_025e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0268: Expected O, but got Unknown
		//IL_0317: Unknown result type (might be due to invalid IL or missing references)
		//IL_0321: Expected O, but got Unknown
		//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ad: Expected O, but got Unknown
		//IL_0078: Unknown result type (might be due to invalid IL or missing references)
		//IL_043b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0445: Expected O, but got Unknown
		//IL_0132: 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)
		//IL_0085: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0506: Expected O, but got Unknown
		//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_013f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0141: Unknown result type (might be due to invalid IL or missing references)
		//IL_05e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_05f0: Expected O, but got Unknown
		//IL_0345: Unknown result type (might be due to invalid IL or missing references)
		//IL_0347: Unknown result type (might be due to invalid IL or missing references)
		//IL_02af: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		//IL_0204: Unknown result type (might be due to invalid IL or missing references)
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		//IL_072f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0739: Expected O, but got Unknown
		//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03df: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02be: Unknown result type (might be due to invalid IL or missing references)
		//IL_012e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0867: Unknown result type (might be due to invalid IL or missing references)
		//IL_0871: Expected O, but got Unknown
		//IL_0888: Unknown result type (might be due to invalid IL or missing references)
		//IL_089d: Unknown result type (might be due to invalid IL or missing references)
		//IL_08b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_08c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_08dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_08f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_0906: Unknown result type (might be due to invalid IL or missing references)
		//IL_091b: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_09f9: Expected O, but got Unknown
		//IL_0a03: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a18: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a2d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a42: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a57: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a6c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a81: Unknown result type (might be due to invalid IL or missing references)
		//IL_0a96: Unknown result type (might be due to invalid IL or missing references)
		//IL_048d: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b62: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b6c: Expected O, but got Unknown
		//IL_0b76: Unknown result type (might be due to invalid IL or missing references)
		//IL_0b8b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ba0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bb5: Unknown result type (might be due to invalid IL or missing references)
		//IL_06c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_06ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_06e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_06e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_057b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0493: Unknown result type (might be due to invalid IL or missing references)
		//IL_049e: Unknown result type (might be due to invalid IL or missing references)
		//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0bf6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0c00: Expected O, but got Unknown
		//IL_07ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0801: Unknown result type (might be due to invalid IL or missing references)
		//IL_0818: Unknown result type (might be due to invalid IL or missing references)
		//IL_081a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0677: Unknown result type (might be due to invalid IL or missing references)
		//IL_057d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0588: Unknown result type (might be due to invalid IL or missing references)
		//IL_058a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0cd9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0ce3: Expected O, but got Unknown
		//IL_07ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_0679: Unknown result type (might be due to invalid IL or missing references)
		//IL_0684: Unknown result type (might be due to invalid IL or missing references)
		//IL_0686: Unknown result type (might be due to invalid IL or missing references)
		//IL_0491: Unknown result type (might be due to invalid IL or missing references)
		//IL_0dac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0db6: Expected O, but got Unknown
		//IL_07b0: Unknown result type (might be due to invalid IL or missing references)
		//IL_07bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_07bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e7f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0e89: Expected O, but got Unknown
		//IL_0573: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f52: Unknown result type (might be due to invalid IL or missing references)
		//IL_0f5c: Expected O, but got Unknown
		//IL_066f: Unknown result type (might be due to invalid IL or missing references)
		//IL_1025: Unknown result type (might be due to invalid IL or missing references)
		//IL_102f: Expected O, but got Unknown
		//IL_07a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_1102: Unknown result type (might be due to invalid IL or missing references)
		//IL_1109: Expected O, but got Unknown
		//IL_11bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_11c4: Expected O, but got Unknown
		//IL_1278: Unknown result type (might be due to invalid IL or missing references)
		//IL_127f: Expected O, but got Unknown
		//IL_0577: Unknown result type (might be due to invalid IL or missing references)
		//IL_0673: Unknown result type (might be due to invalid IL or missing references)
		//IL_13f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_1404: Unknown result type (might be due to invalid IL or missing references)
		//IL_141d: Expected O, but got Unknown
		//IL_1418: Unknown result type (might be due to invalid IL or missing references)
		//IL_141d: Unknown result type (might be due to invalid IL or missing references)
		//IL_07aa: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)WhiteBorderBackgroundTexture == (Object)null)
		{
			WhiteBorderBackgroundTexture = new Texture2D(64, 64, (TextureFormat)4, false);
			Color32 val = default(Color32);
			((Color32)(ref val))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			Color32 val2 = default(Color32);
			((Color32)(ref val2))..ctor((byte)0, (byte)0, (byte)0, (byte)224);
			for (int i = 0; i < 64; i++)
			{
				for (int j = 0; j < 64; j++)
				{
					Color32 val3 = ((i <= 0 || j <= 0 || i >= 63 || j >= 63) ? val : val2);
					WhiteBorderBackgroundTexture.SetPixel(j, i, Color32.op_Implicit(val3));
				}
			}
			WhiteBorderBackgroundTexture.Apply();
		}
		if ((Object)(object)GrayBorderBackgroundTexture == (Object)null)
		{
			GrayBorderBackgroundTexture = new Texture2D(64, 64, (TextureFormat)4, false);
			Color32 val4 = default(Color32);
			((Color32)(ref val4))..ctor((byte)64, (byte)64, (byte)64, byte.MaxValue);
			Color32 val5 = default(Color32);
			((Color32)(ref val5))..ctor((byte)0, (byte)0, (byte)0, (byte)224);
			for (int k = 0; k < 64; k++)
			{
				for (int l = 0; l < 64; l++)
				{
					Color32 val6 = ((k <= 0 || l <= 0 || k >= 63 || l >= 63) ? val4 : val5);
					GrayBorderBackgroundTexture.SetPixel(l, k, Color32.op_Implicit(val6));
				}
			}
			GrayBorderBackgroundTexture.Apply();
		}
		if ((Object)(object)WhiteBorderTexture == (Object)null)
		{
			WhiteBorderTexture = new Texture2D(64, 64, (TextureFormat)4, false);
			Color32 val7 = default(Color32);
			((Color32)(ref val7))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			Color32 val8 = default(Color32);
			((Color32)(ref val8))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue);
			for (int m = 0; m < 64; m++)
			{
				for (int n = 0; n < 64; n++)
				{
					Color32 val9 = ((m <= 0 || n <= 0 || m >= 63 || n >= 63) ? val7 : val8);
					WhiteBorderTexture.SetPixel(n, m, Color32.op_Implicit(val9));
				}
			}
			WhiteBorderTexture.Apply();
		}
		if ((Object)(object)GrayBorderTexture == (Object)null)
		{
			GrayBorderTexture = new Texture2D(64, 64, (TextureFormat)4, false);
			Color32 val10 = default(Color32);
			((Color32)(ref val10))..ctor((byte)64, (byte)64, (byte)64, byte.MaxValue);
			Color32 val11 = default(Color32);
			((Color32)(ref val11))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue);
			for (int num = 0; num < 64; num++)
			{
				for (int num2 = 0; num2 < 64; num2++)
				{
					Color32 val12 = ((num <= 0 || num2 <= 0 || num >= 63 || num2 >= 63) ? val10 : val11);
					GrayBorderTexture.SetPixel(num2, num, Color32.op_Implicit(val12));
				}
			}
			GrayBorderTexture.Apply();
		}
		if ((Object)(object)BlackTexture == (Object)null)
		{
			BlackTexture = new Texture2D(64, 64, (TextureFormat)4, false);
			Color32 val13 = default(Color32);
			((Color32)(ref val13))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue);
			for (int num3 = 0; num3 < 64; num3++)
			{
				for (int num4 = 0; num4 < 64; num4++)
				{
					BlackTexture.SetPixel(num4, num3, Color32.op_Implicit(val13));
				}
			}
			BlackTexture.Apply();
		}
		if ((Object)(object)WhiteTexture == (Object)null)
		{
			WhiteTexture = new Texture2D(64, 64, (TextureFormat)4, false);
			Color32 val14 = default(Color32);
			((Color32)(ref val14))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			for (int num5 = 0; num5 < 64; num5++)
			{
				for (int num6 = 0; num6 < 64; num6++)
				{
					WhiteTexture.SetPixel(num6, num5, Color32.op_Implicit(val14));
				}
			}
			WhiteTexture.Apply();
		}
		if ((Object)(object)ToggleOnTexture == (Object)null)
		{
			ToggleOnTexture = new Texture2D(16, 16, (TextureFormat)4, false);
			Color32 val15 = default(Color32);
			((Color32)(ref val15))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			Color32 val16 = default(Color32);
			((Color32)(ref val16))..ctor((byte)0, (byte)0, (byte)0, (byte)0);
			for (int num7 = 0; num7 < 16; num7++)
			{
				for (int num8 = 0; num8 < 16; num8++)
				{
					Color32 val17 = ((num8 >= 1 && num8 <= 12 && num7 >= 2 && num7 <= 13) ? val15 : val16);
					ToggleOnTexture.SetPixel(num8, num7, Color32.op_Implicit(val17));
				}
			}
			ToggleOnTexture.Apply();
		}
		if ((Object)(object)ToggleOffTexture == (Object)null)
		{
			ToggleOffTexture = new Texture2D(16, 16, (TextureFormat)4, false);
			Color32 val18 = default(Color32);
			((Color32)(ref val18))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			Color32 val19 = default(Color32);
			((Color32)(ref val19))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue);
			Color32 val20 = default(Color32);
			((Color32)(ref val20))..ctor((byte)0, (byte)0, (byte)0, (byte)0);
			for (int num9 = 0; num9 < 16; num9++)
			{
				for (int num10 = 0; num10 < 16; num10++)
				{
					Color32 val21 = ((num10 < 1 || num10 > 12 || num9 < 2 || num9 > 13) ? val20 : ((num10 > 1 && num10 < 12 && num9 > 2 && num9 < 13) ? val19 : val18));
					ToggleOffTexture.SetPixel(num10, num9, Color32.op_Implicit(val21));
				}
			}
			ToggleOffTexture.Apply();
		}
		if ((Object)(object)CloseButtonGrayBorderTexture == (Object)null)
		{
			CloseButtonGrayBorderTexture = new Texture2D(16, 16, (TextureFormat)4, false);
			Color32 val22 = default(Color32);
			((Color32)(ref val22))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			Color32 val23 = default(Color32);
			((Color32)(ref val23))..ctor((byte)64, (byte)64, (byte)64, byte.MaxValue);
			Color32 val24 = default(Color32);
			((Color32)(ref val24))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue);
			Color32 val25 = default(Color32);
			((Color32)(ref val25))..ctor((byte)0, (byte)0, (byte)0, (byte)0);
			for (int num11 = 0; num11 < 16; num11++)
			{
				for (int num12 = 0; num12 < 16; num12++)
				{
					Color32 val26 = ((num12 < 1 || num12 > 12 || num11 < 2 || num11 > 13) ? val25 : ((num12 > 1 && num12 < 12 && num11 > 2 && num11 < 13) ? val24 : val23));
					CloseButtonGrayBorderTexture.SetPixel(num12, num11, Color32.op_Implicit(val26));
				}
			}
			for (int num13 = 4; num13 <= 9; num13++)
			{
				CloseButtonGrayBorderTexture.SetPixel(num13, num13 + 1, Color32.op_Implicit(val22));
				CloseButtonGrayBorderTexture.SetPixel(num13, 14 - num13, Color32.op_Implicit(val22));
			}
			CloseButtonGrayBorderTexture.Apply();
		}
		if ((Object)(object)CloseButtonWhiteBorderTexture == (Object)null)
		{
			CloseButtonWhiteBorderTexture = new Texture2D(16, 16, (TextureFormat)4, false);
			Color32 val27 = default(Color32);
			((Color32)(ref val27))..ctor(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue);
			Color32 val28 = default(Color32);
			((Color32)(ref val28))..ctor((byte)0, (byte)0, (byte)0, byte.MaxValue);
			Color32 val29 = default(Color32);
			((Color32)(ref val29))..ctor((byte)0, (byte)0, (byte)0, (byte)0);
			for (int num14 = 0; num14 < 16; num14++)
			{
				for (int num15 = 0; num15 < 16; num15++)
				{
					Color32 val30 = ((num15 < 1 || num15 > 12 || num14 < 2 || num14 > 13) ? val29 : ((num15 > 1 && num15 < 12 && num14 > 2 && num14 < 13) ? val28 : val27));
					CloseButtonWhiteBorderTexture.SetPixel(num15, num14, Color32.op_Implicit(val30));
				}
			}
			for (int num16 = 4; num16 <= 9; num16++)
			{
				CloseButtonWhiteBorderTexture.SetPixel(num16, num16 + 1, Color32.op_Implicit(val27));
				CloseButtonWhiteBorderTexture.SetPixel(num16, 14 - num16, Color32.op_Implicit(val27));
			}
			CloseButtonWhiteBorderTexture.Apply();
		}
		if (WindowStyle == null)
		{
			WindowStyle = new GUIStyle(GUI.skin.window);
			WindowStyle.fontSize = 11;
			WindowStyle.normal.textColor = Color.white;
			WindowStyle.hover.textColor = Color.white;
			WindowStyle.active.textColor = Color.white;
			WindowStyle.focused.textColor = Color.white;
			WindowStyle.onNormal.textColor = Color.white;
			WindowStyle.onHover.textColor = Color.white;
			WindowStyle.onActive.textColor = Color.white;
			WindowStyle.onFocused.textColor = Color.white;
			WindowStyle.normal.background = GrayBorderBackgroundTexture;
			WindowStyle.hover.background = GrayBorderBackgroundTexture;
			WindowStyle.active.background = GrayBorderBackgroundTexture;
			WindowStyle.focused.background = GrayBorderBackgroundTexture;
			WindowStyle.onNormal.background = WhiteBorderBackgroundTexture;
			WindowStyle.onHover.background = WhiteBorderBackgroundTexture;
			WindowStyle.onActive.background = WhiteBorderBackgroundTexture;
			WindowStyle.onFocused.background = WhiteBorderBackgroundTexture;
		}
		if (BaseButtonStyle == null)
		{
			BaseButtonStyle = new GUIStyle(GUI.skin.button);
			BaseButtonStyle.normal.textColor = Color.white;
			BaseButtonStyle.hover.textColor = Color.white;
			BaseButtonStyle.active.textColor = Color.white;
			BaseButtonStyle.focused.textColor = Color.white;
			BaseButtonStyle.onNormal.textColor = Color.white;
			BaseButtonStyle.onHover.textColor = Color.white;
			BaseButtonStyle.onActive.textColor = Color.white;
			BaseButtonStyle.onFocused.textColor = Color.white;
			BaseButtonStyle.normal.background = GrayBorderTexture;
			BaseButtonStyle.hover.background = WhiteBorderTexture;
			BaseButtonStyle.active.background = WhiteBorderTexture;
			BaseButtonStyle.focused.background = WhiteBorderTexture;
			BaseButtonStyle.onNormal.background = GrayBorderTexture;
			BaseButtonStyle.onHover.background = WhiteBorderTexture;
			BaseButtonStyle.onActive.background = WhiteBorderTexture;
			BaseButtonStyle.onFocused.background = WhiteBorderTexture;
		}
		if (BaseToolbarButtonStyle == null)
		{
			BaseToolbarButtonStyle = new GUIStyle(BaseButtonStyle);
			BaseToolbarButtonStyle.normal.textColor = Color.gray;
			BaseToolbarButtonStyle.hover.textColor = Color.gray;
			BaseToolbarButtonStyle.active.textColor = Color.gray;
			BaseToolbarButtonStyle.focused.textColor = Color.gray;
			BaseToolbarButtonStyle.onNormal.background = WhiteBorderBackgroundTexture;
		}
		if (BaseVerticalScrollBarStyle == null)
		{
			BaseVerticalScrollBarStyle = new GUIStyle(GUI.skin.verticalScrollbar);
			BaseVerticalScrollBarStyle.name = "cruiseassist.verticalscrollbar";
			BaseVerticalScrollBarStyle.normal.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.hover.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.active.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.focused.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.onNormal.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.onHover.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.onActive.background = GrayBorderTexture;
			BaseVerticalScrollBarStyle.onFocused.background = GrayBorderTexture;
		}
		if (BaseHorizontalSliderStyle == null)
		{
			BaseHorizontalSliderStyle = new GUIStyle(GUI.skin.horizontalSlider);
			BaseHorizontalSliderStyle.normal.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.hover.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.active.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.focused.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.onNormal.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.onHover.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.onActive.background = GrayBorderTexture;
			BaseHorizontalSliderStyle.onFocused.background = GrayBorderTexture;
		}
		if (BaseHorizontalSliderThumbStyle == null)
		{
			BaseHorizontalSliderThumbStyle = new GUIStyle(GUI.skin.horizontalSliderThumb);
			BaseHorizontalSliderThumbStyle.normal.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.hover.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.active.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.focused.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.onNormal.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.onHover.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.onActive.background = WhiteBorderTexture;
			BaseHorizontalSliderThumbStyle.onFocused.background = WhiteBorderTexture;
		}
		if (BaseToggleStyle == null)
		{
			BaseToggleStyle = new GUIStyle(GUI.skin.toggle);
			BaseToggleStyle.normal.background = ToggleOffTexture;
			BaseToggleStyle.hover.background = ToggleOffTexture;
			BaseToggleStyle.active.background = ToggleOffTexture;
			BaseToggleStyle.focused.background = ToggleOffTexture;
			BaseToggleStyle.onNormal.background = ToggleOnTexture;
			BaseToggleStyle.onHover.background = ToggleOnTexture;
			BaseToggleStyle.onActive.background = ToggleOnTexture;
			BaseToggleStyle.onFocused.background = ToggleOnTexture;
		}
		if (BaseTextFieldStyle == null)
		{
			BaseTextFieldStyle = new GUIStyle(GUI.skin.textField);
			BaseTextFieldStyle.normal.background = WhiteBorderTexture;
			BaseTextFieldStyle.hover.background = WhiteBorderTexture;
			BaseTextFieldStyle.active.background = WhiteBorderTexture;
			BaseTextFieldStyle.focused.background = WhiteBorderTexture;
			BaseTextFieldStyle.onNormal.background = WhiteBorderTexture;
			BaseTextFieldStyle.onHover.background = WhiteBorderTexture;
			BaseTextFieldStyle.onActive.background = WhiteBorderTexture;
			BaseTextFieldStyle.onFocused.background = WhiteBorderTexture;
		}
		if (CloseButtonStyle == null)
		{
			CloseButtonStyle = new GUIStyle(GUI.skin.button);
			CloseButtonStyle.normal.background = CloseButtonGrayBorderTexture;
			CloseButtonStyle.hover.background = CloseButtonWhiteBorderTexture;
			CloseButtonStyle.active.background = CloseButtonWhiteBorderTexture;
			CloseButtonStyle.focused.background = CloseButtonWhiteBorderTexture;
			CloseButtonStyle.onNormal.background = CloseButtonGrayBorderTexture;
			CloseButtonStyle.onHover.background = CloseButtonWhiteBorderTexture;
			CloseButtonStyle.onActive.background = CloseButtonWhiteBorderTexture;
			CloseButtonStyle.onFocused.background = CloseButtonWhiteBorderTexture;
		}
		if (verticalScrollBarSkins == null)
		{
			verticalScrollBarSkins = new List<GUIStyle>();
			GUIStyle val31 = new GUIStyle(GUI.skin.verticalScrollbarThumb);
			val31.name = "cruiseassist.verticalscrollbarthumb";
			val31.normal.background = WhiteBorderTexture;
			val31.hover.background = WhiteBorderTexture;
			val31.active.background = WhiteBorderTexture;
			val31.focused.background = WhiteBorderTexture;
			val31.onNormal.background = WhiteBorderTexture;
			val31.onHover.background = WhiteBorderTexture;
			val31.onActive.background = WhiteBorderTexture;
			val31.onFocused.background = WhiteBorderTexture;
			verticalScrollBarSkins.Add(val31);
			GUIStyle val32 = new GUIStyle(GUI.skin.verticalScrollbarUpButton);
			val32.name = "cruiseassist.verticalscrollbarupbutton";
			val32.normal.background = BlackTexture;
			val32.hover.background = BlackTexture;
			val32.active.background = BlackTexture;
			val32.focused.background = BlackTexture;
			val32.onNormal.background = BlackTexture;
			val32.onHover.background = BlackTexture;
			val32.onActive.background = BlackTexture;
			val32.onFocused.background = BlackTexture;
			verticalScrollBarSkins.Add(val32);
			GUIStyle val33 = new GUIStyle(GUI.skin.verticalScrollbarDownButton);
			val33.name = "cruiseassist.verticalscrollbardownbutton";
			val33.normal.background = BlackTexture;
			val33.hover.background = BlackTexture;
			val33.active.background = BlackTexture;
			val33.focused.background = BlackTexture;
			val33.onNormal.background = BlackTexture;
			val33.onHover.background = BlackTexture;
			val33.onActive.background = BlackTexture;
			val33.onFocused.background = BlackTexture;
			verticalScrollBarSkins.Add(val33);
			GUI.skin.customStyles = GUI.skin.customStyles.Concat(verticalScrollBarSkins).ToArray();
		}
		switch (ViewMode)
		{
		case CruiseAssistMainUIViewMode.MINI:
			((Rect)(ref Rect[wIdx])).width = 288f;
			((Rect)(ref Rect[wIdx])).height = 70f;
			break;
		case CruiseAssistMainUIViewMode.FULL:
			((Rect)(ref Rect[wIdx])).width = 398f;
			((Rect)(ref Rect[wIdx])).height = 150f;
			break;
		}
		Rect[wIdx] = GUILayout.Window(99030291, Rect[wIdx], new WindowFunction(WindowFunction), "CruiseAssist", WindowStyle, Array.Empty<GUILayoutOption>());
		float num17 = Scale / 100f;
		if ((float)Screen.width / num17 < ((Rect)(ref Rect[wIdx])).xMax)
		{
			((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num17 - ((Rect)(ref Rect[wIdx])).width;
		}
		if (((Rect)(ref Rect[wIdx])).x < 0f)
		{
			((Rect)(ref Rect[wIdx])).x = 0f;
		}
		if ((float)Screen.height / num17 < ((Rect)(ref Rect[wIdx])).yMax)
		{
			((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num17 - ((Rect)(ref Rect[wIdx])).height;
		}
		if (((Rect)(ref Rect[wIdx])).y < 0f)
		{
			((Rect)(ref Rect[wIdx])).y = 0f;
		}
		if (lastCheckWindowLeft[wIdx] != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft[wIdx] || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop[wIdx]))
		{
			NextCheckGameTick = GameMain.gameTick + 300;
		}
		lastCheckWindowLeft[wIdx] = ((Rect)(ref Rect[wIdx])).x;
		lastCheckWindowTop[wIdx] = ((Rect)(ref Rect[wIdx])).y;
		if (NextCheckGameTick <= GameMain.gameTick)
		{
			ConfigManager.CheckConfig(ConfigManager.Step.STATE);
		}
	}

	public static void WindowFunction(int windowId)
	{
		//IL_0418: Unknown result type (might be due to invalid IL or missing references)
		//IL_041e: Expected O, but got Unknown
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_04cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_04d2: Expected O, but got Unknown
		//IL_003e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0527: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: 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)
		//IL_04a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_006b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0072: Expected O, but got Unknown
		//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: Expected O, but got Unknown
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_010c: Expected O, but got Unknown
		//IL_013b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0142: Expected O, but got Unknown
		//IL_05a3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0604: Unknown result type (might be due to invalid IL or missing references)
		//IL_0186: Unknown result type (might be due to invalid IL or missing references)
		//IL_0651: Unknown result type (might be due to invalid IL or missing references)
		//IL_01db: Unknown result type (might be due to invalid IL or missing references)
		//IL_0240: Unknown result type (might be due to invalid IL or missing references)
		//IL_0245: Unknown result type (might be due to invalid IL or missing references)
		//IL_025c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0260: Unknown result type (might be due to invalid IL or missing references)
		//IL_0265: Unknown result type (might be due to invalid IL or missing references)
		//IL_026a: Unknown result type (might be due to invalid IL or missing references)
		//IL_028d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0294: Expected O, but got Unknown
		//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ca: Expected O, but got Unknown
		//IL_030e: Unknown result type (might be due to invalid IL or missing references)
		//IL_038c: Unknown result type (might be due to invalid IL or missing references)
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		if (ViewMode == CruiseAssistMainUIViewMode.FULL)
		{
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			Color textColor = ((CruiseAssistPlugin.State == CruiseAssistState.TO_STAR) ? Color.cyan : Color.white);
			Color textColor2 = ((CruiseAssistPlugin.State == CruiseAssistState.TO_PLANET) ? Color.cyan : Color.white);
			GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
			GUIStyle val = new GUIStyle(GUI.skin.label);
			val.fixedWidth = 50f;
			val.fixedHeight = 36f;
			val.fontSize = 12;
			val.alignment = (TextAnchor)0;
			GUIStyle val2 = new GUIStyle(val);
			val.normal.textColor = textColor;
			GUILayout.Label("Target\n System:", val, Array.Empty<GUILayoutOption>());
			val2.normal.textColor = textColor2;
			GUILayout.Label("Target\n Planet:", val2, Array.Empty<GUILayoutOption>());
			GUILayout.EndVertical();
			GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
			GUIStyle val3 = new GUIStyle(GUI.skin.label);
			val3.fixedWidth = 240f;
			val3.fixedHeight = 36f;
			val3.fontSize = 14;
			val3.alignment = (TextAnchor)3;
			GUIStyle val4 = new GUIStyle(val3);
			if (CruiseAssistPlugin.TargetStar != null && ((GameMain.localStar != null && CruiseAssistPlugin.TargetStar.id != GameMain.localStar.id) || CruiseAssistPlugin.TargetPlanet == null))
			{
				val3.normal.textColor = textColor;
				GUILayout.Label(CruiseAssistPlugin.GetStarName(CruiseAssistPlugin.TargetStar), val3, Array.Empty<GUILayoutOption>());
			}
			else
			{
				GUILayout.Label(" ", val3, Array.Empty<GUILayoutOption>());
			}
			if (CruiseAssistPlugin.TargetPlanet != null)
			{
				val4.normal.textColor = textColor2;
				GUILayout.Label(CruiseAssistPlugin.GetPlanetName(CruiseAssistPlugin.TargetPlanet), val4, Array.Empty<GUILayoutOption>());
			}
			else
			{
				GUILayout.Label(" ", val4, Array.Empty<GUILayoutOption>());
			}
			GUILayout.EndVertical();
			GUILayout.FlexibleSpace();
			GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
			PlayerMove_Sail actionSail = GameMain.mainPlayer.controller.actionSail;
			VectorLF3 visual_uvel = actionSail.visual_uvel;
			double magnitude;
			if (GameMain.mainPlayer.warping)
			{
				VectorLF3 val5 = visual_uvel + actionSail.currentWarpVelocity;
				magnitude = ((VectorLF3)(ref val5)).magnitude;
			}
			else
			{
				magnitude = ((VectorLF3)(ref visual_uvel)).magnitude;
			}
			GUIStyle val6 = new GUIStyle(GUI.skin.label);
			val6.fixedWidth = 80f;
			val6.fixedHeight = 36f;
			val6.fontSize = 12;
			val6.alignment = (TextAnchor)5;
			GUIStyle val7 = new GUIStyle(val6);
			if (CruiseAssistPlugin.TargetStar != null && ((GameMain.localStar != null && CruiseAssistPlugin.TargetStar.id != GameMain.localStar.id) || CruiseAssistPlugin.TargetPlanet == null))
			{
				val6.normal.textColor = textColor;
				string text = (GameMain.mainPlayer.sailing ? TimeToString(CruiseAssistPlugin.TargetRange / magnitude) : "-- -- --");
				GUILayout.Label(RangeToString(CruiseAssistPlugin.TargetRange) + "\n" + text, val6, Array.Empty<GUILayoutOption>());
			}
			else
			{
				GUILayout.Label(" \n ", val6, Array.Empty<GUILayoutOption>());
			}
			if (CruiseAssistPlugin.TargetPlanet != null)
			{
				val7.normal.textColor = textColor2;
				string text2 = (GameMain.mainPlayer.sailing ? TimeToString(CruiseAssistPlugin.TargetRange / magnitude) : "-- -- --");
				GUILayout.Label(RangeToString(CruiseAssistPlugin.TargetRange) + "\n" + text2, val7, Array.Empty<GUILayoutOption>());
			}
			else
			{
				GUILayout.Label(" \n ", val7, Array.Empty<GUILayoutOption>());
			}
			GUILayout.EndVertical();
			GUILayout.EndHorizontal();
			GUILayout.FlexibleSpace();
		}
		GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
		GUIStyle val8 = new GUIStyle(GUI.skin.label);
		val8.fixedWidth = 160f;
		val8.fixedHeight = 32f;
		val8.fontSize = 14;
		val8.alignment = (TextAnchor)3;
		if (!CruiseAssistPlugin.Enable)
		{
			GUILayout.Label("Cruise Assist Disabled.", val8, Array.Empty<GUILayoutOption>());
		}
		else if (CruiseAssistPlugin.State == CruiseAssistState.INACTIVE || CruiseAssistPlugin.Interrupt)
		{
			GUILayout.Label("Cruise Assist Inactive.", val8, Array.Empty<GUILayoutOption>());
		}
		else
		{
			val8.normal.textColor = Color.cyan;
			GUILayout.Label("Cruise Assist Active.", val8, Array.Empty<GUILayoutOption>());
		}
		GUILayout.FlexibleSpace();
		GUIStyle val9 = new GUIStyle(BaseButtonStyle);
		val9.fixedWidth = 50f;
		val9.fixedHeight = 18f;
		val9.fontSize = 11;
		val9.alignment = (TextAnchor)4;
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		if (GUILayout.Button("Config", val9, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			bool[] show = CruiseAssistConfigUI.Show;
			int num = wIdx;
			show[num] = !show[num];
			if (CruiseAssistConfigUI.Show[wIdx])
			{
				CruiseAssistConfigUI.TempScale = Scale;
			}
		}
		if (GUILayout.Button(CruiseAssistPlugin.Enable ? "Enable" : "Disable", val9, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistPlugin.Enable = !CruiseAssistPlugin.Enable;
			NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUILayout.EndVertical();
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		if (GUILayout.Button("StarList", val9, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			bool[] show2 = CruiseAssistStarListUI.Show;
			int num2 = wIdx;
			show2[num2] = !show2[num2];
		}
		if (GUILayout.Button("Cancel", val9, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			CruiseAssistStarListUI.SelectStar(null, null);
		}
		GUILayout.EndVertical();
		GUILayout.EndHorizontal();
		GUILayout.EndVertical();
		GUI.DragWindow();
	}

	public static string RangeToString(double range)
	{
		if (range < 10000.0)
		{
			return (int)(range + 0.5) + "m ";
		}
		if (range < 600000.0)
		{
			return (range / 40000.0).ToString("0.00") + "AU";
		}
		return (range / 2400000.0).ToString("0.00") + "Ly";
	}

	public static string TimeToString(double time)
	{
		int num = (int)(time + 0.5);
		int num2 = num / 60;
		int num3 = num2 / 60;
		num %= 60;
		num2 %= 60;
		return $"{num3:00} {num2:00} {num:00}";
	}
}
public enum CruiseAssistMainUIViewMode
{
	FULL,
	MINI
}
[BepInPlugin("Appun.DSP.plugin.CruiseAssist", "DSPCruiseAssist", "0.1.3")]
public class CruiseAssistPlugin : BaseUnityPlugin
{
	public class Conf
	{
		public static bool MarkVisitedFlag = true;

		public static bool SelectFocusFlag = true;

		public static bool HideDuplicateHistoryFlag = true;

		public static bool AutoDisableLockCursorFlag = false;

		public static bool ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag = true;

		public static bool CloseStarListWhenSetTargetPlanetFlag = false;

		public static bool HideBottomCloseButtonFlag = true;
	}

	public const string ModGuid = "tanu.CruiseAssist";

	public const string ModName = "CruiseAssist";

	public const string ModVersion = "0.0.37";

	public static bool Enable = true;

	public static bool TargetSelected = false;

	public static StarData ReticuleTargetStar = null;

	public static PlanetData ReticuleTargetPlanet = null;

	public static StarData SelectTargetStar = null;

	public static PlanetData SelectTargetPlanet = null;

	public static int SelectTargetAstroId = 0;

	public static StarData TargetStar = null;

	public static PlanetData TargetPlanet = null;

	public static VectorLF3 TargetUPos = VectorLF3.zero;

	public static double TargetRange = 0.0;

	public static CruiseAssistState State = CruiseAssistState.INACTIVE;

	public static bool Interrupt = false;

	public static int Seed = -1;

	public static List<int> History = new List<int>();

	public static List<int> Bookmark = new List<int>();

	public static Func<StarData, string> GetStarName = (StarData star) => star.displayName;

	public static Func<PlanetData, string> GetPlanetName = (PlanetData planet) => planet.displayName;

	internal static List<CruiseAssistExtensionAPI> extensions = new List<CruiseAssistExtensionAPI>();

	private Harmony harmony;

	public void Awake()
	{
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Expected O, but got Unknown
		LogManager.Logger = ((BaseUnityPlugin)this).Logger;
		new CruiseAssistConfigManager(((BaseUnityPlugin)this).Config);
		ConfigManager.CheckConfig(ConfigManager.Step.AWAKE);
		harmony = new Harmony("tanu.CruiseAssist.Patch");
		harmony.PatchAll(typeof(Patch_GameMain));
		harmony.PatchAll(typeof(Patch_UISailPanel));
		harmony.PatchAll(typeof(Patch_UIStarmap));
		harmony.PatchAll(typeof(Patch_UITechTree));
		harmony.PatchAll(typeof(Patch_PlayerMoveWalk));
		harmony.PatchAll(typeof(Patch_PlayerMoveDrift));
		harmony.PatchAll(typeof(Patch_PlayerMoveFly));
		harmony.PatchAll(typeof(Patch_PlayerMoveSail));
	}

	public void OnDestroy()
	{
		harmony.UnpatchSelf();
	}

	public static void RegistExtension(CruiseAssistExtensionAPI extension)
	{
		extensions.Add(extension);
	}

	public static void UnregistExtension(Type type)
	{
		extensions.RemoveAll((CruiseAssistExtensionAPI extension) => extension.GetType().FullName == type.FullName);
	}

	public void OnGUI()
	{
		//IL_017e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0183: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0226: Unknown result type (might be due to invalid IL or missing references)
		//IL_025d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0284: Unknown result type (might be due to invalid IL or missing references)
		if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null || UIMechaEditor.isOpened)
		{
			return;
		}
		UIGame uiGame = UIRoot.instance.uiGame;
		if (uiGame.guideComplete && !((ManualBehaviour)uiGame.techTree).active && !((ManualBehaviour)uiGame.escMenu).active && !((ManualBehaviour)uiGame.dysonEditor).active && !uiGame.hideAllUI0 && !uiGame.hideAllUI1 && (!((Object)(object)UIMilkyWayLoadingSplash.instance != (Object)null) || !((ManualBehaviour)UIMilkyWayLoadingSplash.instance).active) && (!((Object)(object)UIRoot.instance.uiMilkyWay != (Object)null) || !((ManualBehaviour)UIRoot.instance.uiMilkyWay).active) && (GameMain.mainPlayer.sailing || ((ManualBehaviour)uiGame.starmap).active || (Conf.ShowMainWindowWhenTargetSelectedEvenNotSailModeFlag && TargetSelected)))
		{
			if (Seed != GameMain.galaxy.seed)
			{
				ConfigManager.CheckConfig(ConfigManager.Step.CHANGE_SEED);
			}
			CruiseAssistMainUI.wIdx = (((ManualBehaviour)uiGame.starmap).active ? 1 : 0);
			float num = CruiseAssistMainUI.Scale / 100f;
			GUIUtility.ScaleAroundPivot(new Vector2(num, num), Vector2.zero);
			CruiseAssistMainUI.OnGUI();
			if (CruiseAssistStarListUI.Show[CruiseAssistMainUI.wIdx])
			{
				CruiseAssistStarListUI.OnGUI();
			}
			if (CruiseAssistConfigUI.Show[CruiseAssistMainUI.wIdx])
			{
				CruiseAssistConfigUI.OnGUI();
			}
			if (CruiseAssistDebugUI.Show)
			{
				CruiseAssistDebugUI.OnGUI();
			}
			bool flag = ResetInput(CruiseAssistMainUI.Rect[CruiseAssistMainUI.wIdx], num);
			if (!flag && CruiseAssistStarListUI.Show[CruiseAssistMainUI.wIdx])
			{
				flag = ResetInput(CruiseAssistStarListUI.Rect[CruiseAssistMainUI.wIdx], num);
			}
			if (!flag && CruiseAssistConfigUI.Show[CruiseAssistMainUI.wIdx])
			{
				flag = ResetInput(CruiseAssistConfigUI.Rect[CruiseAssistMainUI.wIdx], num);
			}
			if (!flag && CruiseAssistDebugUI.Show)
			{
				flag = ResetInput(CruiseAssistDebugUI.Rect, num);
			}
			extensions.ForEach(delegate(CruiseAssistExtensionAPI extension)
			{
				extension.OnGUI();
			});
		}
	}

	private bool ResetInput(Rect rect, float scale)
	{
		//IL_0029: Unknown result type (might be due to invalid IL or missing references)
		//IL_003b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0092: Unknown result type (might be due to invalid IL or missing references)
		float num = ((Rect)(ref rect)).xMin * scale;
		float num2 = ((Rect)(ref rect)).xMax * scale;
		float num3 = ((Rect)(ref rect)).yMin * scale;
		float num4 = ((Rect)(ref rect)).yMax * scale;
		float x = Input.mousePosition.x;
		float num5 = (float)Screen.height - Input.mousePosition.y;
		if (num <= x && x <= num2 && num3 <= num5 && num5 <= num4)
		{
			int[] source = new int[3] { 0, 1, 2 };
			if (((IEnumerable<int>)source).Any((Func<int, bool>)Input.GetMouseButton) || Input.mouseScrollDelta.y != 0f)
			{
				Input.ResetInputAxes();
				return true;
			}
		}
		return false;
	}
}
public class CruiseAssistStarListUI
{
	private static int wIdx = 0;

	public const float WindowWidth = 400f;

	public const float WindowHeight = 480f;

	public static bool[] Show = new bool[2];

	public static Rect[] Rect = (Rect[])(object)new Rect[2]
	{
		new Rect(0f, 0f, 400f, 480f),
		new Rect(0f, 0f, 400f, 480f)
	};

	public static int ListSelected = 0;

	public static int[] actionSelected = new int[3];

	private static float[] lastCheckWindowLeft = new float[2]
	{
		float.MinValue,
		float.MinValue
	};

	private static float[] lastCheckWindowTop = new float[2]
	{
		float.MinValue,
		float.MinValue
	};

	private static Vector2[] scrollPos = (Vector2[])(object)new Vector2[3]
	{
		Vector2.zero,
		Vector2.zero,
		Vector2.zero
	};

	private const string VisitedMark = "● ";

	private const string NonVisitMark = "";

	public static void OnGUI()
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Expected O, but got Unknown
		//IL_0044: Unknown result type (might be due to invalid IL or missing references)
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		wIdx = CruiseAssistMainUI.wIdx;
		Rect[wIdx] = GUILayout.Window(99030292, Rect[wIdx], new WindowFunction(WindowFunction), "CruiseAssist - StarList", CruiseAssistMainUI.WindowStyle, Array.Empty<GUILayoutOption>());
		float num = CruiseAssistMainUI.Scale / 100f;
		if ((float)Screen.width / num < ((Rect)(ref Rect[wIdx])).xMax)
		{
			((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num - ((Rect)(ref Rect[wIdx])).width;
		}
		if (((Rect)(ref Rect[wIdx])).x < 0f)
		{
			((Rect)(ref Rect[wIdx])).x = 0f;
		}
		if ((float)Screen.height / num < ((Rect)(ref Rect[wIdx])).yMax)
		{
			((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num - ((Rect)(ref Rect[wIdx])).height;
		}
		if (((Rect)(ref Rect[wIdx])).y < 0f)
		{
			((Rect)(ref Rect[wIdx])).y = 0f;
		}
		if (lastCheckWindowLeft[wIdx] != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft[wIdx] || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop[wIdx]))
		{
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		lastCheckWindowLeft[wIdx] = ((Rect)(ref Rect[wIdx])).x;
		lastCheckWindowTop[wIdx] = ((Rect)(ref Rect[wIdx])).y;
	}

	public static void WindowFunction(int windowId)
	{
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Expected O, but got Unknown
		//IL_0097: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Expected O, but got Unknown
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0112: Unknown result type (might be due to invalid IL or missing references)
		//IL_0122: Unknown result type (might be due to invalid IL or missing references)
		//IL_012c: Expected O, but got Unknown
		//IL_0170: Unknown result type (might be due to invalid IL or missing references)
		//IL_017a: Expected O, but got Unknown
		//IL_01be: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c8: Expected O, but got Unknown
		//IL_01df: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e9: Expected O, but got Unknown
		//IL_0232: Unknown result type (might be due to invalid IL or missing references)
		//IL_023c: Expected O, but got Unknown
		//IL_0255: Unknown result type (might be due to invalid IL or missing references)
		//IL_025f: Expected O, but got Unknown
		//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b2: Expected O, but got Unknown
		//IL_0420: Unknown result type (might be due to invalid IL or missing references)
		//IL_0427: Expected O, but got Unknown
		//IL_04df: Unknown result type (might be due to invalid IL or missing references)
		//IL_05a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0553: Unknown result type (might be due to invalid IL or missing references)
		//IL_05ca: Unknown result type (might be due to invalid IL or missing references)
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
		GUIStyle val = new GUIStyle(CruiseAssistMainUI.BaseToolbarButtonStyle);
		val.fixedWidth = 80f;
		val.fixedHeight = 20f;
		val.fontSize = 12;
		string[] array = new string[3] { "Normal", "History", "Bookmark" };
		GUI.changed = false;
		int num = GUILayout.Toolbar(ListSelected, array, val, Array.Empty<GUILayoutOption>());
		if (GUI.changed)
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
		}
		if (num != ListSelected)
		{
			ListSelected = num;
			CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
		}
		GUILayout.EndHorizontal();
		GUIStyle val2 = new GUIStyle(CruiseAssistMainUI.BaseVerticalScrollBarStyle);
		scrollPos[ListSelected] = GUILayout.BeginScrollView(scrollPos[ListSelected], GUIStyle.none, val2, Array.Empty<GUILayoutOption>());
		GUIStyle nameLabelStyle = new GUIStyle(GUI.skin.label);
		nameLabelStyle.fixedWidth = 240f;
		nameLabelStyle.stretchHeight = true;
		nameLabelStyle.fontSize = 14;
		nameLabelStyle.alignment = (TextAnchor)3;
		GUIStyle nRangeLabelStyle = new GUIStyle(GUI.skin.label);
		nRangeLabelStyle.fixedWidth = 60f;
		nRangeLabelStyle.fixedHeight = 20f;
		nRangeLabelStyle.fontSize = 14;
		nRangeLabelStyle.alignment = (TextAnchor)5;
		GUIStyle hRangeLabelStyle = new GUIStyle(nRangeLabelStyle);
		hRangeLabelStyle.fixedHeight = 40f;
		GUIStyle nActionButtonStyle = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle);
		nActionButtonStyle.fixedWidth = 40f;
		nActionButtonStyle.fixedHeight = 18f;
		nActionButtonStyle.margin.top = 6;
		nActionButtonStyle.fontSize = 12;
		GUIStyle hActionButtonStyle = new GUIStyle(nActionButtonStyle);
		hActionButtonStyle.margin.top = 16;
		GUIStyle nSortButtonStyle = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle);
		nSortButtonStyle.fixedWidth = 20f;
		nSortButtonStyle.fixedHeight = 18f;
		nSortButtonStyle.margin.top = 6;
		nSortButtonStyle.fontSize = 12;
		GUIStyle hSortButtonStyle = new GUIStyle(nSortButtonStyle);
		hSortButtonStyle.margin.top = 16;
		if (ListSelected == 0)
		{
			CollectionExtensions.Do<Tuple<StarData, double>>((IEnumerable<Tuple<StarData, double>>)(from tuple in GameMain.galaxy.stars.Select(delegate(StarData star)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_000c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					VectorLF3 val8 = star.uPosition - GameMain.mainPlayer.uPosition;
					return new Tuple<StarData, double>(star, ((VectorLF3)(ref val8)).magnitude);
				})
				orderby tuple.v2
				select tuple), (Action<Tuple<StarData, double>>)delegate(Tuple<StarData, double> tuple)
			{
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_0197: Unknown result type (might be due to invalid IL or missing references)
				//IL_0107: Unknown result type (might be due to invalid IL or missing references)
				//IL_0111: Unknown result type (might be due to invalid IL or missing references)
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_011b: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
				//IL_027b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0290: Expected O, but got Unknown
				//IL_0314: Unknown result type (might be due to invalid IL or missing references)
				StarData star3 = tuple.v1;
				double range = tuple.v2;
				string starName = CruiseAssistPlugin.GetStarName(star3);
				bool flag3 = false;
				if (GameMain.localStar != null && star3.id == GameMain.localStar.id)
				{
					flag3 = true;
				}
				else if (CruiseAssistPlugin.SelectTargetStar != null && star3.id == CruiseAssistPlugin.SelectTargetStar.id && GameMain.history.universeObserveLevel >= ((range >= 14400000.0) ? 4 : 3))
				{
					flag3 = true;
				}
				if (flag3)
				{
					IEnumerable<Tuple<PlanetData, double>> enumerable4 = star3.planets.Select(delegate(PlanetData planet)
					{
						//IL_0002: Unknown result type (might be due to invalid IL or missing references)
						//IL_000c: Unknown result type (might be due to invalid IL or missing references)
						//IL_0011: Unknown result type (might be due to invalid IL or missing references)
						//IL_0016: Unknown result type (might be due to invalid IL or missing references)
						VectorLF3 val7 = planet.uPosition - GameMain.mainPlayer.uPosition;
						return new Tuple<PlanetData, double>(planet, ((VectorLF3)(ref val7)).magnitude);
					});
					VectorLF3 val6 = star3.uPosition - GameMain.mainPlayer.uPosition;
					CollectionExtensions.Do<Tuple<PlanetData, double>>((IEnumerable<Tuple<PlanetData, double>>)(from tuple2 in CollectionExtensions.AddItem<Tuple<PlanetData, double>>(enumerable4, new Tuple<PlanetData, double>(null, ((VectorLF3)(ref val6)).magnitude))
						orderby tuple2.v2
						select tuple2), (Action<Tuple<PlanetData, double>>)delegate(Tuple<PlanetData, double> tuple2)
					{
						//IL_002c: Unknown result type (might be due to invalid IL or missing references)
						//IL_0047: Unknown result type (might be due to invalid IL or missing references)
						//IL_01af: Unknown result type (might be due to invalid IL or missing references)
						//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
						//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
						//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
						//IL_0246: Unknown result type (might be due to invalid IL or missing references)
						//IL_0260: Expected O, but got Unknown
						//IL_0156: Unknown result type (might be due to invalid IL or missing references)
						//IL_0170: Expected O, but got Unknown
						//IL_0322: Unknown result type (might be due to invalid IL or missing references)
						GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
						PlanetData v = tuple2.v1;
						double v2 = tuple2.v2;
						nameLabelStyle.normal.textColor = Color.white;
						nRangeLabelStyle.normal.textColor = Color.white;
						float num5;
						if (v == null)
						{
							if (CruiseAssistPlugin.SelectTargetPlanet == null && CruiseAssistPlugin.SelectTargetStar != null && star3.id == CruiseAssistPlugin.SelectTargetStar.id)
							{
								nameLabelStyle.normal.textColor = Color.cyan;
								nRangeLabelStyle.normal.textColor = Color.cyan;
							}
							string text6 = starName;
							if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
							{
								text6 = ((star3.planets.Where((PlanetData p) => p.factory != null).Count() > 0) ? "● " : "") + text6;
							}
							GUILayout.Label(text6, nameLabelStyle, Array.Empty<GUILayoutOption>());
							num5 = nameLabelStyle.CalcHeight(new GUIContent(text6), nameLabelStyle.fixedWidth);
						}
						else
						{
							if (CruiseAssistPlugin.SelectTargetPlanet != null && v.id == CruiseAssistPlugin.SelectTargetPlanet.id)
							{
								nameLabelStyle.normal.textColor = Color.cyan;
								nRangeLabelStyle.normal.textColor = Color.cyan;
							}
							string text7 = starName + " - " + CruiseAssistPlugin.GetPlanetName(v);
							if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
							{
								text7 = ((v.factory != null) ? "● " : "") + text7;
							}
							GUILayout.Label(text7, nameLabelStyle, Array.Empty<GUILayoutOption>());
							num5 = nameLabelStyle.CalcHeight(new GUIContent(text7), nameLabelStyle.fixedWidth);
						}
						GUILayout.FlexibleSpace();
						GUILayout.Label(CruiseAssistMainUI.RangeToString((v == null) ? range : v2), (num5 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>());
						string text8 = ((actionSelected[ListSelected] == 0) ? "SET" : ((v == null) ? "-" : (CruiseAssistPlugin.Bookmark.Contains(v.id) ? "DEL" : "ADD")));
						if (GUILayout.Button(text8, (num5 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>()))
						{
							VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
							if (actionSelected[ListSelected] == 0)
							{
								SelectStar(star3, v);
								if (CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag)
								{
									Show[wIdx] = false;
								}
							}
							else if (v != null)
							{
								if (CruiseAssistPlugin.Bookmark.Contains(v.id))
								{
									CruiseAssistPlugin.Bookmark.Remove(v.id);
								}
								else if (CruiseAssistPlugin.Bookmark.Count <= 128)
								{
									CruiseAssistPlugin.Bookmark.Add(v.id);
									CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
								}
							}
						}
						GUILayout.EndHorizontal();
					});
				}
				else
				{
					GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
					nameLabelStyle.normal.textColor = Color.white;
					nRangeLabelStyle.normal.textColor = Color.white;
					if (CruiseAssistPlugin.SelectTargetStar != null && star3.id == CruiseAssistPlugin.SelectTargetStar.id)
					{
						nameLabelStyle.normal.textColor = Color.cyan;
						nRangeLabelStyle.normal.textColor = Color.cyan;
					}
					string text4 = starName;
					if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
					{
						text4 = ((star3.planets.Where((PlanetData p) => p.factory != null).Count() > 0) ? "● " : "") + text4;
					}
					GUILayout.Label(text4, nameLabelStyle, Array.Empty<GUILayoutOption>());
					float num4 = nameLabelStyle.CalcHeight(new GUIContent(text4), nameLabelStyle.fixedWidth);
					GUILayout.FlexibleSpace();
					GUILayout.Label(CruiseAssistMainUI.RangeToString(range), (num4 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>());
					string text5 = ((actionSelected[ListSelected] == 0) ? "SET" : "-");
					if (GUILayout.Button(text5, (num4 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>()))
					{
						VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
						if (actionSelected[ListSelected] == 0)
						{
							SelectStar(star3, null);
						}
					}
					GUILayout.EndHorizontal();
				}
			});
		}
		else if (ListSelected == 1 || ListSelected == 2)
		{
			bool highlighted = false;
			IEnumerable<int> enumerable2;
			if (ListSelected != 1)
			{
				IEnumerable<int> enumerable = CruiseAssistPlugin.Bookmark.ToList();
				enumerable2 = enumerable;
			}
			else
			{
				enumerable2 = Enumerable.Reverse(CruiseAssistPlugin.History);
			}
			IEnumerable<int> enumerable3 = enumerable2;
			if (ListSelected == 1 && actionSelected[ListSelected] != 2 && CruiseAssistPlugin.Conf.HideDuplicateHistoryFlag)
			{
				enumerable3 = enumerable3.Distinct();
			}
			int listIndex = -1;
			CollectionExtensions.Do<int>(enumerable3, (Action<int>)delegate(int id)
			{
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_017e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0198: Expected O, but got Unknown
				//IL_03d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_026c: Unknown result type (might be due to invalid IL or missing references)
				//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
				listIndex++;
				PlanetData val4 = GameMain.galaxy.PlanetById(id);
				if (val4 != null)
				{
					StarData star2 = val4.star;
					string text = CruiseAssistPlugin.GetStarName(star2);
					VectorLF3 val5 = val4.uPosition - GameMain.mainPlayer.uPosition;
					double magnitude = ((VectorLF3)(ref val5)).magnitude;
					nameLabelStyle.normal.textColor = Color.white;
					nRangeLabelStyle.normal.textColor = Color.white;
					if (!highlighted && CruiseAssistPlugin.SelectTargetPlanet != null && val4.id == CruiseAssistPlugin.SelectTargetPlanet.id)
					{
						nameLabelStyle.normal.textColor = Color.cyan;
						nRangeLabelStyle.normal.textColor = Color.cyan;
						highlighted = true;
					}
					GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
					string text2 = text + " - " + CruiseAssistPlugin.GetPlanetName(val4);
					if (CruiseAssistPlugin.Conf.MarkVisitedFlag)
					{
						text2 = ((val4.factory != null) ? "● " : "") + text2;
					}
					GUILayout.Label(text2, nameLabelStyle, Array.Empty<GUILayoutOption>());
					float num2 = nameLabelStyle.CalcHeight(new GUIContent(text2), nameLabelStyle.fixedWidth);
					GUILayout.FlexibleSpace();
					GUILayout.Label(CruiseAssistMainUI.RangeToString(magnitude), (num2 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>());
					if (ListSelected == 2 && actionSelected[ListSelected] == 1)
					{
						int num3 = CruiseAssistPlugin.Bookmark.IndexOf(id);
						bool flag = num3 == 0;
						bool flag2 = num3 == CruiseAssistPlugin.Bookmark.Count - 1;
						if (GUILayout.Button(flag2 ? "-" : "↓", (num2 < 30f) ? nSortButtonStyle : hSortButtonStyle, Array.Empty<GUILayoutOption>()))
						{
							VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
							if (!flag2)
							{
								CruiseAssistPlugin.Bookmark.RemoveAt(num3);
								CruiseAssistPlugin.Bookmark.Insert(num3 + 1, id);
							}
						}
						if (GUILayout.Button(flag ? "-" : "↑", (num2 < 30f) ? nSortButtonStyle : hSortButtonStyle, Array.Empty<GUILayoutOption>()))
						{
							VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
							if (!flag)
							{
								CruiseAssistPlugin.Bookmark.RemoveAt(num3);
								CruiseAssistPlugin.Bookmark.Insert(num3 - 1, id);
							}
						}
					}
					else
					{
						string text3 = ((actionSelected[ListSelected] == 0) ? "SET" : ((actionSelected[ListSelected] != 2) ? (CruiseAssistPlugin.Bookmark.Contains(id) ? "DEL" : "ADD") : ((ListSelected == 1 && listIndex == 0) ? "-" : "DEL")));
						if (GUILayout.Button(text3, (num2 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>()))
						{
							VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
							if (actionSelected[ListSelected] == 0)
							{
								SelectStar(star2, val4);
								if (CruiseAssistPlugin.Conf.CloseStarListWhenSetTargetPlanetFlag)
								{
									Show[wIdx] = false;
								}
							}
							else if (actionSelected[ListSelected] == 1)
							{
								if (ListSelected == 1)
								{
									if (CruiseAssistPlugin.Bookmark.Contains(id))
									{
										CruiseAssistPlugin.Bookmark.Remove(id);
									}
									else if (CruiseAssistPlugin.Bookmark.Count <= 128)
									{
										CruiseAssistPlugin.Bookmark.Add(id);
										CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
									}
								}
							}
							else if (actionSelected[ListSelected] == 2)
							{
								if (ListSelected == 1)
								{
									if (listIndex != 0)
									{
										CruiseAssistPlugin.History.RemoveAt(CruiseAssistPlugin.History.Count - 1 - listIndex);
										CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
									}
								}
								else if (ListSelected == 2)
								{
									CruiseAssistPlugin.Bookmark.Remove(val4.id);
									CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300;
								}
							}
						}
					}
					GUILayout.EndHorizontal();
				}
			});
		}
		GUILayout.EndScrollView();
		GUILayout.FlexibleSpace();
		GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
		GUIStyle val3 = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle);
		val3.fixedWidth = 80f;
		val3.fixedHeight = 20f;
		val3.fontSize = 12;
		string[][] array2 = new string[3][]
		{
			new string[2] { "Target", "Bookmark" },
			new string[3] { "Target", "Bookmark", "Delete" },
			new string[3] { "Target", "Sort", "Delete" }
		};
		if (GUILayout.Button(array2[ListSelected][actionSelected[ListSelected]], val3, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			actionSelected[ListSelected]++;
			actionSelected[ListSelected] %= array2[ListSelected].Length;
		}
		GUILayout.FlexibleSpace();
		if (!CruiseAssistPlugin.Conf.HideBottomCloseButtonFlag && GUILayout.Button("Close", val3, Array.Empty<GUILayoutOption>()))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			Show[wIdx] = false;
		}
		GUILayout.EndHorizontal();
		GUILayout.EndVertical();
		if (GUI.Button(new Rect(((Rect)(ref Rect[wIdx])).width - 16f, 1f, 16f, 16f), "", CruiseAssistMainUI.CloseButtonStyle))
		{
			VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L);
			Show[wIdx] = false;
		}
		GUI.DragWindow();
	}

	public static void SelectStar(StarData star, PlanetData planet)
	{
		CruiseAssistPlugin.SelectTargetStar = star;
		CruiseAssistPlugin.SelectTargetPlanet = planet;
		UIGame uiGame = UIRoot.instance.uiGame;
		if (CruiseAssistPlugin.Conf.SelectFocusFlag && ((ManualBehaviour)uiGame.starmap).active)
		{
			if (star != null)
			{
				UIStarmapStar val = uiGame.starmap.starUIs.Where((UIStarmapStar s) => s.star.id == star.id).FirstOrDefault();
				if ((Object)(object)val != (Object)null)
				{
					UIStarmap_OnStarClick(uiGame.starmap, val);
					uiGame.starmap.OnCursorFunction2Click(0);
				}
			}
			if (planet != null)
			{
				UIStarmapPlanet val2 = uiGame.starmap.planetUIs.Where((UIStarmapPlanet p) => p.planet.id == planet.id).FirstOrDefault();
				if ((Object)(object)val2 != (Object)null)
				{
					UIStarmap_OnPlanetClick(uiGame.starmap, val2);
					uiGame.starmap.OnCursorFunction2Click(0);
				}
			}
		}
		if (planet != null)
		{
			GameMain.mainPlayer.navigation.indicatorAstroId = planet.id;
		}
		else if (star != null)
		{
			GameMain.mainPlayer.navigation.indicatorAstroId = star.id * 100;
		}
		else
		{
			GameMain.mainPlayer.navigation.indicatorAstroId = 0;
		}
		CruiseAssistPlugin.SelectTargetAstroId = GameMain.mainPlayer.navigation.indicatorAstroId;
		CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension)
		{
			extension.SetTargetAstroId(CruiseAssistPlugin.SelectTargetAstroId);
		});
	}

	private static void UIStarmap_OnStarClick(UIStarmap starmap, UIStarmapStar star)
	{
		Traverse val = Traverse.Create((object)starmap);
		if ((Object)(object)starmap.focusStar != (Object)(object)star)
		{
			if (starmap.viewPlanet != null || (starmap.viewStar != null && star.star != starmap.viewStar))
			{
				starmap.screenCameraController.DisablePositionLock();
			}
			starmap.focusPlanet = null;
			starmap.focusStar = star;
			val.Field("_lastClickTime").SetValue((object)0.0);
		}
		val.Field("forceUpdateCursorView").SetValue((object)true);
	}

	private static void UIStarmap_OnPlanetClick(UIStarmap starmap, UIStarmapPlanet planet)
	{
		Traverse val = Traverse.Create((object)starmap);
		if ((Object)(object)starmap.focusPlanet != (Object)(object)planet)
		{
			if ((starmap.viewPlanet != null && planet.planet != starmap.viewPlanet) || starmap.viewStar != null)
			{
				starmap.screenCameraController.DisablePositionLock();
			}
			starmap.focusPlanet = planet;
			starmap.focusStar = null;
			val.Field("_lastClickTime").SetValue((object)0.0);
		}
		val.Field("forceUpdateCursorView").SetValue((object)true);
	}
}
public enum CruiseAssistState
{
	TO_STAR,
	TO_PLANET,
	INACTIVE
}
internal class EnumUtils
{
	public static bool TryParse<TEnum>(string value, out TEnum result) where TEnum : struct
	{
		if (value == null || !Enum.IsDefined(typeof(TEnum), value))
		{
			result = (TEnum)Enum.GetValues(typeof(TEnum)).GetValue(0);
			return false;
		}
		result = (TEnum)Enum.Parse(typeof(TEnum), value);
		return true;
	}
}
internal class ListUtils
{
	public static string ToString(List<int> list)
	{
		if (list == null || list.Count == 0)
		{
			return "";
		}
		return list.Select((int id) => id.ToString()).Aggregate((string a, string b) => a + "," + b);
	}

	public static string ToString(List<string> list)
	{
		if (list == null || list.Count == 0)
		{
			return "";
		}
		return list.Aggregate((string a, string b) => a + "," + b);
	}

	public static List<int> ParseToIntList(string str)
	{
		if (str == null || str.Length == 0)
		{
			return new List<int>();
		}
		int result;
		return (from s in str.Split(new char[1] { ',' })
			where int.TryParse(s, out result)
			select s).Select(int.Parse).ToList();
	}

	public static List<string> ParseToStringList(string str)
	{
		if (str == null || str.Length == 0)
		{
			return new List<string>();
		}
		return str.Split(new char[1] { ',' }).ToList();
	}
}
internal static class LogManager
{
	public static ManualLogSource Logger { private get; set; }

	public static void LogInfo(object data)
	{
		Logger.LogInfo(data);
	}

	public static void LogInfo(MethodBase method)
	{
		Logger.LogInfo((object)(method.DeclaringType.Name + "." + method.Name));
	}

	public static void LogInfo(MethodBase method, object data)
	{
		Logger.LogInfo((object)(method.DeclaringType.Name + "." + method.Name + ": " + data));
	}

	public static void LogError(object data)
	{
		Logger.LogError(data);
	}

	public static void LogError(MethodBase method, object data)
	{
		Logger.LogError((object)(method.DeclaringType.Name + "." + method.Name + ": " + data));
	}
}
[HarmonyPatch(typeof(GameMain))]
internal class Patch_GameMain
{
	[HarmonyPatch("Begin")]
	[HarmonyPostfix]
	public static void Begin_Postfix()
	{
		ConfigManager.CheckConfig(ConfigManager.Step.GAME_MAIN_BEGIN);
		CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension)
		{
			extension.CheckConfig(ConfigManager.Step.GAME_MAIN_BEGIN.ToString());
		});
	}

	[HarmonyPatch("Pause")]
	[HarmonyPrefix]
	public static void Pause_Prefix()
	{
		ConfigManager.CheckConfig(ConfigManager.Step.STATE);
		CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension)
		{
			extension.CheckConfig(ConfigManager.Step.STATE.ToString());
		});
	}
}
[HarmonyPatch(typeof(PlayerMove_Drift))]
internal class Patch_PlayerMoveDrift
{
	[HarmonyPatch("GameTick")]
	[HarmonyPrefix]
	public static void GameTick_Prefix(PlayerMove_Drift __instance)
	{
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004b: Invalid comparison between Unknown and I4
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: Unknown result type (might be due to invalid IL or missing references)
		if (!CruiseAssistPlugin.Enable || !CruiseAssistPlugin.TargetSelected || (int)((PlayerAction)__instance).controller.movementStateInFrame != 1)
		{
			return;
		}
		if (VFInput._moveForward.pressing || VFInput._pullUp.pressing)
		{
			CruiseAssistPlugin.Int