Decompiled source of StarMapTools v2.0.1

StarMapTools.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using HarmonyLib;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("StarMapTools")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("StarMapTools")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("bf224048-4020-497b-b3a4-3a83f0a2990a")]
[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 StarMapTools;

internal class Drag : MonoBehaviour
{
	private RectTransform rt;

	private RectTransform parent;

	private RectTransform canvas;

	private Vector3 lastPosition;

	private bool drag = false;

	private void Start()
	{
		rt = ((Component)this).GetComponent<RectTransform>();
		parent = ((Component)((Transform)rt).parent).GetComponent<RectTransform>();
		canvas = ((Component)((Transform)parent).parent).GetComponent<RectTransform>();
	}

	private void Update()
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0023: Unknown result type (might be due to invalid IL or missing references)
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002d: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_005f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0091: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_012d: 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_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Unknown result type (might be due to invalid IL or missing references)
		//IL_016c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0171: Unknown result type (might be due to invalid IL or missing references)
		//IL_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_0178: Unknown result type (might be due to invalid IL or missing references)
		//IL_017d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		//IL_018a: Unknown result type (might be due to invalid IL or missing references)
		Vector3 val = Input.mousePosition - new Vector3((float)Screen.width / 2f, (float)Screen.height / 2f, 0f);
		val.x *= canvas.sizeDelta.x / (float)Screen.width;
		val.y *= canvas.sizeDelta.y / (float)Screen.height;
		if (Input.GetMouseButtonDown(0))
		{
			Vector3 val2 = ((Transform)parent).localPosition + ((Transform)rt).localPosition;
			Rect rect = rt.rect;
			if (val.x >= val2.x - ((Rect)(ref rect)).width / 2f && val.x <= val2.x + ((Rect)(ref rect)).width / 2f && val.y >= val2.y - ((Rect)(ref rect)).height / 2f && val.y <= val2.y + ((Rect)(ref rect)).height / 2f)
			{
				drag = true;
				lastPosition = val;
			}
		}
		if (drag && !Input.GetMouseButton(0))
		{
			drag = false;
		}
		if (drag)
		{
			RectTransform obj = parent;
			((Transform)obj).localPosition = ((Transform)obj).localPosition + (val - lastPosition);
			lastPosition = val;
		}
	}
}
[BepInPlugin("sky.plugins.dsp.StarMapTools", "StarMapTools", "2.0.1")]
public class StarMapTools : BaseUnityPlugin
{
	[CompilerGenerated]
	private sealed class <wait>d__19 : IEnumerator<object>, IDisposable, IEnumerator
	{
		private int <>1__state;

		private object <>2__current;

		public object target;

		public StarMapTools <>4__this;

		object IEnumerator<object>.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		object IEnumerator.Current
		{
			[DebuggerHidden]
			get
			{
				return <>2__current;
			}
		}

		[DebuggerHidden]
		public <wait>d__19(int <>1__state)
		{
			this.<>1__state = <>1__state;
		}

		[DebuggerHidden]
		void IDisposable.Dispose()
		{
			<>1__state = -2;
		}

		private bool MoveNext()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_014e: Unknown result type (might be due to invalid IL or missing references)
			switch (<>1__state)
			{
			default:
				return false;
			case 0:
				<>1__state = -1;
				<>2__current = (object)new WaitForEndOfFrame();
				<>1__state = 1;
				return true;
			case 1:
				<>1__state = -1;
				if (target is PlanetData)
				{
					GameMain.mainPlayer.uPosition = ((PlanetData)target).uPosition + VectorLF3.unit_z * (double)((PlanetData)target).realRadius;
				}
				else if (target is StarData)
				{
					GameMain.mainPlayer.uPosition = ((StarData)target).uPosition + VectorLF3.unit_z * (double)((StarData)target).physicsRadius;
					<>4__this.loadingStarData = true;
				}
				else if (target is VectorLF3)
				{
					GameMain.mainPlayer.uPosition = (VectorLF3)target;
				}
				else if (target is string && (string)target == "resize")
				{
					GameMain.mainPlayer.transform.localScale = Vector3.one;
				}
				if (!(target is string) || (string)target != "resize")
				{
					((MonoBehaviour)<>4__this).StartCoroutine(<>4__this.wait("resize"));
				}
				return false;
			}
		}

		bool IEnumerator.MoveNext()
		{
			//ILSpy generated this explicit interface implementation from .override directive in MoveNext
			return this.MoveNext();
		}

		[DebuggerHidden]
		void IEnumerator.Reset()
		{
			throw new NotSupportedException();
		}
	}

	private static HashSet<int> tempids = new HashSet<int>();

	public static bool IsEnglish;

	private GameObject prefab_StarMapToolsBasePanel;

	private GameObject ui_StarMapToolsBasePanel;

	public Dropdown StarList;

	public Dropdown PlanetList;

	private Text TitleText;

	private InputField InfoText;

	private Toggle LoadResAmount;

	private bool dataLoadOver = false;

	public bool showGUI = false;

	private bool loadingStarData = false;

	public GalaxyData galaxy;

	private KeyCode switchGUIKey;

	private KeyCode tpKey;

	private List<StarSearcher> starSearchers = new List<StarSearcher>();

	private Button AddSearcherButton;

	private Button RemoveSearcherButton;

	private Dropdown SearcherList;

	private ScrollRect OptionsList;

	private Toggle SearchNextToggle;

	private Toggle RandomSearchToggle;

	private InputField DysonLuminoText;

	private InputField DistanceText;

	public Dropdown ResultList;

	private Toggle VeinGroupToggle;

	private Toggle VeinPGroupToggle;

	private InputField VeinAmountText;

	private Text PrePosText;

	private Vector3 PrePos = Vector3.zero;

	private LineRenderer PrePosLine;

	private Dropdown BaseSkinDropDown;

	private Button SetBaseButton;

	private Button ChangeButton;

	private Button RemoveVeinButton;

	private Button AddVeinButton;

	private Button SearchButton;

	private bool SearchNext = false;

	private List<StarData> SerachResult = new List<StarData>();

	public static StarMapTools Instance;

	private List<Toggle> StarTypesToggleList;

	private List<RectTransform> PlanteTypesNumLabelList;

	private List<RectTransform> SingularityTypesNumLabelList;

	private List<Toggle> VeinTypesToggleList;

	private void Start()
	{
		//IL_0043: 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_0072: Unknown result type (might be due to invalid IL or missing references)
		//IL_0077: Unknown result type (might be due to invalid IL or missing references)
		Instance = this;
		Harmony.CreateAndPatchAll(typeof(StarMapToolsPatch), (string)null);
		StarMapToolsTranslate.regAllTranslate();
		switchGUIKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("config", "switchGUI", (KeyCode)282, "开关GUI的按键".getTranslate()).Value;
		tpKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("config", "tp", (KeyCode)283, "传送按键".getTranslate()).Value;
		AssetBundle val = AssetBundle.LoadFromStream(Assembly.GetExecutingAssembly().GetManifestResourceStream("StarMapTools.starmaptools"));
		prefab_StarMapToolsBasePanel = val.LoadAsset<GameObject>("StarMapToolsBasePanel");
	}

	private void Update()
	{
		if (dataLoadOver)
		{
			HandleInput();
			if (!showGUI)
			{
				return;
			}
			HandleGameMode();
			if (loadingStarData)
			{
				StarData val = galaxy.StarById(StarList.value + 1);
				if (val.loaded || !LoadResAmount.isOn)
				{
					loadingStarData = false;
				}
				PlanetList.value = -1;
				PlanetList.RefreshShownValue();
			}
		}
		else
		{
			TryInit();
		}
	}

	private void HandleInput()
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		if (Input.GetKeyDown(switchGUIKey))
		{
			showGUI = !showGUI;
		}
		if ((showGUI && !ui_StarMapToolsBasePanel.activeSelf) || (!showGUI && ui_StarMapToolsBasePanel.activeSelf))
		{
			ui_StarMapToolsBasePanel.SetActive(!ui_StarMapToolsBasePanel.activeSelf);
			if (!ui_StarMapToolsBasePanel.activeSelf && (Object)(object)PrePosLine != (Object)null && ((Component)PrePosLine).gameObject.activeSelf)
			{
				((Component)PrePosLine).gameObject.SetActive(false);
			}
		}
	}

	private void HandleGameMode()
	{
		//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0305: Unknown result type (might be due to invalid IL or missing references)
		//IL_030f: Expected O, but got Unknown
		//IL_0327: Unknown result type (might be due to invalid IL or missing references)
		//IL_0281: Unknown result type (might be due to invalid IL or missing references)
		//IL_028b: Expected O, but got Unknown
		//IL_038e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0393: Unknown result type (might be due to invalid IL or missing references)
		//IL_018e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0198: Expected O, but got Unknown
		//IL_043f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0444: Unknown result type (might be due to invalid IL or missing references)
		//IL_03eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_0415: Unknown result type (might be due to invalid IL or missing references)
		//IL_041a: Unknown result type (might be due to invalid IL or missing references)
		//IL_054e: 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_0565: Unknown result type (might be due to invalid IL or missing references)
		//IL_056a: Unknown result type (might be due to invalid IL or missing references)
		//IL_04fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_0510: Unknown result type (might be due to invalid IL or missing references)
		if (UIRoot.instance.galaxySelect.starmap.galaxyData != null)
		{
			if (SearchNext && SearchNextToggle.isOn)
			{
				LoadResAmount.isOn = false;
				if (RandomSearchToggle.isOn)
				{
					UIRoot.instance.galaxySelect.Rerand();
				}
				else
				{
					GameDesc value = Traverse.Create((object)UIRoot.instance.galaxySelect).Field("gameDesc").GetValue<GameDesc>();
					InputField value2 = Traverse.Create((object)UIRoot.instance.galaxySelect).Field("seedInput").GetValue<InputField>();
					int galaxySeed = value.galaxySeed;
					galaxySeed++;
					value2.text = galaxySeed.ToString();
					value.galaxySeed = galaxySeed;
					UIRoot.instance.galaxySelect.SetStarmapGalaxy();
				}
			}
			else
			{
				SearchNext = false;
			}
			if (galaxy != UIRoot.instance.galaxySelect.starmap.galaxyData)
			{
				TitleText.text = "新游戏模式".getTranslate();
				galaxy = UIRoot.instance.galaxySelect.starmap.galaxyData;
				StarList.ClearOptions();
				ResultList.ClearOptions();
				StarData[] stars = galaxy.stars;
				foreach (StarData val in stars)
				{
					StarList.options.Add(new OptionData(val.displayName));
				}
				StarList.value = -1;
				StarList.RefreshShownValue();
				if (SearchNext)
				{
					((UnityEvent)SearchButton.onClick).Invoke();
				}
			}
		}
		else if (GameMain.galaxy != null)
		{
			SearchNext = false;
			if (galaxy != GameMain.galaxy)
			{
				TitleText.text = "读档模式".getTranslate();
				galaxy = GameMain.galaxy;
				StarList.ClearOptions();
				ResultList.ClearOptions();
				StarData[] stars2 = galaxy.stars;
				foreach (StarData val2 in stars2)
				{
					StarList.options.Add(new OptionData(val2.displayName));
				}
				StarList.value = -1;
				StarList.RefreshShownValue();
			}
			if (Input.GetKeyDown(tpKey))
			{
				UIRoot.instance.uiGame.buildMenu.SetCurrentCategory(0);
				object obj = galaxy.StarById(StarList.value + 1);
				GameMain.data.ArriveStar((StarData)obj);
				if (PlanetList.value > 0)
				{
					obj = ((StarData)obj).planets[PlanetList.value - 1];
				}
				((MonoBehaviour)this).StartCoroutine(wait(obj));
			}
			if ((Input.GetKeyDown((KeyCode)308) && Input.GetKey((KeyCode)306)) || (Input.GetKey((KeyCode)308) && Input.GetKeyDown((KeyCode)306)))
			{
				PrePos = Vector3.zero;
				PrePosText.text = "无预设坐标";
			}
			if (Input.GetMouseButtonDown(0) && Input.GetKey((KeyCode)308) && Input.GetKey((KeyCode)306) && GameMain.localPlanet != null)
			{
				Ray val3 = GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition);
				RaycastHit val4 = default(RaycastHit);
				if (Physics.Raycast(val3, ref val4, 800f, 8720, (QueryTriggerInteraction)2))
				{
					PrePos = ((RaycastHit)(ref val4)).point;
					PrePosText.text = ((object)(Vector3)(ref PrePos)).ToString();
				}
			}
			if (PrePos != Vector3.zero && GameMain.localPlanet != null)
			{
				if ((Object)(object)PrePosLine == (Object)null)
				{
					UIPowerGizmo powerGizmo = UIRoot.instance.uiGame.powerGizmo;
					LineRenderer value3 = Traverse.Create((object)powerGizmo).Field("lineGizmoPrefab").GetValue<LineRenderer>();
					PrePosLine = Object.Instantiate<LineRenderer>(value3, GameMain.mainPlayer.transform.parent);
				}
				if ((Object)(object)PrePosLine != (Object)null)
				{
					((Component)PrePosLine).transform.SetParent(GameMain.mainPlayer.transform.parent);
					PrePosLine.SetPosition(0, GameMain.mainPlayer.position);
					PrePosLine.SetPosition(1, PrePos);
					if (!((Component)PrePosLine).gameObject.activeSelf)
					{
						((Component)PrePosLine).gameObject.SetActive(true);
					}
				}
			}
			else
			{
				if (PrePos != Vector3.zero)
				{
					PrePos = Vector3.zero;
					PrePosText.text = "无预设坐标";
				}
				if ((Object)(object)PrePosLine != (Object)null && ((Component)PrePosLine).gameObject.activeSelf)
				{
					((Component)PrePosLine).gameObject.SetActive(false);
				}
			}
		}
		else if (TitleText.text != "等待数据".getTranslate())
		{
			TitleText.text = "等待数据".getTranslate();
			StarList.ClearOptions();
			PlanetList.ClearOptions();
			ResultList.ClearOptions();
			InfoText.text = "";
			SearchNext = false;
		}
	}

	private void TryInit()
	{
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Expected O, but got Unknown
		//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Expected O, but got Unknown
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f0: Expected O, but got Unknown
		//IL_0103: Unknown result type (might be due to invalid IL or missing references)
		//IL_010d: Expected O, but got Unknown
		if ((Object)(object)((Component)UIRoot.instance.overlayCanvas).transform != (Object)null && (Object)(object)GameMain.instance != (Object)null)
		{
			LoadUIData();
			Translate();
			InitSeachUI();
			((UnityEvent<int>)(object)StarList.onValueChanged).AddListener((UnityAction<int>)OnStarChange);
			((UnityEvent<int>)(object)PlanetList.onValueChanged).AddListener((UnityAction<int>)OnPlanetChange);
			((UnityEvent)SearchButton.onClick).AddListener(new UnityAction(OnSearchButtonClick));
			((UnityEvent<int>)(object)ResultList.onValueChanged).AddListener((UnityAction<int>)OnResultChange);
			((UnityEvent)SetBaseButton.onClick).AddListener(new UnityAction(OnSetBase));
			((UnityEvent)AddSearcherButton.onClick).AddListener(new UnityAction(AddSearcher));
			((UnityEvent)RemoveSearcherButton.onClick).AddListener(new UnityAction(RemoveSearcher));
			((UnityEvent<int>)(object)SearcherList.onValueChanged).AddListener((UnityAction<int>)ShowSearcher);
			dataLoadOver = true;
		}
	}

	private void LoadUIData()
	{
		ui_StarMapToolsBasePanel = Object.Instantiate<GameObject>(prefab_StarMapToolsBasePanel, ((Component)UIRoot.instance.overlayCanvas).transform);
		((Component)ui_StarMapToolsBasePanel.transform.Find("TitleText")).gameObject.AddComponent<Drag>();
		ui_StarMapToolsBasePanel.SetActive(false);
		TitleText = ((Component)ui_StarMapToolsBasePanel.transform.Find("TitleText")).GetComponent<Text>();
		StarList = ((Component)ui_StarMapToolsBasePanel.transform.Find("StarList")).GetComponent<Dropdown>();
		PlanetList = ((Component)ui_StarMapToolsBasePanel.transform.Find("PlanetList")).GetComponent<Dropdown>();
		InfoText = ((Component)ui_StarMapToolsBasePanel.transform.Find("InfoText")).GetComponent<InputField>();
		LoadResAmount = ((Component)ui_StarMapToolsBasePanel.transform.Find("LoadResAmount")).GetComponent<Toggle>();
		OptionsList = ((Component)ui_StarMapToolsBasePanel.transform.Find("OptionsList")).GetComponent<ScrollRect>();
		SearchNextToggle = ((Component)ui_StarMapToolsBasePanel.transform.Find("SearchNextToggle")).GetComponent<Toggle>();
		RandomSearchToggle = ((Component)ui_StarMapToolsBasePanel.transform.Find("RandomSearchToggle")).GetComponent<Toggle>();
		DysonLuminoText = ((Component)ui_StarMapToolsBasePanel.transform.Find("DysonLuminoText")).GetComponent<InputField>();
		DistanceText = ((Component)ui_StarMapToolsBasePanel.transform.Find("DistanceText")).GetComponent<InputField>();
		ResultList = ((Component)ui_StarMapToolsBasePanel.transform.Find("ResultList")).GetComponent<Dropdown>();
		SearchButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("SearchButton")).GetComponent<Button>();
		VeinAmountText = ((Component)ui_StarMapToolsBasePanel.transform.Find("VeinAmountText")).GetComponent<InputField>();
		ChangeButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("ChangeButton")).GetComponent<Button>();
		PrePosText = ((Component)ui_StarMapToolsBasePanel.transform.Find("PrePosText")).GetComponent<Text>();
		VeinGroupToggle = ((Component)ui_StarMapToolsBasePanel.transform.Find("VeinGroupToggle")).GetComponent<Toggle>();
		VeinPGroupToggle = ((Component)ui_StarMapToolsBasePanel.transform.Find("VeinPGroupToggle")).GetComponent<Toggle>();
		BaseSkinDropDown = ((Component)ui_StarMapToolsBasePanel.transform.Find("BaseSkinDropDown")).GetComponent<Dropdown>();
		SetBaseButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("SetBaseButton")).GetComponent<Button>();
		RemoveVeinButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("RemoveVeinButton")).GetComponent<Button>();
		AddVeinButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("AddVeinButton")).GetComponent<Button>();
		RemoveSearcherButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("RemoveSearcherButton")).GetComponent<Button>();
		AddSearcherButton = ((Component)ui_StarMapToolsBasePanel.transform.Find("AddSearcherButton")).GetComponent<Button>();
		SearcherList = ((Component)ui_StarMapToolsBasePanel.transform.Find("SearcherList")).GetComponent<Dropdown>();
		((Component)VeinGroupToggle).gameObject.SetActive(false);
		((Component)VeinPGroupToggle).gameObject.SetActive(false);
		((Component)AddVeinButton).gameObject.SetActive(false);
		((Component)RemoveVeinButton).gameObject.SetActive(false);
		((Component)VeinAmountText).gameObject.SetActive(false);
		((Component)PrePosText).gameObject.SetActive(false);
		((Component)ChangeButton).gameObject.SetActive(false);
		((Component)ui_StarMapToolsBasePanel.transform.Find("VeinPTypeDropdown")).gameObject.SetActive(false);
		((Component)ui_StarMapToolsBasePanel.transform.Find("VeinTypeDropdown")).gameObject.SetActive(false);
		((Component)ui_StarMapToolsBasePanel.transform.Find("VeinNumText")).gameObject.SetActive(false);
	}

	private void Translate()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Invalid comparison between Unknown and I4
		IsEnglish = (int)Localization.CurrentLanguage.glyph == 0;
		if (IsEnglish)
		{
			((Component)((Component)LoadResAmount).transform.Find("Label")).GetComponent<Text>().text = "加载矿物数量".getTranslate();
			((Component)((Component)SearchNextToggle).transform.Find("Label")).GetComponent<Text>().text = "连续搜索".getTranslate();
			((Component)((Component)SearchButton).transform.Find("Text")).GetComponent<Text>().text = "搜索".getTranslate();
			((Component)((Component)DysonLuminoText).transform.Find("Placeholder")).GetComponent<Text>().text = "最小光度".getTranslate();
			((Component)((Component)DistanceText).transform.Find("Placeholder")).GetComponent<Text>().text = "最远距离".getTranslate();
		}
	}

	private void InitSeachUI()
	{
		//IL_00ea: 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_01f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fb: Expected O, but got Unknown
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Expected O, but got Unknown
		//IL_02de: Unknown result type (might be due to invalid IL or missing references)
		//IL_030f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0263: Unknown result type (might be due to invalid IL or missing references)
		//IL_0294: Unknown result type (might be due to invalid IL or missing references)
		//IL_03f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03fb: Expected O, but got Unknown
		//IL_041f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0429: Expected O, but got Unknown
		//IL_044e: Unknown result type (might be due to invalid IL or missing references)
		//IL_047f: Unknown result type (might be due to invalid IL or missing references)
		//IL_052b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0557: Unknown result type (might be due to invalid IL or missing references)
		Toggle component = ((Component)((Transform)OptionsList.content).Find("TempToggle")).GetComponent<Toggle>();
		GameObject gameObject = ((Component)((Transform)OptionsList.content).Find("TempNumLabel")).gameObject;
		List<string> allStarTypes = StarSearcher.AllStarTypes;
		List<string> allPlanteTypes = StarSearcher.AllPlanteTypes;
		List<string> allSingularityTypes = StarSearcher.AllSingularityTypes;
		List<string> allVeinTypes = StarSearcher.AllVeinTypes;
		StarTypesToggleList = new List<Toggle>();
		PlanteTypesNumLabelList = new List<RectTransform>();
		SingularityTypesNumLabelList = new List<RectTransform>();
		VeinTypesToggleList = new List<Toggle>();
		for (int i = 0; i < allStarTypes.Count; i++)
		{
			RectTransform component2 = ((Component)Object.Instantiate<Toggle>(component, ((Component)component).transform.parent)).GetComponent<RectTransform>();
			((Component)((Transform)component2).Find("Label")).GetComponent<Text>().text = allStarTypes[i];
			((Component)component2).GetComponent<Toggle>().isOn = true;
			component2.anchorMax = new Vector2(0.25f, (float)(1.0 - (double)i * 0.1));
			component2.anchorMin = new Vector2(0f, (float)(1.0 - (double)(i + 1) * 0.1));
			((Component)component2).gameObject.SetActive(true);
			StarTypesToggleList.Add(((Component)component2).GetComponent<Toggle>());
		}
		for (int j = 0; j < allPlanteTypes.Count; j++)
		{
			RectTransform numLabel = Object.Instantiate<GameObject>(gameObject, gameObject.transform.parent).GetComponent<RectTransform>();
			((Component)((Transform)numLabel).Find("Label")).GetComponent<Text>().text = allPlanteTypes[j];
			((Component)((Transform)numLabel).Find("NumText")).GetComponent<Text>().text = "0";
			((UnityEvent)((Component)((Transform)numLabel).Find("+")).GetComponent<Button>().onClick).AddListener((UnityAction)delegate
			{
				int.TryParse(((Component)((Transform)numLabel).Find("NumText")).GetComponent<Text>().text, out var result4);
				result4++;
				((Component)((Transform)numLabel).Find("NumText")).GetComponent<Text>().text = result4.ToString();
			});
			((UnityEvent)((Component)((Transform)numLabel).Find("-")).GetComponent<Button>().onClick).AddListener((UnityAction)delegate
			{
				int.TryParse(((Component)((Transform)numLabel).Find("NumText")).GetComponent<Text>().text, out var result3);
				result3--;
				((Component)((Transform)numLabel).Find("NumText")).GetComponent<Text>().text = ((result3 > 0) ? result3 : 0).ToString();
			});
			if (j < allPlanteTypes.Count / 2 + 5)
			{
				numLabel.anchorMax = new Vector2(0.5f, (float)(1.0 - (double)j * 0.1));
				numLabel.anchorMin = new Vector2(0.25f, (float)(1.0 - (double)(j + 1) * 0.1));
			}
			else
			{
				int num = j - allPlanteTypes.Count / 2 - 5 + allSingularityTypes.Count;
				numLabel.anchorMax = new Vector2(0.75f, (float)(1.0 - (double)num * 0.1));
				numLabel.anchorMin = new Vector2(0.5f, (float)(1.0 - (double)(num + 1) * 0.1));
			}
			((Component)numLabel).gameObject.SetActive(true);
			PlanteTypesNumLabelList.Add(numLabel);
		}
		for (int k = 0; k < allSingularityTypes.Count; k++)
		{
			RectTransform numLabel2 = Object.Instantiate<GameObject>(gameObject, gameObject.transform.parent).GetComponent<RectTransform>();
			((Component)((Transform)numLabel2).Find("Label")).GetComponent<Text>().text = allSingularityTypes[k];
			((Component)((Transform)numLabel2).Find("NumText")).GetComponent<Text>().text = "0";
			((UnityEvent)((Component)((Transform)numLabel2).Find("+")).GetComponent<Button>().onClick).AddListener((UnityAction)delegate
			{
				int.TryParse(((Component)((Transform)numLabel2).Find("NumText")).GetComponent<Text>().text, out var result2);
				result2++;
				((Component)((Transform)numLabel2).Find("NumText")).GetComponent<Text>().text = result2.ToString();
			});
			((UnityEvent)((Component)((Transform)numLabel2).Find("-")).GetComponent<Button>().onClick).AddListener((UnityAction)delegate
			{
				int.TryParse(((Component)((Transform)numLabel2).Find("NumText")).GetComponent<Text>().text, out var result);
				result--;
				((Component)((Transform)numLabel2).Find("NumText")).GetComponent<Text>().text = ((result > 0) ? result : 0).ToString();
			});
			numLabel2.anchorMax = new Vector2(0.75f, (float)(1.0 - (double)k * 0.1));
			numLabel2.anchorMin = new Vector2(0.5f, (float)(1.0 - (double)(k + 1) * 0.1));
			((Component)numLabel2).gameObject.SetActive(true);
			SingularityTypesNumLabelList.Add(numLabel2);
		}
		for (int l = 0; l < allVeinTypes.Count; l++)
		{
			RectTransform component3 = ((Component)Object.Instantiate<Toggle>(component, ((Component)component).transform.parent)).GetComponent<RectTransform>();
			((Component)((Transform)component3).Find("Label")).GetComponent<Text>().text = allVeinTypes[l];
			component3.anchorMax = new Vector2(1f, (float)(1.0 - (double)l * 0.1));
			component3.anchorMin = new Vector2(0.75f, (float)(1.0 - (double)(l + 1) * 0.1));
			((Component)component3).gameObject.SetActive(true);
			VeinTypesToggleList.Add(((Component)component3).GetComponent<Toggle>());
		}
	}

	private void OnStarChange(int arg0)
	{
		//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b2: Expected O, but got Unknown
		//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e3: Expected O, but got Unknown
		PlanetList.ClearOptions();
		if (StarList.value >= 0 && StarList.value < galaxy.starCount)
		{
			StarData val = galaxy.StarById(StarList.value + 1);
			if (LoadResAmount.isOn && UIRoot.instance.galaxySelect.starmap.galaxyData != null && !val.loaded)
			{
				val.RunScanningThread();
			}
			PlanetList.options.Add(new OptionData("恒星".getTranslate()));
			PlanetData[] planets = val.planets;
			foreach (PlanetData val2 in planets)
			{
				PlanetList.options.Add(new OptionData(val2.displayName));
			}
			PlanetList.value = -1;
			PlanetList.RefreshShownValue();
		}
	}

	private void OnPlanetChange(int arg0)
	{
		//IL_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: Invalid comparison between Unknown and I4
		//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
		//IL_03de: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e3: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
		StarData val = galaxy.StarById(StarList.value + 1);
		if (PlanetList.value > 0 && PlanetList.value <= val.planetCount)
		{
			PlanetData val2 = val.planets[PlanetList.value - 1];
			string text = val2.displayName + "的信息:".getTranslate() + "\n";
			text = text + "词条:".getTranslate() + val2.singularityString + "\n";
			text = text + "类型:".getTranslate() + val2.typeString + "\n";
			string translate = "未知".getTranslate();
			text = string.Concat(str2: val2.waterItemId switch
			{
				0 => "无".getTranslate(), 
				-1 => "熔岩".getTranslate(), 
				_ => LDB.ItemName(val2.waterItemId), 
			}, str0: text, str1: "海洋类型:".getTranslate(), str3: "\n");
			int[] array = veinSpotsSketch(val2);
			if ((int)val2.type != 5 && array != null)
			{
				text = text + "矿物信息:".getTranslate() + "\n";
				long[] array2 = new long[64];
				val2.SummarizeVeinAmountsByFilter(ref array2, tempids, UIRoot.instance.uiGame.veinAmountDisplayFilter);
				for (int i = 0; i < ((ProtoTable)LDB.veins).Length; i++)
				{
					string name = ((Proto)((ProtoSet<VeinProto>)(object)LDB.veins).dataArray[i]).name;
					object obj2 = array2[i + 1];
					if (array[i + 1] == 0)
					{
						obj2 = "无".getTranslate();
					}
					else if ((long)obj2 == 0)
					{
						if (!LoadResAmount.isOn)
						{
							obj2 = "有".getTranslate();
						}
						else if (UIRoot.instance.galaxySelect.starmap.galaxyData != null)
						{
							obj2 = "正在加载".getTranslate();
							loadingStarData = true;
						}
						else
						{
							obj2 = "未加载,靠近后显示".getTranslate();
						}
					}
					else if (i + 1 == 7)
					{
						obj2 = (double)(long)obj2 * (double)VeinData.oilSpeedMultiplier + " /s";
					}
					text = text + "    " + name + ":" + obj2?.ToString() + "\n";
				}
			}
			InfoText.text = text;
		}
		else
		{
			if (PlanetList.value != 0)
			{
				return;
			}
			string text2 = val.displayName + "星系的信息:".getTranslate() + (loadingStarData ? "正在加载".getTranslate() : "") + "\n";
			text2 = text2 + "恒星类型:".getTranslate() + val.typeString + "\n";
			text2 = text2 + "星球数量:".getTranslate() + val.planetCount + "\n";
			text2 = text2 + "光度:".getTranslate() + val.dysonLumino + "\n";
			string[] obj3 = new string[5]
			{
				text2,
				"距离初始星系恒星:".getTranslate(),
				null,
				null,
				null
			};
			VectorLF3 val3 = val.uPosition - galaxy.StarById(1).uPosition;
			obj3[2] = (((VectorLF3)(ref val3)).magnitude / 2400000.0).ToString();
			obj3[3] = "光年".getTranslate();
			obj3[4] = "\n";
			text2 = string.Concat(obj3);
			text2 += "星球列表:".getTranslate();
			long[] array3 = new long[64];
			int[] array4 = new int[30];
			PlanetData[] planets = val.planets;
			foreach (PlanetData val4 in planets)
			{
				long[] array5 = new long[64];
				val4.SummarizeVeinAmountsByFilter(ref array5, tempids, UIRoot.instance.uiGame.veinAmountDisplayFilter);
				int[] array6 = veinSpotsSketch(val4);
				for (int k = 0; k < ((ProtoTable)LDB.veins).Length; k++)
				{
					array3[k + 1] += array5[k + 1];
					if (array6 != null)
					{
						array4[k + 1] += array6[k + 1];
					}
				}
				text2 = text2 + "-" + val4.typeString + "  " + val4.singularityString;
			}
			text2 = text2 + "\n" + "矿物信息:".getTranslate() + "\n";
			for (int l = 0; l < ((ProtoTable)LDB.veins).Length; l++)
			{
				string name2 = ((Proto)((ProtoSet<VeinProto>)(object)LDB.veins).dataArray[l]).name;
				object obj4 = array3[l + 1];
				if (array4[l + 1] == 0)
				{
					obj4 = "无".getTranslate();
				}
				else if ((long)obj4 == 0)
				{
					if (!LoadResAmount.isOn)
					{
						obj4 = "有".getTranslate();
					}
					else if (UIRoot.instance.galaxySelect.starmap.galaxyData != null)
					{
						obj4 = "正在加载".getTranslate();
						loadingStarData = true;
					}
					else
					{
						obj4 = "未加载,靠近后显示".getTranslate();
					}
				}
				else if (l + 1 == 7)
				{
					obj4 = (double)(long)obj4 * (double)VeinData.oilSpeedMultiplier + " /s";
				}
				text2 = text2 + "    " + name2 + ":" + obj4?.ToString() + "\n";
			}
			InfoText.text = text2;
		}
	}

	private void OnResultChange(int arg0)
	{
		StarList.value = SerachResult[ResultList.value].index;
		StarList.RefreshShownValue();
	}

	private void AddSearcher()
	{
		//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02cb: Expected O, but got Unknown
		StarSearcher starSearcher = new StarSearcher();
		starSearcher.Clear();
		float.TryParse((DysonLuminoText.text == "") ? "0" : DysonLuminoText.text, out starSearcher.dysonLumino);
		float.TryParse((DistanceText.text == "") ? "1000" : DistanceText.text, out starSearcher.distance);
		foreach (Toggle starTypesToggle in StarTypesToggleList)
		{
			if (starTypesToggle.isOn)
			{
				string text = ((Component)((Component)starTypesToggle).transform.Find("Label")).GetComponent<Text>().text;
				starSearcher.StarTypes.Add(text);
			}
		}
		foreach (RectTransform planteTypesNumLabel in PlanteTypesNumLabelList)
		{
			int.TryParse(((Component)((Transform)planteTypesNumLabel).Find("NumText")).GetComponent<Text>().text, out var result);
			if (result > 0)
			{
				string text2 = ((Component)((Transform)planteTypesNumLabel).Find("Label")).GetComponent<Text>().text;
				starSearcher.PlanteTypes.Add(text2 + "*" + result);
			}
		}
		foreach (RectTransform singularityTypesNumLabel in SingularityTypesNumLabelList)
		{
			int.TryParse(((Component)((Transform)singularityTypesNumLabel).Find("NumText")).GetComponent<Text>().text, out var result2);
			if (result2 > 0)
			{
				string text3 = ((Component)((Transform)singularityTypesNumLabel).Find("Label")).GetComponent<Text>().text;
				starSearcher.SingularityTypes.Add(text3 + "*" + result2);
			}
		}
		foreach (Toggle veinTypesToggle in VeinTypesToggleList)
		{
			if (veinTypesToggle.isOn)
			{
				string text4 = ((Component)((Component)veinTypesToggle).transform.Find("Label")).GetComponent<Text>().text;
				starSearcher.VeinTypes.Add(text4);
			}
		}
		starSearchers.Add(starSearcher);
		SearcherList.ClearOptions();
		for (int i = 0; i < starSearchers.Count; i++)
		{
			SearcherList.options.Add(new OptionData("条件" + i));
		}
		SearcherList.value = SearcherList.options.Count - 1;
		SearcherList.RefreshShownValue();
	}

	private void RemoveSearcher()
	{
		if (starSearchers.Count > 0)
		{
			starSearchers.RemoveAt(SearcherList.value);
			SearcherList.options.RemoveAt(SearcherList.value);
			SearcherList.value = SearcherList.options.Count - 1;
			SearcherList.RefreshShownValue();
			ShowSearcher(0);
		}
	}

	private void ShowSearcher(int arg0)
	{
		if (SearcherList.options.Count <= 0)
		{
			return;
		}
		StarSearcher starSearcher = starSearchers[SearcherList.value];
		DysonLuminoText.text = starSearcher.dysonLumino.ToString();
		DistanceText.text = starSearcher.distance.ToString();
		Dictionary<string, string> dictionary = new Dictionary<string, string>();
		foreach (Toggle starTypesToggle in StarTypesToggleList)
		{
			string text = ((Component)((Component)starTypesToggle).transform.Find("Label")).GetComponent<Text>().text;
			if (starSearcher.StarTypes.Contains(text))
			{
				starTypesToggle.isOn = true;
			}
			else
			{
				starTypesToggle.isOn = false;
			}
		}
		dictionary.Clear();
		foreach (string planteType in starSearcher.PlanteTypes)
		{
			string[] array = planteType.Split(new char[1] { '*' });
			dictionary.Add(array[0], array[1]);
		}
		foreach (RectTransform planteTypesNumLabel in PlanteTypesNumLabelList)
		{
			string text2 = ((Component)((Transform)planteTypesNumLabel).Find("Label")).GetComponent<Text>().text;
			if (dictionary.ContainsKey(text2))
			{
				((Component)((Transform)planteTypesNumLabel).Find("NumText")).GetComponent<Text>().text = dictionary[text2];
			}
			else
			{
				((Component)((Transform)planteTypesNumLabel).Find("NumText")).GetComponent<Text>().text = "0";
			}
		}
		dictionary.Clear();
		foreach (string singularityType in starSearcher.SingularityTypes)
		{
			string[] array2 = singularityType.Split(new char[1] { '*' });
			dictionary.Add(array2[0], array2[1]);
		}
		foreach (RectTransform singularityTypesNumLabel in SingularityTypesNumLabelList)
		{
			string text3 = ((Component)((Transform)singularityTypesNumLabel).Find("Label")).GetComponent<Text>().text;
			if (dictionary.ContainsKey(text3))
			{
				((Component)((Transform)singularityTypesNumLabel).Find("NumText")).GetComponent<Text>().text = dictionary[text3];
			}
			else
			{
				((Component)((Transform)singularityTypesNumLabel).Find("NumText")).GetComponent<Text>().text = "0";
			}
		}
		foreach (Toggle veinTypesToggle in VeinTypesToggleList)
		{
			string text4 = ((Component)((Component)veinTypesToggle).transform.Find("Label")).GetComponent<Text>().text;
			if (starSearcher.VeinTypes.Contains(text4))
			{
				veinTypesToggle.isOn = true;
			}
			else
			{
				veinTypesToggle.isOn = false;
			}
		}
	}

	private void OnSearchButtonClick()
	{
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f8: Expected O, but got Unknown
		SearchNext = false;
		StarSearcher.galaxyData = galaxy;
		SerachResult.Clear();
		ResultList.ClearOptions();
		Debug.Log((object)"搜索");
		for (int i = 0; i < starSearchers.Count; i++)
		{
			StarSearcher starSearcher = starSearchers[i];
			List<StarData> list = starSearcher.Search();
			Debug.Log((object)("找到" + list.Count + "个恒星"));
			if (list.Count == 0)
			{
				SearchNext = true;
				break;
			}
			SerachResult.AddRange(list);
		}
		if (SearchNext)
		{
			return;
		}
		foreach (StarData item in SerachResult)
		{
			ResultList.options.Add(new OptionData(item.displayName));
		}
		ResultList.value = -1;
		ResultList.RefreshShownValue();
	}

	private void OnSetBase()
	{
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: Invalid comparison between Unknown and I4
		if (GameMain.localPlanet != null && (int)GameMain.localPlanet.type != 5)
		{
			for (int i = 0; i < GameMain.localPlanet.factory.vegePool.Length; i++)
			{
				GameMain.localPlanet.factory.RemoveVegeWithComponents(i);
			}
			byte[] modData = GameMain.localPlanet.modData;
			for (int j = 0; j < modData.Length * 2; j++)
			{
				GameMain.localPlanet.AddHeightMapModLevel(j, 3);
			}
			if (GameMain.localPlanet.UpdateDirtyMeshes())
			{
				GameMain.localPlanet.factory.RenderLocalPlanetHeightmap();
			}
			if (GameMain.localPlanet.factory.platformSystem.reformData == null)
			{
				GameMain.localPlanet.factory.platformSystem.InitReformData();
			}
			byte[] reformData = GameMain.localPlanet.factory.platformSystem.reformData;
			for (int k = 0; k < reformData.Length; k++)
			{
				GameMain.localPlanet.factory.platformSystem.SetReformType(k, BaseSkinDropDown.value);
				GameMain.localPlanet.factory.platformSystem.SetReformColor(k, 0);
			}
		}
	}

	public static int[] veinSpotsSketch(PlanetData planet)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Expected O, but got Unknown
		//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Invalid comparison between Unknown and I4
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_016c: Invalid comparison between Unknown and I4
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cb: Invalid comparison between Unknown and I4
		//IL_0182: Unknown result type (might be due to invalid IL or missing references)
		//IL_0185: Invalid comparison between Unknown and I4
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Invalid comparison between Unknown and I4
		//IL_0279: Unknown result type (might be due to invalid IL or missing references)
		//IL_027c: Invalid comparison between Unknown and I4
		//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Invalid comparison between Unknown and I4
		//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02db: Invalid comparison between Unknown and I4
		//IL_010d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Invalid comparison between Unknown and I4
		//IL_0123: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Invalid comparison between Unknown and I4
		//IL_0139: Unknown result type (might be due to invalid IL or missing references)
		//IL_013c: Invalid comparison between Unknown and I4
		//IL_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0152: Invalid comparison between Unknown and I4
		ThemeProto val = ((ProtoSet<ThemeProto>)(object)LDB.themes).Select(planet.theme);
		if (val != null)
		{
			DotNet35Random val2 = new DotNet35Random(planet.seed);
			val2.Next();
			val2.Next();
			val2.Next();
			val2.Next();
			val2.Next();
			val2.Next();
			VeinProto[] veinProtos = PlanetModelingManager.veinProtos;
			int[] array = new int[veinProtos.Length];
			if (val.VeinSpot != null)
			{
				Array.Copy(val.VeinSpot, 0, array, 1, Math.Min(val.VeinSpot.Length, array.Length - 1));
			}
			float num = 1f;
			ESpectrType spectr = planet.star.spectr;
			EStarType type = planet.star.type;
			if ((int)type == 0)
			{
				if ((int)spectr == 0)
				{
					num = 2.5f;
				}
				else if ((int)spectr == 1)
				{
					num = 1f;
				}
				else if ((int)spectr == 2)
				{
					num = 0.7f;
				}
				else if ((int)spectr == 3)
				{
					num = 0.6f;
				}
				else if ((int)spectr == 4)
				{
					num = 1f;
				}
				else if ((int)spectr == 5)
				{
					num = 0.4f;
				}
				else if ((int)spectr == 6)
				{
					num = 1.6f;
				}
			}
			else if ((int)type == 1)
			{
				num = 2.5f;
			}
			else if ((int)type == 2)
			{
				num = 3.5f;
				array[9] += 2;
				for (int i = 1; i < 12; i++)
				{
					if (!(val2.NextDouble() < 0.44999998807907104))
					{
						break;
					}
					array[9]++;
				}
				array[10] += 2;
				for (int j = 1; j < 12; j++)
				{
					if (!(val2.NextDouble() < 0.44999998807907104))
					{
						break;
					}
					array[10]++;
				}
				array[12]++;
				for (int k = 1; k < 12; k++)
				{
					if (!(val2.NextDouble() < 0.5))
					{
						break;
					}
					array[12]++;
				}
			}
			else if ((int)type == 3)
			{
				num = 4.5f;
				array[14]++;
				for (int l = 1; l < 12; l++)
				{
					if (!(val2.NextDouble() < 0.6499999761581421))
					{
						break;
					}
					array[14]++;
				}
			}
			else if ((int)type == 4)
			{
				num = 5f;
				array[14]++;
				for (int m = 1; m < 12; m++)
				{
					if (!(val2.NextDouble() < 0.6499999761581421))
					{
						break;
					}
					array[14]++;
				}
			}
			for (int n = 0; n < val.RareVeins.Length; n++)
			{
				int num2 = val.RareVeins[n];
				float num3 = ((planet.star.index == 0) ? val.RareSettings[n * 4] : val.RareSettings[n * 4 + 1]);
				num3 = 1f - Mathf.Pow(1f - num3, num);
				if (!(val2.NextDouble() < (double)num3))
				{
					continue;
				}
				array[num2]++;
				for (int num4 = 1; num4 < 12; num4++)
				{
					if (!(val2.NextDouble() < (double)val.RareSettings[n * 4 + 2]))
					{
						break;
					}
					array[num2]++;
				}
			}
			return array;
		}
		return null;
	}

	[IteratorStateMachine(typeof(<wait>d__19))]
	private IEnumerator wait(object target)
	{
		//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
		return new <wait>d__19(0)
		{
			<>4__this = this,
			target = target
		};
	}
}
public class StarMapToolsPatch
{
	private static StarMapTools self => StarMapTools.Instance;

	[HarmonyPrefix]
	[HarmonyPatch(typeof(UIStarmap), "OnStarClick")]
	public static bool OnStarClick(UIStarmapStar star)
	{
		if (self.showGUI)
		{
			self.StarList.value = star.star.index;
			self.StarList.RefreshShownValue();
		}
		return true;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(UIStarmap), "OnPlanetClick")]
	public static bool OnPlanetClick(UIStarmapPlanet planet)
	{
		if (self.showGUI)
		{
			self.StarList.value = planet.planet.star.index;
			self.StarList.RefreshShownValue();
			self.PlanetList.value = planet.planet.index + 1;
			self.PlanetList.RefreshShownValue();
		}
		return true;
	}

	[HarmonyPrefix]
	[HarmonyPatch(typeof(GalaxyData), "Free")]
	public static bool Free(GalaxyData __instance)
	{
		StarData[] stars = __instance.stars;
		foreach (StarData val in stars)
		{
			PlanetData[] planets = val.planets;
			foreach (PlanetData val2 in planets)
			{
				if (val2.loading)
				{
					Debug.Log((object)"由StarMapTools阻止的GalaxyData.Free()");
					return false;
				}
			}
		}
		return true;
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(UIMinerWindow), "_OnUpdate")]
	public static void _OnUpdate(UIMinerWindow __instance)
	{
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Invalid comparison between Unknown and I4
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0041: 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_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Unknown result type (might be due to invalid IL or missing references)
		//IL_00de: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Invalid comparison between Unknown and I4
		MinerComponent val = __instance.factorySystem.minerPool[__instance.minerId];
		if ((int)val.type != 2 || val.veinCount <= 0)
		{
			return;
		}
		VeinData[] veinPool = __instance.factory.veinPool;
		int num = ((val.veinCount != 0) ? val.veins[val.currentVeinIndex] : 0);
		int productId = veinPool[num].productId;
		ItemProto val2 = ((ProtoSet<ItemProto>)(object)LDB.items).Select(productId);
		float num2 = 60f * (float)val.speed * GameMain.history.miningSpeedScale * (float)val.veinCount / (float)val.period;
		Text value = Traverse.Create((object)__instance).Field("coverText").GetValue<Text>();
		string text = "";
		foreach (RecipeProto make in val2.makes)
		{
			if ((int)make.Type == 1)
			{
				text = text + "   可供" + ((double)(num2 / (float)make.ItemCounts[0]) / ((double)(float)make.ResultCounts[0] / ((double)make.TimeSpend / 60.0))).ToString("0.0") + "个熔炉产" + LDB.ItemName(make.Results[0]);
			}
		}
		if (text != "")
		{
			Text val3 = value;
			val3.text = val3.text + "\n" + text;
		}
	}

	[HarmonyPostfix]
	[HarmonyPatch(typeof(UIStarmapStar), "OnStarDisplayNameChange")]
	public static void OnStarDisplayNameChange()
	{
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Expected O, but got Unknown
		if (self.galaxy != null)
		{
			self.StarList.ClearOptions();
			self.ResultList.ClearOptions();
			StarData[] stars = self.galaxy.stars;
			foreach (StarData val in stars)
			{
				self.StarList.options.Add(new OptionData(val.displayName));
			}
			self.StarList.value = -1;
			self.StarList.RefreshShownValue();
		}
	}
}
public static class StarMapToolsTranslate
{
	private static Dictionary<string, string> TranslateDict = new Dictionary<string, string>();

	public static string getTranslate(this string s)
	{
		if (StarMapTools.IsEnglish && TranslateDict.ContainsKey(s))
		{
			return TranslateDict[s];
		}
		return s;
	}

	public static void regAllTranslate()
	{
		TranslateDict.Clear();
		TranslateDict.Add("开关GUI的按键", "Open and Close GUI Key");
		TranslateDict.Add("传送按键", "TP Key");
		TranslateDict.Add("新游戏模式", "NEW GAME");
		TranslateDict.Add("读档模式", "IN GAME");
		TranslateDict.Add("等待数据", "WAIT DATA");
		TranslateDict.Add("加载矿物数量", "Load Vein Amount");
		TranslateDict.Add("连续搜索", "Search Next Seed");
		TranslateDict.Add("最小光度", "Minimum luminosity");
		TranslateDict.Add("最远距离", "Maximum light year");
		TranslateDict.Add("搜索", "Search");
		TranslateDict.Add("恒星", "Star");
		TranslateDict.Add("恒星类型:", "Star Type:");
		TranslateDict.Add("星球数量:", "Planet Num:");
		TranslateDict.Add("星系的信息:", " Info:");
		TranslateDict.Add("光度:", "Luminosity:");
		TranslateDict.Add("距离初始星系恒星:", "Distance from the beginning:");
		TranslateDict.Add("光年", "Light years");
		TranslateDict.Add("星球列表:", "Planet List:");
		TranslateDict.Add("的信息:", " Info:");
		TranslateDict.Add("类型:", "Type:");
		TranslateDict.Add("词条:", "Singularity:");
		TranslateDict.Add("海洋类型:", "Ocean Type:");
		TranslateDict.Add("未知", " Unknown:");
		TranslateDict.Add("熔岩", " Lava");
		TranslateDict.Add("矿物信息:", "VeinList:");
		TranslateDict.Add("无", "None");
		TranslateDict.Add("有", "Exist");
		TranslateDict.Add("正在加载", "Loading");
		TranslateDict.Add("未加载,靠近后显示", "Not loaded, display when approaching");
	}
}
internal class StarSearcher
{
	public List<string> StarTypes = new List<string>();

	public List<string> PlanteTypes = new List<string>();

	public List<string> SingularityTypes = new List<string>();

	public List<string> VeinTypes = new List<string>();

	public float dysonLumino;

	public float distance;

	public static GalaxyData galaxyData { get; set; }

	public static List<string> AllStarTypes => new List<string>
	{
		Localization.Translate("红巨星"),
		Localization.Translate("黄巨星"),
		Localization.Translate("白巨星"),
		Localization.Translate("蓝巨星"),
		Localization.Translate("中子星"),
		Localization.Translate("白矮星"),
		Localization.Translate("黑洞"),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)0),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)1),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)2),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)3),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)4),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)5),
		string.Format(Localization.Translate("型恒星"), (object)(ESpectrType)6)
	};

	public static List<string> AllPlanteTypes
	{
		get
		{
			List<string> list = new List<string>();
			ThemeProto[] dataArray = ((ProtoSet<ThemeProto>)(object)LDB.themes).dataArray;
			foreach (ThemeProto val in dataArray)
			{
				if (!list.Contains(val.displayName))
				{
					list.Add(val.displayName);
				}
			}
			return list;
		}
	}

	public static List<string> AllSingularityTypes => new List<string>
	{
		Localization.Translate("卫星"),
		Localization.Translate("潮汐锁定永昼永夜"),
		Localization.Translate("潮汐锁定1:2"),
		Localization.Translate("潮汐锁定1:4"),
		Localization.Translate("横躺自转"),
		Localization.Translate("反向自转"),
		Localization.Translate("多卫星")
	};

	public static List<string> AllVeinTypes
	{
		get
		{
			List<string> list = new List<string>();
			VeinProto[] dataArray = ((ProtoSet<VeinProto>)(object)LDB.veins).dataArray;
			foreach (VeinProto val in dataArray)
			{
				list.Add(((Proto)val).name);
			}
			return list;
		}
	}

	public List<StarData> Search()
	{
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_0115: Unknown result type (might be due to invalid IL or missing references)
		//IL_011a: Unknown result type (might be due to invalid IL or missing references)
		//IL_011f: Unknown result type (might be due to invalid IL or missing references)
		//IL_018f: Unknown result type (might be due to invalid IL or missing references)
		//IL_019f: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		if (galaxyData == null)
		{
			return Enumerable.Empty<StarData>().ToList();
		}
		List<StarData> list = new List<StarData>();
		Debug.Log((object)"开始搜索");
		Debug.Log((object)string.Join(",", StarTypes));
		StarData[] stars = galaxyData.stars;
		foreach (StarData starData in stars)
		{
			object[] obj = new object[5]
			{
				starData.name,
				starData.typeString,
				!StarTypes.Contains(starData.typeString),
				starData.dysonLumino < dysonLumino,
				null
			};
			VectorLF3 val = starData.uPosition - galaxyData.StarById(1).uPosition;
			obj[4] = ((VectorLF3)(ref val)).magnitude / 2400000.0 > (double)distance;
			Debug.Log((object)string.Format("{0},{1},{2},{3},{4}", obj));
			if (!StarTypes.Contains(starData.typeString) || starData.dysonLumino < dysonLumino)
			{
				continue;
			}
			val = starData.uPosition - galaxyData.StarById(1).uPosition;
			if (((VectorLF3)(ref val)).magnitude / 2400000.0 > (double)distance)
			{
				continue;
			}
			Debug.Log((object)("搜索" + starData.name));
			List<string> TempPlanteTypes = new List<string>();
			List<string> TempSingularityTypes = new List<string>();
			List<string> TempVeinTypes = new List<string>();
			PlanetData[] planets = starData.planets;
			foreach (PlanetData val2 in planets)
			{
				TempPlanteTypes.Add(val2.typeString);
				TempSingularityTypes.Add(val2.singularityString);
			}
			int[] array = new int[30];
			PlanetData[] planets2 = starData.planets;
			foreach (PlanetData planet in planets2)
			{
				int[] array2 = StarMapTools.veinSpotsSketch(planet);
				for (int l = 0; l < ((ProtoTable)LDB.veins).Length; l++)
				{
					if (array2 != null)
					{
						array[l + 1] += array2[l + 1];
					}
				}
			}
			for (int m = 0; m < ((ProtoTable)LDB.veins).Length; m++)
			{
				if (array[m + 1] > 0)
				{
					TempVeinTypes.Add(((Proto)((ProtoSet<VeinProto>)(object)LDB.veins).dataArray[m]).name);
				}
			}
			if (PlanteTypes.TrueForAll(delegate(string ePlanetType)
			{
				string[] array4 = ePlanetType.Split(new char[1] { '*' });
				int.TryParse(array4[1], out var result2);
				if (TempPlanteTypes.Count((string a) => a == array4[0]) >= result2)
				{
					Debug.Log((object)(starData.name + "通过1"));
				}
				return TempPlanteTypes.Count((string a) => a == array4[0]) >= result2;
			}) && SingularityTypes.TrueForAll(delegate(string ePlanetSingularity)
			{
				string[] array3 = ePlanetSingularity.Split(new char[1] { '*' });
				int.TryParse(array3[1], out var result);
				if (TempSingularityTypes.Count((string a) => a == array3[0]) >= result)
				{
					Debug.Log((object)(starData.name + "通过2"));
				}
				return TempSingularityTypes.Count((string a) => a == array3[0]) >= result;
			}) && VeinTypes.TrueForAll(delegate(string eVeinType)
			{
				bool flag = TempVeinTypes.Contains(eVeinType);
				if (flag)
				{
					Debug.Log((object)(starData.name + "通过3"));
				}
				return flag;
			}))
			{
				list.Add(starData);
			}
		}
		return list;
	}

	public void Clear()
	{
		StarTypes.Clear();
		PlanteTypes.Clear();
		SingularityTypes.Clear();
		VeinTypes.Clear();
		dysonLumino = 0f;
		distance = 1000f;
	}
}