Decompiled source of VeinControl v1.1.3

VeinControl.dll

Decompiled a year ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Threading;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Configuration;
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("VeinControl")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("VeinControl")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("4d37a74f-e2c4-4bb1-94c4-2e18906cfe74")]
[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 VeinControl;

public static class TranslateDic
{
	private static Dictionary<string, string> TranslateDict;

	public static string Translate(this string s)
	{
		return (VeinControl.IsEnglish && TranslateDict.ContainsKey(s) && TranslateDict[s].Length > 0) ? TranslateDict[s] : s;
	}

	public static void RegallTranslate()
	{
		TranslateDict = new Dictionary<string, string>
		{
			{ "启动/关闭", "On/Off" },
			{ "移动矿堆失败", "Failed to move the pile" },
			{ "当前纬度过高,为避免出错,无法移动矿堆", "The current latitude is too high to move the pile to avoid errors" },
			{ "确定", "recognize" },
			{ "移动所有矿", "Move all veins" },
			{ "切割出", "Cut out" },
			{ "整理为", "Organized as" },
			{ "个", "veins" },
			{ "行", "lines" },
			{ "合并油井", "Merge Oil" },
			{ "合并矿脉", "Merge VeinGroup" },
			{ "矿脉工具", "Vein Control Tool" },
			{ "不添加", "No Add Vein" },
			{ "添加油井速率", "Add oil interval" },
			{ "添加矿脉数量", "Add vein interval" },
			{ "点按", "Click" },
			{ "按压", "Press" },
			{ "生成矿物点击模式", "Add vein Mode" },
			{ "无穷", "Infinite" },
			{ "警告:不要将油井移动到极点附近", "WARNING:Don'T move veins near poles" },
			{ "ctrl+鼠标左键:移动单矿", "ctrl+LeftMouse:Move Vein" },
			{ "alt+鼠标左键:移动矿堆", "alt+LeftMouse:Move the vein group" },
			{ "shift+鼠标左键:移动所有矿", "shift+LeftMouse:Move all veins" },
			{ "alt+x+鼠标左键:切割矿脉", "alt+x+LeftMouse:Cut the veins from vein group" },
			{ "X:进入拆除模式可以拆除矿脉", "x:Remove vein on Dismantle Mode" },
			{ "~(Esc键下方):合并/不合并", "~:Merge or not merge " }
		};
	}
}
[BepInPlugin("cn.blacksnipe.dsp.VeinControl", "VeinControl", "1.1.3")]
[BepInProcess("DSPGAME.exe")]
public class VeinControl : BaseUnityPlugin
{
	private const string GUID = "cn.blacksnipe.dsp.VeinControl";

	private const string NAME = "VeinControl";

	private const string VERSION = "1.1.3";

	private const string GAME_PROCESS = "DSPGAME.exe";

	public static bool IsEnglish;

	private int baseSize;

	private bool coolDown;

	private bool RefreshBaseSize;

	public int veintype;

	public bool ShowWindow;

	public bool ShowInstructionsWindow;

	public bool Window_moving;

	public bool FirstOpen;

	public bool MouseInWindow;

	public VeinData pointveindata;

	public float Temp_Window_Moving_X;

	public float Temp_Window_Moving_Y;

	public float Temp_Window_X_move;

	public float Temp_Window_Y_move;

	public float Window_Width;

	public float Window_Height;

	public float Window_X;

	public float Window_Y;

	public static ConfigEntry<int> scale;

	public static ConfigEntry<int> changeveinsposx;

	public static ConfigEntry<int> veinlines;

	public static ConfigEntry<bool> ControlToggol;

	public static ConfigEntry<bool> MergeOil;

	public static ConfigEntry<bool> MergeVeinGroup;

	public static ConfigEntry<bool> MoveAllVeinGroup;

	public static ConfigEntry<KeyboardShortcut> OpenWindowKey;

	public int AddVeinNumber;

	public int AddVeinMode;

	public bool[] OilAddIntervalBool;

	public float[] OilAddIntervalValue;

	public float OilAddInterval;

	public int oillowerlimit;

	private int UILine;

	private GUIStyle normalStyle;

	private GUIStyle selectedIconStyle;

	private Texture2D selectedTexture;

	private Texture2D blacktexture;

	private bool firstDraw;

	public int BaseSize
	{
		get
		{
			return baseSize;
		}
		set
		{
			baseSize = value;
			scale.Value = value;
			RefreshBaseSize = true;
		}
	}

	public bool CoolDown
	{
		get
		{
			return coolDown;
		}
		set
		{
			coolDown = value;
			if (value)
			{
				Task.Run(delegate
				{
					Thread.Sleep(1000);
					coolDown = false;
				});
			}
		}
	}

	private void Start()
	{
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ac: Expected O, but got Unknown
		//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Expected O, but got Unknown
		//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
		ShowWindow = false;
		FirstOpen = true;
		veintype = 0;
		TranslateDic.RegallTranslate();
		changeveinsposx = ((BaseUnityPlugin)this).Config.Bind<int>("切割矿脉数量", "changeveinsposx", 9, (ConfigDescription)null);
		veinlines = ((BaseUnityPlugin)this).Config.Bind<int>("矿物行数", "veinlines", 3, (ConfigDescription)null);
		ControlToggol = ((BaseUnityPlugin)this).Config.Bind<bool>("启动/关闭", "ControlToggol", false, (ConfigDescription)null);
		MergeOil = ((BaseUnityPlugin)this).Config.Bind<bool>("合并油井", "MergeOil", false, (ConfigDescription)null);
		MoveAllVeinGroup = ((BaseUnityPlugin)this).Config.Bind<bool>("移动所有矿", "MoveAllVeinGroup", false, (ConfigDescription)null);
		MergeVeinGroup = ((BaseUnityPlugin)this).Config.Bind<bool>("合并矿堆", "MergeVeinGroup", false, (ConfigDescription)null);
		OpenWindowKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("打开窗口快捷键", "Key", new KeyboardShortcut((KeyCode)113, (KeyCode[])(object)new KeyCode[1] { (KeyCode)306 }), (ConfigDescription)null);
		scale = ((BaseUnityPlugin)this).Config.Bind<int>("大小适配", "scale", 16, (ConfigDescription)null);
		BaseSize = scale.Value;
		Window_X = 450f;
		Window_Y = 200f;
		Temp_Window_Moving_X = 0f;
		Temp_Window_Moving_Y = 0f;
		OilAddIntervalBool = new bool[3];
		OilAddIntervalValue = new float[3] { 0.1f, 1f, 10f };
		SetOilAddInterval(1);
		oillowerlimit = (int)(1f / VeinData.oilSpeedMultiplier);
		AddVeinNumber = 1000000000;
		UILine = 10;
		selectedTexture = new Texture2D(1, 1);
		selectedTexture.SetPixel(0, 0, new Color(10f / 51f, 10f / 51f, 10f / 51f));
		selectedTexture.Apply();
		blacktexture = new Texture2D(1, 1);
		blacktexture.SetPixel(0, 0, new Color(0f, 0f, 0f));
		blacktexture.Apply();
	}

	private void Update()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		KeyboardShortcut value = OpenWindowKey.Value;
		if (((KeyboardShortcut)(ref value)).IsDown() && (Object)(object)LDB.items != (Object)null)
		{
			ShowWindow = !ShowWindow;
			if (ShowWindow)
			{
				firstDraw = true;
			}
		}
		if (Input.GetKey((KeyCode)306) || Input.GetKey((KeyCode)308) || Input.GetKey((KeyCode)304))
		{
			veintype = 0;
		}
		if (!ShowWindow || !MouseInWindow)
		{
			controlVein();
		}
	}

	public void OnGUI()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Invalid comparison between Unknown and I4
		//IL_004b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Expected O, but got Unknown
		//IL_0056: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Expected O, but got Unknown
		//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0237: Unknown result type (might be due to invalid IL or missing references)
		//IL_0255: Expected O, but got Unknown
		//IL_0250: Unknown result type (might be due to invalid IL or missing references)
		//IL_0255: Unknown result type (might be due to invalid IL or missing references)
		//IL_029e: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Expected O, but got Unknown
		//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
		IsEnglish = (int)Localization.CurrentLanguage.glyph == 0;
		if (firstDraw)
		{
			firstDraw = false;
			BaseSize = GUI.skin.label.fontSize;
		}
		if (normalStyle == null)
		{
			normalStyle = new GUIStyle();
			selectedIconStyle = new GUIStyle();
			selectedIconStyle.normal.background = selectedTexture;
		}
		if (ShowWindow && Input.GetKey((KeyCode)306))
		{
			int num = (int)(Input.GetAxis("Mouse Wheel") * 10f);
			int num2 = BaseSize + num;
			if (Input.GetKeyDown((KeyCode)273))
			{
				num2++;
			}
			if (Input.GetKeyDown((KeyCode)274))
			{
				num2--;
			}
			num2 = Math.Max(5, Math.Min(num2, 35));
			BaseSize = num2;
		}
		if (RefreshBaseSize)
		{
			RefreshBaseSize = false;
			GUI.skin.label.fontSize = BaseSize;
			GUI.skin.button.fontSize = BaseSize;
			GUI.skin.toggle.fontSize = BaseSize;
			GUI.skin.textField.fontSize = BaseSize;
			GUI.skin.textArea.fontSize = BaseSize;
			Window_Width = BaseSize * 18;
		}
		if (ShowWindow)
		{
			int num3 = BaseSize + 4 + (IsEnglish ? 3 : 0);
			Window_Height = num3 * UILine;
			Rect val = default(Rect);
			((Rect)(ref val))..ctor(Window_X, Window_Y, Window_Width, Window_Height);
			GUI.DrawTexture(val, (Texture)(object)blacktexture);
			moveWindow(ref Window_X, ref Window_Y, ref Temp_Window_X_move, ref Temp_Window_Y_move, ref Window_moving, ref Temp_Window_Moving_X, ref Temp_Window_Moving_Y, Window_Width);
			val = GUI.Window(20220702, val, new WindowFunction(VeinControlConfigWindow), "矿脉工具".Translate() + "(1.1.3)ps:ctrl+↑↓");
			if (ShowInstructionsWindow)
			{
				Rect val2 = default(Rect);
				((Rect)(ref val2))..ctor(Window_X + Window_Width, Window_Y, IsEnglish ? ((float)(num3 * 20)) : Window_Width, (float)(num3 * 12));
				val2 = GUI.Window(20220703, val2, new WindowFunction(InstructionsWindow), "");
			}
		}
	}

	public void VeinControlConfigWindow(int winId)
	{
		//IL_0026: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Expected O, but got Unknown
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		int num = BaseSize + 4 + (IsEnglish ? 3 : 0);
		GUI.skin.horizontalSlider.margin = new RectOffset(0, 0, num / 2, 0);
		UILine = 15;
		if (GUI.Button(new Rect(Window_Width - (float)(num * 2), (float)num, (float)(num + 5), (float)(num + 5)), "?"))
		{
			ShowInstructionsWindow = !ShowInstructionsWindow;
		}
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		ControlToggol.Value = GUILayout.Toggle(ControlToggol.Value, "启动/关闭".Translate(), (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		MergeVeinGroup.Value = GUILayout.Toggle(MergeVeinGroup.Value, "合并矿脉".Translate(), (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		MoveAllVeinGroup.Value = GUILayout.Toggle(MoveAllVeinGroup.Value, "移动所有矿".Translate(), (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		MergeOil.Value = GUILayout.Toggle(MergeOil.Value, "合并油井".Translate(), (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		GUILayout.BeginHorizontal((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		GUILayout.Label("整理为".Translate() + $" {veinlines.Value} " + "行".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.FlexibleSpace();
		veinlines.Value = (int)GUILayout.HorizontalSlider((float)veinlines.Value, 1f, 20f, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width((float)(num * 3)) });
		GUILayout.EndHorizontal();
		GUILayout.BeginHorizontal((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		GUILayout.Label("切割出".Translate() + $" {changeveinsposx.Value} " + "个".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.FlexibleSpace();
		changeveinsposx.Value = (int)GUILayout.HorizontalSlider((float)changeveinsposx.Value, 2f, 72f, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width((float)(num * 3)) });
		GUILayout.EndHorizontal();
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		GUILayout.BeginHorizontal((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
		GUILayout.Label("生成矿物点击模式".Translate(), Array.Empty<GUILayoutOption>());
		bool flag = GUILayout.Toggle(AddVeinMode == 1, "按压".Translate(), Array.Empty<GUILayoutOption>());
		bool flag2 = GUILayout.Toggle(AddVeinMode == 0, "点按".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.EndHorizontal();
		if (flag2 && AddVeinMode == 1)
		{
			AddVeinMode = 0;
		}
		else if (flag && AddVeinMode == 0)
		{
			AddVeinMode = 1;
		}
		GUILayout.EndVertical();
		float num2 = BaseSize * 2;
		GUILayoutOption[] array = (GUILayoutOption[])(object)new GUILayoutOption[2]
		{
			GUILayout.Height(num2),
			GUILayout.Width(num2)
		};
		int num3 = (int)((Window_Width - 10f) / num2);
		int num4 = 14 / num3 + ((14 % num3 > 0) ? 1 : 0);
		for (int i = 0; i < num4; i++)
		{
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			for (int j = 0; j < num3; j++)
			{
				int num5 = i * num3 + j + 1;
				if (num5 == 15)
				{
					break;
				}
				ItemProtoSet items = LDB.items;
				object obj;
				if (items == null)
				{
					obj = null;
				}
				else
				{
					ItemProto obj2 = ((ProtoSet<ItemProto>)(object)items).Select(((ProtoSet<VeinProto>)(object)LDB.veins).Select(num5).MiningItem);
					if (obj2 == null)
					{
						obj = null;
					}
					else
					{
						Sprite iconSprite = obj2.iconSprite;
						obj = ((iconSprite != null) ? iconSprite.texture : null);
					}
				}
				if (GUILayout.Button((Texture)obj, (veintype == num5) ? selectedIconStyle : normalStyle, array))
				{
					veintype = ((veintype != num5) ? num5 : 0);
				}
			}
			GUILayout.EndHorizontal();
		}
		if (veintype == 7)
		{
			GUILayout.BeginHorizontal((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
			GUILayout.Label("添加油井速率".Translate(), Array.Empty<GUILayoutOption>());
			for (int k = 0; k < 3; k++)
			{
				bool flag3 = GUILayout.Toggle(OilAddIntervalBool[k], OilAddIntervalValue[k] + "/s", Array.Empty<GUILayoutOption>());
				if (flag3 != OilAddIntervalBool[k] && flag3)
				{
					SetOilAddInterval(k);
				}
			}
			GUILayout.EndHorizontal();
		}
		else
		{
			GUILayout.BeginHorizontal((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height((float)num) });
			GUILayout.Label("添加矿脉数量".Translate(), Array.Empty<GUILayoutOption>());
			bool flag4 = GUILayout.Toggle(AddVeinNumber == 500, "500", Array.Empty<GUILayoutOption>());
			bool flag5 = GUILayout.Toggle(AddVeinNumber != 500, "无穷".Translate(), Array.Empty<GUILayoutOption>());
			GUILayout.EndHorizontal();
			if (flag4 && AddVeinNumber != 500)
			{
				AddVeinNumber = 500;
			}
			else if (flag5 && AddVeinNumber == 500)
			{
				AddVeinNumber = 1000000000;
			}
		}
		GUILayout.EndVertical();
	}

	public void InstructionsWindow(int winId)
	{
		GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
		GUILayout.Label("警告:不要将油井移动到极点附近".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.Label("ctrl+鼠标左键:移动单矿".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.Label("alt+鼠标左键:移动矿堆".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.Label("shift+鼠标左键:移动所有矿".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.Label("alt+x+鼠标左键:切割矿脉".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.Label("X:进入拆除模式可以拆除矿脉".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.Label("~(Esc键下方):合并/不合并".Translate(), Array.Empty<GUILayoutOption>());
		GUILayout.EndHorizontal();
	}

	public void controlVein()
	{
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Invalid comparison between Unknown and I4
		//IL_016d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0172: 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_0209: Unknown result type (might be due to invalid IL or missing references)
		//IL_022d: Unknown result type (might be due to invalid IL or missing references)
		//IL_025b: 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_0284: Unknown result type (might be due to invalid IL or missing references)
		//IL_0289: 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_0292: Unknown result type (might be due to invalid IL or missing references)
		if (GameMain.mainPlayer == null || GameMain.localPlanet == null || (int)GameMain.localPlanet.type == 5 || (Object)(object)GameMain.mainPlayer.controller == (Object)null || GameMain.mainPlayer.controller.actionBuild == null || ((BuildTool)GameMain.mainPlayer.controller.actionBuild.clickTool).active)
		{
			return;
		}
		bool active = ((BuildTool)GameMain.mainPlayer.controller.actionBuild.dismantleTool).active;
		if (active)
		{
			veintype = 0;
		}
		if (veintype != 0 && !active)
		{
			if (AddVeinMode == 0 && Input.GetMouseButtonDown(0))
			{
				AddVein(veintype);
			}
			else if (AddVeinMode == 1 && Input.GetMouseButton(0))
			{
				AddVein(veintype);
			}
		}
		if (Input.GetMouseButton(0) && ControlToggol.Value && active)
		{
			RemoveVeinByMouse();
		}
		if (Input.GetMouseButton(1))
		{
			veintype = 0;
		}
		if (!ControlToggol.Value || !Input.GetMouseButton(0) || active)
		{
			return;
		}
		if (Input.GetMouseButtonDown(0))
		{
			pointveindata = GetVeinByMouse();
		}
		if (pointveindata.amount != 0)
		{
			if (Input.GetKeyDown((KeyCode)96))
			{
				MergeVeinGroup.Value = !MergeVeinGroup.Value;
			}
			RaycastHit val = default(RaycastHit);
			if (MoveAllVeinGroup.Value && Input.GetKey((KeyCode)304))
			{
				GetAllVein(pointveindata);
			}
			else if (Input.GetKey((KeyCode)308) && Input.GetKey((KeyCode)120))
			{
				SplitxVeinsFrom(pointveindata);
			}
			else if (Input.GetKey((KeyCode)308))
			{
				ChangeVeinGroupPos(pointveindata);
			}
			else if (Input.GetKey((KeyCode)306) && Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
			{
				Vector3 point = ((RaycastHit)(ref val)).point;
				ChangeVeinPos(pointveindata, point);
			}
		}
	}

	public void AddVein(int veintype)
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0042: 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_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_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Invalid comparison between Unknown and I4
		//IL_0210: Unknown result type (might be due to invalid IL or missing references)
		//IL_0211: Unknown result type (might be due to invalid IL or missing references)
		//IL_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_0227: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0230: Unknown result type (might be due to invalid IL or missing references)
		//IL_0264: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Unknown result type (might be due to invalid IL or missing references)
		//IL_0270: Unknown result type (might be due to invalid IL or missing references)
		//IL_029f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02aa: 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_02bb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0308: Unknown result type (might be due to invalid IL or missing references)
		//IL_0339: Unknown result type (might be due to invalid IL or missing references)
		//IL_0340: Unknown result type (might be due to invalid IL or missing references)
		//IL_0342: Unknown result type (might be due to invalid IL or missing references)
		//IL_034d: Unknown result type (might be due to invalid IL or missing references)
		//IL_036d: 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_009c: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a3: 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_00c2: 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: Invalid comparison between Unknown and I4
		//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_0157: Unknown result type (might be due to invalid IL or missing references)
		//IL_017a: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Unknown result type (might be due to invalid IL or missing references)
		//IL_0131: Unknown result type (might be due to invalid IL or missing references)
		PlanetData localPlanet = GameMain.localPlanet;
		RaycastHit val = default(RaycastHit);
		if (!Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
		{
			return;
		}
		Vector3 point = ((RaycastHit)(ref val)).point;
		int num = ((veintype == 7) ? ((int)(OilAddInterval * (float)oillowerlimit)) : AddVeinNumber);
		VeinData[] veinPool = localPlanet.factory.veinPool;
		foreach (VeinData val2 in veinPool)
		{
			if ((int)val2.type == 0)
			{
				continue;
			}
			Vector3 val3 = point - val2.pos;
			if (!(((Vector3)(ref val3)).magnitude < 1f))
			{
				continue;
			}
			if ((int)val2.type != 7)
			{
				if (localPlanet.factory.veinPool[val2.id].amount + num < 1000000000)
				{
					localPlanet.factory.veinPool[val2.id].amount += num;
					localPlanet.factory.veinGroups[val2.groupIndex].amount += num;
				}
				else
				{
					localPlanet.factory.veinGroups[val2.groupIndex].amount += 1000000000 - localPlanet.factory.veinPool[val2.id].amount;
					localPlanet.factory.veinPool[val2.id].amount = 1000000000;
				}
			}
			else
			{
				localPlanet.factory.veinPool[val2.id].amount += num;
				localPlanet.factory.veinGroups[val2.groupIndex].amount += num;
			}
			return;
		}
		Vector3 pos = point;
		VeinData val4 = default(VeinData);
		val4.amount = num;
		val4.type = (EVeinType)(byte)veintype;
		val4.pos = pos;
		val4.productId = ((ProtoSet<VeinProto>)(object)LDB.veins).Select(veintype).MiningItem;
		val4.modelIndex = (short)((ProtoSet<VeinProto>)(object)LDB.veins).Select(veintype).ModelIndex;
		VeinData val5 = val4;
		val5.id = localPlanet.factory.AddVeinData(val5);
		val5.colliderId = localPlanet.physics.AddColliderData(((ColliderData)(ref ((ProtoSet<VeinProto>)(object)LDB.veins).Select(veintype).prefabDesc.colliders[0])).BindToObject(val5.id, 0, (EObjectType)2, val5.pos, Quaternion.FromToRotation(Vector3.up, ((Vector3)(ref val5.pos)).normalized)));
		val5.modelId = localPlanet.factoryModel.gpuiManager.AddModel((int)val5.modelIndex, val5.id, val5.pos, Maths.SphericalRotation(val5.pos, Random.value * 360f), true);
		val5.minerCount = 0;
		localPlanet.factory.AssignGroupIndexForNewVein(ref val5);
		localPlanet.factory.veinPool[val5.id] = val5;
		localPlanet.factory.RefreshVeinMiningDisplay(val5.id, 0, 0);
		localPlanet.factory.RecalculateVeinGroup((int)localPlanet.factory.veinPool[val5.id].groupIndex);
	}

	public VeinData GetVeinByMouse()
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: 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_0043: Unknown result type (might be due to invalid IL or missing references)
		//IL_0045: 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_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_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: 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_00a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_0109: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: 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_0104: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ac: 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_00b4: Invalid comparison between Unknown and I4
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: 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_00d7: 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)
		PlanetData localPlanet = GameMain.localPlanet;
		RaycastHit val = default(RaycastHit);
		if (!Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
		{
			return default(VeinData);
		}
		Vector3 point = ((RaycastHit)(ref val)).point;
		float num = 100f;
		VeinData result = default(VeinData);
		VeinData[] veinPool = localPlanet.factory.veinPool;
		foreach (VeinData val2 in veinPool)
		{
			if (val2.id != 0)
			{
				Vector3 val3 = point - val2.pos;
				if (((Vector3)(ref val3)).magnitude < num && (int)val2.type > 0)
				{
					val3 = point - val2.pos;
					num = ((Vector3)(ref val3)).magnitude;
					result = val2;
				}
			}
		}
		if (num > 4f)
		{
			return default(VeinData);
		}
		return result;
	}

	public void RemoveVeinByMouse()
	{
		//IL_0016: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: 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)
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_0060: Unknown result type (might be due to invalid IL or missing references)
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_0068: Unknown result type (might be due to invalid IL or missing references)
		//IL_0069: 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_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_0075: Unknown result type (might be due to invalid IL or missing references)
		//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_008d: Invalid comparison between Unknown and I4
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_0103: Unknown result type (might be due to invalid IL or missing references)
		//IL_0129: Unknown result type (might be due to invalid IL or missing references)
		//IL_0136: Unknown result type (might be due to invalid IL or missing references)
		//IL_0146: 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_0175: Unknown result type (might be due to invalid IL or missing references)
		PlanetData localPlanet = GameMain.localPlanet;
		RaycastHit val = default(RaycastHit);
		if (!Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
		{
			return;
		}
		Vector3 point = ((RaycastHit)(ref val)).point;
		VeinData[] veinPool = localPlanet.factory.veinPool;
		foreach (VeinData val2 in veinPool)
		{
			Vector3 val3 = point - val2.pos;
			if (((Vector3)(ref val3)).magnitude < 1f && (int)val2.type > 0)
			{
				localPlanet.factory.veinGroups[val2.groupIndex].count--;
				localPlanet.factory.veinGroups[val2.groupIndex].amount -= val2.amount;
				localPlanet.factory.RemoveVeinWithComponents(val2.id);
				if (localPlanet.factory.veinGroups[val2.groupIndex].count == 0)
				{
					localPlanet.factory.veinGroups[val2.groupIndex].type = (EVeinType)0;
					localPlanet.factory.veinGroups[val2.groupIndex].amount = 0L;
					localPlanet.factory.veinGroups[val2.groupIndex].pos = Vector3.zero;
				}
				break;
			}
		}
	}

	public void ChangeVeinGroupPos(VeinData vd)
	{
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_0080: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_008b: Expected I4, but got Unknown
		//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_00aa: Unknown result type (might be due to invalid IL or missing references)
		//IL_036c: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ef: Invalid comparison between Unknown and I4
		//IL_00fd: 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_0134: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_0181: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Invalid comparison between Unknown and I4
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
		//IL_0201: Unknown result type (might be due to invalid IL or missing references)
		//IL_0203: Unknown result type (might be due to invalid IL or missing references)
		//IL_0205: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0331: Unknown result type (might be due to invalid IL or missing references)
		//IL_033e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0348: Unknown result type (might be due to invalid IL or missing references)
		//IL_022e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0230: Unknown result type (might be due to invalid IL or missing references)
		if (CoolDown)
		{
			return;
		}
		PlanetData localPlanet = GameMain.localPlanet;
		RaycastHit val = default(RaycastHit);
		if (!Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
		{
			return;
		}
		Vector3 point = ((RaycastHit)(ref val)).point;
		VeinData[] veinPool = localPlanet.factory.veinPool;
		Vector3 pos = veinPool[vd.id].pos;
		int num = 0;
		PrefabDesc prefabDesc = ((ProtoSet<VeinProto>)(object)LDB.veins).Select((int)vd.type).prefabDesc;
		VeinData[] array = veinPool;
		foreach (VeinData val2 in array)
		{
			if (val2.id <= 0 || val2.groupIndex != veinPool[vd.id].groupIndex)
			{
				continue;
			}
			int id = val2.id;
			if ((int)vd.type == 7 && MergeOil.Value && vd.id != id)
			{
				localPlanet.factory.veinPool[vd.id].amount += val2.amount;
				localPlanet.factory.veinGroups[vd.groupIndex].count--;
				localPlanet.factory.RemoveVeinWithComponents(val2.id);
				localPlanet.factory.RecalculateVeinGroup((int)localPlanet.factory.veinPool[vd.id].groupIndex);
				localPlanet.factory.ArrangeVeinGroups();
				continue;
			}
			if (MergeVeinGroup.Value)
			{
				veinPool[id].pos = point;
			}
			else
			{
				Vector3 val3 = PostionCompute(pos, point, val2.pos, num++, (int)vd.type == 7);
				if (CoolDown)
				{
					return;
				}
				if ((double)Vector3.Distance(val3, val2.pos) < 0.01)
				{
					continue;
				}
				veinPool[id].pos = val3;
				if (float.IsNaN(veinPool[id].pos.x) || float.IsNaN(veinPool[id].pos.y) || float.IsNaN(veinPool[id].pos.z))
				{
					continue;
				}
			}
			int colliderId = veinPool[id].colliderId;
			localPlanet.physics.RemoveColliderData(colliderId);
			veinPool[id].colliderId = localPlanet.physics.AddColliderData(((ColliderData)(ref prefabDesc.colliders[0])).BindToObject(id, 0, (EObjectType)2, veinPool[id].pos, Quaternion.FromToRotation(Vector3.up, ((Vector3)(ref veinPool[id].pos)).normalized)));
			localPlanet.factoryModel.gpuiManager.AlterModel((int)veinPool[id].modelIndex, veinPool[id].modelId, id, veinPool[id].pos, Maths.SphericalRotation(veinPool[id].pos, 90f), true);
		}
		localPlanet.factory.RecalculateVeinGroup((int)vd.groupIndex);
		localPlanet.factory.ArrangeVeinGroups();
	}

	public void ChangeVeinPos(VeinData vd, Vector3 pos)
	{
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0064: Expected I4, but got Unknown
		//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_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_009e: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c8: 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_01de: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0148: Unknown result type (might be due to invalid IL or missing references)
		//IL_0159: Unknown result type (might be due to invalid IL or missing references)
		//IL_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fd: 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_0205: Unknown result type (might be due to invalid IL or missing references)
		//IL_0207: Unknown result type (might be due to invalid IL or missing references)
		//IL_0213: Unknown result type (might be due to invalid IL or missing references)
		//IL_021a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0225: Unknown result type (might be due to invalid IL or missing references)
		//IL_0227: Unknown result type (might be due to invalid IL or missing references)
		//IL_0233: Unknown result type (might be due to invalid IL or missing references)
		//IL_0238: Unknown result type (might be due to invalid IL or missing references)
		//IL_023d: 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_02cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0375: Unknown result type (might be due to invalid IL or missing references)
		//IL_0386: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0301: Unknown result type (might be due to invalid IL or missing references)
		//IL_0306: Unknown result type (might be due to invalid IL or missing references)
		//IL_030b: Unknown result type (might be due to invalid IL or missing references)
		//IL_032c: Unknown result type (might be due to invalid IL or missing references)
		PlanetData localPlanet = GameMain.localPlanet;
		int id = vd.id;
		VeinData[] veinPool = localPlanet.factory.veinPool;
		veinPool[id].pos = pos;
		int colliderId = veinPool[id].colliderId;
		localPlanet.physics.RemoveColliderData(colliderId);
		veinPool[id].colliderId = localPlanet.physics.AddColliderData(((ColliderData)(ref ((ProtoSet<VeinProto>)(object)LDB.veins).Select((int)veinPool[id].type).prefabDesc.colliders[0])).BindToObject(id, 0, (EObjectType)2, veinPool[id].pos, Quaternion.FromToRotation(Vector3.up, ((Vector3)(ref veinPool[id].pos)).normalized)));
		localPlanet.factoryModel.gpuiManager.AlterModel((int)veinPool[id].modelIndex, veinPool[id].modelId, id, veinPool[id].pos, Maths.SphericalRotation(veinPool[id].pos, 90f), true);
		bool flag = false;
		int num = -1;
		Vector3 val3;
		if (localPlanet.factory.veinGroups[veinPool[id].groupIndex].count > 1)
		{
			Vector3 val = pos - localPlanet.factory.veinGroups[veinPool[id].groupIndex].pos * (localPlanet.realRadius + 2.5f);
			if ((double)((Vector3)(ref val)).magnitude > 10.0)
			{
				flag = true;
				num = veinPool[id].groupIndex;
				veinPool[id].groupIndex = -1;
			}
		}
		else
		{
			localPlanet.factory.veinGroups[veinPool[id].groupIndex].pos = veinPool[id].pos / (localPlanet.realRadius + 2.5f);
			VeinData[] veinPool2 = localPlanet.factory.veinPool;
			foreach (VeinData val2 in veinPool2)
			{
				if (val2.type == veinPool[id].type && val2.groupIndex != num)
				{
					val3 = val2.pos - veinPool[id].pos;
					if (((Vector3)(ref val3)).magnitude < 10f)
					{
						num = veinPool[id].groupIndex;
						veinPool[id].groupIndex = val2.groupIndex;
						localPlanet.factory.RecalculateVeinGroup(num);
					}
				}
			}
		}
		if (flag)
		{
			localPlanet.factory.RecalculateVeinGroup(num);
			VeinData[] veinPool3 = localPlanet.factory.veinPool;
			foreach (VeinData val4 in veinPool3)
			{
				if (val4.type == veinPool[id].type && val4.groupIndex != num)
				{
					val3 = val4.pos - veinPool[id].pos;
					if (((Vector3)(ref val3)).magnitude < 10f)
					{
						veinPool[id].groupIndex = val4.groupIndex;
					}
				}
			}
			if (veinPool[id].groupIndex == -1)
			{
				veinPool[id].groupIndex = (short)localPlanet.factory.AddVeinGroup(veinPool[id].type, ((Vector3)(ref veinPool[id].pos)).normalized);
			}
		}
		localPlanet.factory.RecalculateVeinGroup((int)veinPool[id].groupIndex);
		localPlanet.factory.ArrangeVeinGroups();
	}

	public void GetAllVein(VeinData vd)
	{
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Unknown result type (might be due to invalid IL or missing references)
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_0071: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_008b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a4: 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_00bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cd: Invalid comparison between Unknown and I4
		//IL_00db: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: 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_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0138: Unknown result type (might be due to invalid IL or missing references)
		//IL_014d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_0187: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a3: 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_01d6: Unknown result type (might be due to invalid IL or missing references)
		//IL_01d8: 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_01db: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ee: Invalid comparison between Unknown and I4
		//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
		//IL_0266: Unknown result type (might be due to invalid IL or missing references)
		//IL_026d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0310: Unknown result type (might be due to invalid IL or missing references)
		//IL_031a: Expected I4, but got Unknown
		//IL_0336: Unknown result type (might be due to invalid IL or missing references)
		//IL_033b: Unknown result type (might be due to invalid IL or missing references)
		//IL_034d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0352: Unknown result type (might be due to invalid IL or missing references)
		//IL_0357: Unknown result type (might be due to invalid IL or missing references)
		//IL_0395: Unknown result type (might be due to invalid IL or missing references)
		//IL_03a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_0280: 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_02a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
		if (CoolDown)
		{
			return;
		}
		PlanetData localPlanet = GameMain.localPlanet;
		RaycastHit val = default(RaycastHit);
		if (!Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
		{
			return;
		}
		Vector3 point = ((RaycastHit)(ref val)).point;
		VeinData[] veinPool = localPlanet.factory.veinPool;
		Vector3 pos = veinPool[vd.id].pos;
		int num = 0;
		VeinData[] array = veinPool;
		foreach (VeinData val2 in array)
		{
			if (val2.id <= 0 || val2.type != vd.type)
			{
				continue;
			}
			int id = val2.id;
			if ((int)vd.type == 7 && MergeOil.Value && vd.id != id)
			{
				localPlanet.factory.veinPool[vd.id].amount += val2.amount;
				localPlanet.factory.veinGroups[vd.groupIndex].amount += val2.amount;
				localPlanet.factory.veinGroups[val2.groupIndex].count--;
				localPlanet.factory.RemoveVeinWithComponents(val2.id);
				localPlanet.factory.RecalculateVeinGroup((int)localPlanet.factory.veinPool[vd.id].groupIndex);
				localPlanet.factory.RecalculateVeinGroup((int)val2.groupIndex);
				localPlanet.factory.ArrangeVeinGroups();
				continue;
			}
			veinPool[id].pos = (MergeVeinGroup.Value ? point : PostionCompute(pos, point, val2.pos, num++, (int)vd.type == 7));
			if (CoolDown)
			{
				return;
			}
			if (!float.IsNaN(veinPool[id].pos.x) && !float.IsNaN(veinPool[id].pos.y) && !float.IsNaN(veinPool[id].pos.z))
			{
				if (val2.groupIndex != vd.groupIndex)
				{
					int groupIndex = veinPool[val2.id].groupIndex;
					veinPool[val2.id].groupIndex = vd.groupIndex;
					localPlanet.factory.RecalculateVeinGroup(groupIndex);
					localPlanet.factory.RecalculateVeinGroup((int)vd.groupIndex);
					localPlanet.factory.ArrangeVeinGroups();
				}
				int colliderId = veinPool[id].colliderId;
				localPlanet.physics.RemoveColliderData(colliderId);
				veinPool[id].colliderId = localPlanet.physics.AddColliderData(((ColliderData)(ref ((ProtoSet<VeinProto>)(object)LDB.veins).Select((int)veinPool[id].type).prefabDesc.colliders[0])).BindToObject(id, 0, (EObjectType)2, veinPool[id].pos, Quaternion.FromToRotation(Vector3.up, ((Vector3)(ref veinPool[id].pos)).normalized)));
				localPlanet.factoryModel.gpuiManager.AlterModel((int)veinPool[id].modelIndex, veinPool[id].modelId, id, veinPool[id].pos, Maths.SphericalRotation(veinPool[id].pos, 90f), true);
			}
		}
		localPlanet.factory.RecalculateVeinGroup((int)vd.groupIndex);
		localPlanet.factory.ArrangeVeinGroups();
	}

	public void SplitxVeinsFrom(VeinData vd)
	{
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ab: 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_00c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0098: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: 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: 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_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_0209: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_0202: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_020a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0378: Unknown result type (might be due to invalid IL or missing references)
		//IL_037d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0382: Unknown result type (might be due to invalid IL or missing references)
		//IL_0390: Unknown result type (might be due to invalid IL or missing references)
		//IL_0392: Unknown result type (might be due to invalid IL or missing references)
		//IL_0397: Unknown result type (might be due to invalid IL or missing references)
		//IL_0398: 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_0437: Unknown result type (might be due to invalid IL or missing references)
		//IL_0448: Unknown result type (might be due to invalid IL or missing references)
		//IL_0449: Unknown result type (might be due to invalid IL or missing references)
		//IL_0455: Unknown result type (might be due to invalid IL or missing references)
		//IL_029f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a9: Expected I4, but got Unknown
		//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ca: Unknown result type (might be due to invalid IL or missing references)
		//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0324: Unknown result type (might be due to invalid IL or missing references)
		//IL_0331: Unknown result type (might be due to invalid IL or missing references)
		//IL_033b: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b9: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_03c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_03cb: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d5: Unknown result type (might be due to invalid IL or missing references)
		//IL_047d: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_04ed: Unknown result type (might be due to invalid IL or missing references)
		if (CoolDown)
		{
			return;
		}
		PlanetData localPlanet = GameMain.localPlanet;
		RaycastHit val = default(RaycastHit);
		if (!Physics.Raycast(GameMain.mainPlayer.controller.mainCamera.ScreenPointToRay(Input.mousePosition), ref val, 800f, 8720, (QueryTriggerInteraction)2))
		{
			return;
		}
		if (localPlanet.factory.veinGroups[localPlanet.factory.veinPool[vd.id].groupIndex].count <= changeveinsposx.Value)
		{
			ChangeVeinGroupPos(vd);
			return;
		}
		Vector3 point = ((RaycastHit)(ref val)).point;
		VeinData[] veinPool = localPlanet.factory.veinPool;
		Vector3 pos = veinPool[vd.id].pos;
		bool flag = false;
		List<int> list = new List<int>();
		VeinData[] array = veinPool;
		foreach (VeinData val2 in array)
		{
			if (val2.id <= 0 || val2.groupIndex != vd.groupIndex)
			{
				continue;
			}
			int id = val2.id;
			if (vd.id == id)
			{
				flag = true;
			}
			if (flag || list.Count != changeveinsposx.Value - 1)
			{
				list.Add(val2.id);
				if (list.Count == changeveinsposx.Value)
				{
					break;
				}
			}
		}
		if (list.Count != changeveinsposx.Value)
		{
			return;
		}
		int num = 0;
		foreach (int item in list)
		{
			veinPool[item].pos = (MergeVeinGroup.Value ? point : PostionCompute(pos, point, veinPool[item].pos, num++));
			if (!float.IsNaN(veinPool[item].pos.x) && !float.IsNaN(veinPool[item].pos.y) && !float.IsNaN(veinPool[item].pos.z))
			{
				int colliderId = veinPool[item].colliderId;
				localPlanet.physics.RemoveColliderData(colliderId);
				veinPool[item].colliderId = localPlanet.physics.AddColliderData(((ColliderData)(ref ((ProtoSet<VeinProto>)(object)LDB.veins).Select((int)veinPool[item].type).prefabDesc.colliders[0])).BindToObject(item, 0, (EObjectType)2, veinPool[item].pos, Quaternion.FromToRotation(Vector3.up, ((Vector3)(ref veinPool[item].pos)).normalized)));
				localPlanet.factoryModel.gpuiManager.AlterModel((int)veinPool[item].modelIndex, veinPool[item].modelId, item, veinPool[item].pos, Maths.SphericalRotation(veinPool[item].pos, 90f), true);
			}
		}
		bool flag2 = true;
		VeinData[] array2 = veinPool;
		foreach (VeinData val3 in array2)
		{
			if (!list.Contains(val3.id) && val3.type == vd.type)
			{
				Vector3 val4 = localPlanet.factory.veinPool[vd.id].pos - val3.pos;
				if (((Vector3)(ref val4)).magnitude < 5f)
				{
					flag2 = false;
					break;
				}
			}
		}
		if (!flag2)
		{
			return;
		}
		int groupIndex = localPlanet.factory.veinPool[vd.id].groupIndex;
		localPlanet.factory.veinPool[vd.id].groupIndex = (short)localPlanet.factory.AddVeinGroup(vd.type, ((Vector3)(ref vd.pos)).normalized);
		foreach (int item2 in list)
		{
			if (item2 != vd.id)
			{
				localPlanet.factory.veinPool[item2].groupIndex = localPlanet.factory.veinPool[vd.id].groupIndex;
			}
		}
		localPlanet.factory.RecalculateVeinGroup((int)localPlanet.factory.veinPool[vd.id].groupIndex);
		localPlanet.factory.RecalculateVeinGroup(groupIndex);
		localPlanet.factory.ArrangeVeinGroups();
	}

	public Vector3 PostionCompute(Vector3 begin, Vector3 end, Vector3 pointpos, int index, bool oil = false)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: 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_0053: Unknown result type (might be due to invalid IL or missing references)
		//IL_0346: 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_0086: 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_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_0094: Unknown result type (might be due to invalid IL or missing references)
		//IL_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_009f: Unknown result type (might be due to invalid IL or missing references)
		//IL_007d: 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_012a: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0153: Unknown result type (might be due to invalid IL or missing references)
		//IL_0158: Unknown result type (might be due to invalid IL or missing references)
		//IL_015d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0162: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c1: 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_00df: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Unknown result type (might be due to invalid IL or missing references)
		//IL_0117: Unknown result type (might be due to invalid IL or missing references)
		//IL_011c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0121: Unknown result type (might be due to invalid IL or missing references)
		//IL_0126: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_0169: Unknown result type (might be due to invalid IL or missing references)
		//IL_0176: 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_018c: Unknown result type (might be due to invalid IL or missing references)
		//IL_019a: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
		//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_021f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_0216: Unknown result type (might be due to invalid IL or missing references)
		//IL_025f: Unknown result type (might be due to invalid IL or missing references)
		//IL_028f: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
		//IL_02fe: Unknown result type (might be due to invalid IL or missing references)
		//IL_030b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0341: Unknown result type (might be due to invalid IL or missing references)
		//IL_0342: Unknown result type (might be due to invalid IL or missing references)
		//IL_033c: Unknown result type (might be due to invalid IL or missing references)
		//IL_033d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0318: Unknown result type (might be due to invalid IL or missing references)
		//IL_0325: Unknown result type (might be due to invalid IL or missing references)
		if (end.y > 193f || end.y < -193f)
		{
			UIMessageBox.Show("移动矿堆失败".Translate(), "当前纬度过高,为避免出错,无法移动矿堆".Translate(), "确定".Translate(), 3);
			CoolDown = true;
			return pointpos;
		}
		if ((MergeOil.Value && oil) || MergeVeinGroup.Value)
		{
			return end;
		}
		Vector3 val = end;
		float realRadius = GameMain.localPlanet.realRadius;
		Quaternion val2 = Maths.SphericalRotation(begin, 0f);
		float num = (oil ? 15f : 1.5f);
		Vector3 val3;
		if (!oil)
		{
			val.x = (int)val.x;
			val.z = (int)val.z;
			val.y = (int)val.y;
			val3 = begin + val2 * (new Vector3((float)(index / veinlines.Value), 0f, (float)(index % veinlines.Value)) * num);
		}
		else
		{
			val3 = begin - val2 * new Vector3((float)(index / veinlines.Value * 8), 0f, (float)(index % veinlines.Value) * num);
		}
		double num2 = Math.Atan(begin.z / begin.x) - Math.Atan(val.z / val.x);
		double num3 = Math.Acos(begin.y / realRadius) - Math.Acos(val.y / realRadius);
		double num4 = 0.0 - Math.Atan(val3.z / val3.x) + num2;
		double num5 = Math.Acos(val3.y / realRadius) - num3;
		if (num2 == double.NaN || num3 == double.NaN || num4 == double.NaN || num5 == double.NaN)
		{
			return pointpos;
		}
		val3.x = (float)((end.x < 0f) ? (0.0 - Math.Abs(Math.Sin(num5) * Math.Cos(num4))) : Math.Abs(Math.Sin(num5) * Math.Cos(num4)));
		val3.y = (float)((end.y < 0f) ? (0.0 - Math.Abs(Math.Cos(num5))) : Math.Abs(Math.Cos(num5)));
		val3.z = (float)((end.z < 0f) ? (0.0 - Math.Abs(Math.Sin(num5) * Math.Sin(num4))) : Math.Abs(Math.Sin(num5) * Math.Sin(num4)));
		val3.x *= realRadius;
		val3.y *= realRadius;
		val3.z *= realRadius;
		if (val3.x == float.NaN || val3.y == float.NaN || val3.z == float.NaN || val3.y > 190f || val3.y < -190f)
		{
			return pointpos;
		}
		return val3;
	}

	internal void SetOilAddInterval(int selectedIndex)
	{
		OilAddInterval = OilAddIntervalValue[selectedIndex];
		for (int i = 0; i < 3; i++)
		{
			OilAddIntervalBool[i] = i == selectedIndex;
		}
	}

	public string VeintypechineseTranslate(int i)
	{
		return i switch
		{
			1 => "铁矿", 
			2 => "铜矿", 
			3 => "硅矿", 
			4 => "钛矿", 
			5 => "石矿", 
			6 => "碳矿", 
			7 => "原油涌泉", 
			8 => "可燃冰", 
			9 => "金伯利矿石", 
			10 => "分形硅石", 
			11 => "有机晶体", 
			12 => "光栅石", 
			13 => "刺笋结晶", 
			14 => "单极磁矿", 
			_ => "", 
		};
	}

	public int VeinIdToItemId(int veinId)
	{
		return veinId switch
		{
			1 => 1001, 
			2 => 1002, 
			3 => 1003, 
			4 => 1004, 
			5 => 1005, 
			6 => 1006, 
			7 => 1007, 
			8 => 1011, 
			9 => 1012, 
			10 => 1013, 
			11 => 1117, 
			12 => 1014, 
			13 => 1015, 
			14 => 1016, 
			_ => 0, 
		};
	}

	public void moveWindow(ref float x, ref float y, ref float x_move, ref float y_move, ref bool movewindow, ref float tempx, ref float tempy, float x_width)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0025: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: 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_006d: 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)
		//IL_0086: Unknown result type (might be due to invalid IL or missing references)
		//IL_0093: 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_0146: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: 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)
		Vector2 val = Vector2.op_Implicit(Input.mousePosition);
		int height = Screen.height;
		bool flag = x <= val.x && x + Window_Width >= val.x;
		bool flag2 = (float)Screen.height >= y + val.y && (float)Screen.height <= Window_Height + y + val.y;
		MouseInWindow = flag && flag2;
		if (val.x > x && val.x < x + x_width && (float)height - val.y > y && (float)height - val.y < y + 20f)
		{
			if (Input.GetMouseButton(0))
			{
				if (!movewindow)
				{
					x_move = x;
					y_move = y;
					tempx = val.x;
					tempy = (float)height - val.y;
				}
				movewindow = true;
				x = x_move + val.x - tempx;
				y = y_move + ((float)height - val.y) - tempy;
			}
			else
			{
				movewindow = false;
				tempx = x;
				tempy = y;
			}
		}
		else if (movewindow)
		{
			movewindow = false;
			x = x_move + val.x - tempx;
			y = y_move + ((float)height - val.y) - tempy;
		}
	}
}