Decompiled source of FractionateEverything v2.1.2

FractionateEverything.dll

Decompiled 12 hours ago
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using BuildBarTool;
using CommonAPI;
using CommonAPI.Systems;
using CommonAPI.Systems.ModLocalization;
using DSP_Battle;
using FE.Compatibility;
using FE.Logic.Building;
using FE.Logic.Manager;
using FE.Logic.Recipe;
using FE.UI.Components;
using FE.UI.View;
using FE.UI.View.CoreOperate;
using FE.UI.View.GetItemRecipe;
using FE.UI.View.ModPackage;
using FE.UI.View.ProgressSystem;
using FE.UI.View.Setting;
using FE.UI.View.Statistic;
using FE.Utils;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using ProjectGenesis.Patches;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.UI;
using crecheng.DSPModSave;
using xiaoye97;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("FractionateEverything")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FractionateEverything")]
[assembly: AssemblyCopyright("Copyright ©  2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("3204cf73-a6e8-4c3b-a91d-e4baf6fca974")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
internal static class PluginInfo
{
	public const string PLUGIN_GUID = "com.menglei.dsp.fe";

	public const string PLUGIN_NAME = "FractionateEverything";

	public const string PLUGIN_VERSION = "2.1.2";
}
namespace FE
{
	[BepInPlugin("com.menglei.dsp.fe", "FractionateEverything", "2.1.2")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[CommonAPISubmoduleDependency(new string[] { "CustomKeyBindSystem", "ProtoRegistry", "TabSystem", "LocalizationModule" })]
	public class FractionateEverything : BaseUnityPlugin, IModCanSave
	{
		public const string Tech1134IconPath = "Icons/Tech/1134";

		public static int tab分馏;

		public static string ModPath;

		public static ResourceData FEAssets;

		public static readonly Harmony harmony = new Harmony("com.menglei.dsp.fe");

		private static bool _finished;

		private static ConfigFile configFile;

		public void LoadConfig()
		{
			configFile = ((BaseUnityPlugin)this).Config;
			CheckPlugins.DisableMessageBox = ((BaseUnityPlugin)this).Config.Bind<bool>("other", "DisableMessageBox", false, "Don't show messagebox when FractionateEverything loaded.");
			MainWindow.LoadConfig(((BaseUnityPlugin)this).Config);
			Traverse.Create((object)((BaseUnityPlugin)this).Config).Property("OrphanedEntries", (object[])null).GetValue<Dictionary<ConfigDefinition, string>>()
				.Clear();
			((BaseUnityPlugin)this).Config.Save();
		}

		public static void SaveConfig()
		{
			configFile.Save();
		}

		public void Awake()
		{
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Expected O, but got Unknown
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Expected O, but got Unknown
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c1: Expected O, but got Unknown
			using (ProtoRegistry.StartModLoad("com.menglei.dsp.fe"))
			{
				FE.Utils.Utils.InitLogger(((BaseUnityPlugin)this).Logger);
				FE.Utils.Utils.Register("分馏页面", "Fractionate", "分馏");
				FE.Utils.Utils.Register("分馏与插件页面", "Frac&Beacon", "分馏&插件");
				ERecipeExtension.AddTranslations();
				OutputInfo.AddTranslations();
				FE.Utils.Utils.AddTranslations();
				BuildingManager.AddTranslations();
				ItemManager.AddTranslations();
				ProcessManager.AddTranslations();
				TechManager.AddTranslations();
				MainWindow.AddTranslations();
				LoadConfig();
				tab分馏 = TabSystem.RegisterTab("com.menglei.dsp.fe:com.menglei.dsp.feTab", new TabData(Localization.Translate("分馏页面"), "Icons/Tech/1134"));
				Assembly executingAssembly = Assembly.GetExecutingAssembly();
				ModPath = Path.GetDirectoryName(executingAssembly.Location);
				FEAssets = new ResourceData("com.menglei.dsp.fe", "fe", ModPath);
				FEAssets.LoadAssetBundle("fe");
				ProtoRegistry.AddResource(FEAssets);
				LDBTool.PreAddDataAction = (Action)Delegate.Combine(LDBTool.PreAddDataAction, new Action(PreAddData));
				LDBTool.PostAddDataAction = (Action)Delegate.Combine(LDBTool.PostAddDataAction, new Action(PostAddData));
				string @namespace = typeof(CheckPlugins).Namespace;
				Type[] types = executingAssembly.GetTypes();
				foreach (Type type in types)
				{
					if (type.Namespace != null && (@namespace == null || !type.Namespace.StartsWith(@namespace)))
					{
						harmony.PatchAll(type);
					}
				}
				Harmony obj = harmony;
				MethodInfo methodInfo = AccessTools.Method(typeof(VFPreload), "InvokeOnLoadWorkEnded", (Type[])null, (Type[])null);
				HarmonyMethod val = new HarmonyMethod(typeof(FractionateEverything), "FinalAction", (Type[])null);
				val.after = new string[1] { "me.xiaoye97.plugin.Dyson.LDBTool" };
				obj.Patch((MethodBase)methodInfo, (HarmonyMethod)null, val, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
				MainWindow.Init();
			}
		}

		private void Start()
		{
			MyWindowManager.InitBaseObjects();
			MyWindowManager.Enable(on: true);
		}

		private void OnDestroy()
		{
			MyWindowManager.Enable(on: false);
		}

		private void Update()
		{
			MainWindow.OnInputUpdate();
		}

		public void PreAddData()
		{
			ItemManager.AddFractionalPrototypeAndEssence();
			BuildingManager.AddFractionators();
			TechManager.AddTechs();
		}

		public void PostAddData()
		{
			BuildingManager.SetFractionatorMaterial();
		}

		public static void FinalAction()
		{
			if (!_finished)
			{
				PreloadAndInitAll();
				ProcessManager.Init();
				ItemManager.CalculateItemValues();
				ItemManager.ClassifyItemsToMatrix();
				BuildingManager.UpdateHpAndEnergy();
				BuildingManager.SetFractionatorCacheSize();
				RecipeManager.AddFracRecipes();
				_finished = true;
			}
		}

		public static void PreloadAndInitAll()
		{
			ItemProto.InitFuelNeeds();
			ItemProto.InitTurretNeeds();
			ItemProto.InitFluids();
			ItemProto.InitTurrets();
			ItemProto.InitEnemyDropTables();
			ItemProto.InitConstructableItems();
			ItemProto.InitItemIds();
			ItemProto.InitItemIndices();
			ItemProto.InitMechaMaterials();
			ItemProto.InitFighterIndices();
			ItemProto.InitPowerFacilityIndices();
			ItemProto.InitProductionMask();
			ModelProto.InitMaxModelIndex();
			ModelProto.InitModelIndices();
			ModelProto.InitModelOrders();
			RecipeProto.InitFractionatorNeeds();
			RaycastLogic.LoadStatic();
			StorageComponent.staticLoaded = false;
			StorageComponent.LoadStatic();
		}

		public void Import(BinaryReader r)
		{
			int num = r.ReadInt32();
			RecipeManager.Import(r);
			BuildingManager.Import(r);
			ItemManager.Import(r);
			MainWindow.Import(r);
			TechManager.CheckRecipesWhenImport();
		}

		public void Export(BinaryWriter w)
		{
			w.Write(1);
			RecipeManager.Export(w);
			BuildingManager.Export(w);
			ItemManager.Export(w);
			MainWindow.Export(w);
		}

		public void IntoOtherSave()
		{
			RecipeManager.IntoOtherSave();
			BuildingManager.IntoOtherSave();
			ItemManager.IntoOtherSave();
			MainWindow.IntoOtherSave();
		}
	}
}
namespace FE.Utils
{
	public static class Utils
	{
		private record struct ModStr
		{
			public string key;

			public string enTrans;

			public string cnTrans;
		}

		private static readonly List<ModStr> modStringList = new List<ModStr>();

		private static ManualLogSource logger;

		internal const int I伊卡洛斯 = 0;

		internal const int I行星基地 = 1;

		internal const int I巨构星际组装厂 = 2;

		internal const int I = 1000;

		internal const int I铁矿 = 1001;

		internal const int I铜矿 = 1002;

		internal const int I硅石 = 1003;

		internal const int I钛石 = 1004;

		internal const int I石矿 = 1005;

		internal const int I煤矿 = 1006;

		internal const int I原油 = 1007;

		internal const int I可燃冰 = 1011;

		internal const int I金伯利矿石 = 1012;

		internal const int I分形硅石 = 1013;

		internal const int I光栅石 = 1014;

		internal const int I刺笋结晶 = 1015;

		internal const int I单极磁石 = 1016;

		internal const int I木材 = 1030;

		internal const int I植物燃料 = 1031;

		internal const int I沙土 = 1099;

		internal const int I铁块 = 1101;

		internal const int I磁铁 = 1102;

		internal const int I钢材 = 1103;

		internal const int I铜块 = 1104;

		internal const int I高纯硅块 = 1105;

		internal const int I钛块 = 1106;

		internal const int I钛合金 = 1107;

		internal const int I石材 = 1108;

		internal const int I高能石墨 = 1109;

		internal const int I玻璃 = 1110;

		internal const int I棱镜 = 1111;

		internal const int I金刚石 = 1112;

		internal const int I晶格硅 = 1113;

		internal const int I精炼油_GB焦油 = 1114;

		internal const int I塑料_GB聚丙烯 = 1115;

		internal const int I硫酸 = 1116;

		internal const int I有机晶体 = 1117;

		internal const int I钛晶石 = 1118;

		internal const int I钛化玻璃 = 1119;

		internal const int I = 1120;

		internal const int I重氢 = 1121;

		internal const int I反物质 = 1122;

		internal const int I石墨烯 = 1123;

		internal const int I碳纳米管 = 1124;

		internal const int I框架材料 = 1125;

		internal const int I卡西米尔晶体 = 1126;

		internal const int I奇异物质 = 1127;

		internal const int I燃烧单元 = 1128;

		internal const int I爆破单元 = 1129;

		internal const int I晶石爆破单元 = 1130;

		internal const int I地基 = 1131;

		internal const int I增产剂MkI = 1141;

		internal const int I增产剂MkII = 1142;

		internal const int I增产剂MkIII_GB增产剂 = 1143;

		internal const int I齿轮 = 1201;

		internal const int I磁线圈 = 1202;

		internal const int I电动机 = 1203;

		internal const int I电磁涡轮 = 1204;

		internal const int I超级磁场环 = 1205;

		internal const int I粒子容器 = 1206;

		internal const int I临界光子 = 1208;

		internal const int I引力透镜 = 1209;

		internal const int I空间翘曲器 = 1210;

		internal const int I电路板 = 1301;

		internal const int I微晶元件 = 1302;

		internal const int I处理器 = 1303;

		internal const int I位面过滤器 = 1304;

		internal const int I量子芯片 = 1305;

		internal const int I电浆激发器 = 1401;

		internal const int I粒子宽带 = 1402;

		internal const int I湮灭约束球 = 1403;

		internal const int I光子合并器 = 1404;

		internal const int I推进器 = 1405;

		internal const int I加力推进器 = 1406;

		internal const int I动力引擎 = 1407;

		internal const int I太阳帆 = 1501;

		internal const int I戴森球组件 = 1502;

		internal const int I小型运载火箭 = 1503;

		internal const int I机枪弹箱 = 1601;

		internal const int I钛化弹箱 = 1602;

		internal const int I超合金弹箱 = 1603;

		internal const int I炮弹组 = 1604;

		internal const int I高爆炮弹组 = 1605;

		internal const int I晶石炮弹组 = 1606;

		internal const int I等离子胶囊 = 1607;

		internal const int I反物质胶囊 = 1608;

		internal const int I导弹组 = 1609;

		internal const int I超音速导弹组 = 1610;

		internal const int I引力导弹组 = 1611;

		internal const int I干扰胶囊 = 1612;

		internal const int I压制胶囊 = 1613;

		internal const int I液氢燃料棒 = 1801;

		internal const int I氘核燃料棒 = 1802;

		internal const int I反物质燃料棒 = 1803;

		internal const int I奇异湮灭燃料棒 = 1804;

		internal const int I传送带 = 2001;

		internal const int I高速传送带 = 2002;

		internal const int I极速传送带 = 2003;

		internal const int I分拣器 = 2011;

		internal const int I高速分拣器 = 2012;

		internal const int I极速分拣器 = 2013;

		internal const int I集装分拣器 = 2014;

		internal const int I四向分流器 = 2020;

		internal const int I流速监测器 = 2030;

		internal const int I自动集装机 = 2040;

		internal const int I小型储物仓 = 2101;

		internal const int I大型储物仓 = 2102;

		internal const int I行星内物流运输站 = 2103;

		internal const int I星际物流运输站 = 2104;

		internal const int I轨道采集器 = 2105;

		internal const int I储液罐 = 2106;

		internal const int I物流配送器 = 2107;

		internal const int I电力感应塔 = 2201;

		internal const int I无线输电塔 = 2202;

		internal const int I风力涡轮机 = 2203;

		internal const int I火力发电厂_GB燃料电池发电厂 = 2204;

		internal const int I太阳能板 = 2205;

		internal const int I蓄电器 = 2206;

		internal const int I蓄电器满 = 2207;

		internal const int I射线接收站_MS射线重构站 = 2208;

		internal const int I能量枢纽 = 2209;

		internal const int I人造恒星_GB朱曦K型人造恒星 = 2210;

		internal const int I微型聚变发电站_GB裂变能源发电站 = 2211;

		internal const int I卫星配电站 = 2212;

		internal const int I地热发电站 = 2213;

		internal const int I采矿机 = 2301;

		internal const int I电弧熔炉 = 2302;

		internal const int I制造台MkI_GB基础制造台 = 2303;

		internal const int I制造台MkII_GB标准制造单元 = 2304;

		internal const int I制造台MkIII_GB高精度装配线 = 2305;

		internal const int I抽水站 = 2306;

		internal const int I原油萃取站 = 2307;

		internal const int I原油精炼厂 = 2308;

		internal const int I化工厂 = 2309;

		internal const int I微型粒子对撞机 = 2310;

		internal const int I电磁轨道弹射器 = 2311;

		internal const int I垂直发射井 = 2312;

		internal const int I喷涂机 = 2313;

		internal const int I分馏塔 = 2314;

		internal const int I位面熔炉 = 2315;

		internal const int I大型采矿机 = 2316;

		internal const int I量子化工厂_GB先进化学反应釜 = 2317;

		internal const int I重组式制造台_GB物质重组工厂 = 2318;

		internal const int I负熵熔炉 = 2319;

		internal const int I矩阵研究站 = 2901;

		internal const int I自演化研究站 = 2902;

		internal const int I高斯机枪塔 = 3001;

		internal const int I高频激光塔 = 3002;

		internal const int I聚爆加农炮 = 3003;

		internal const int I磁化电浆炮 = 3004;

		internal const int I导弹防御塔 = 3005;

		internal const int I干扰塔 = 3006;

		internal const int I信号塔 = 3007;

		internal const int I行星护盾发生器 = 3008;

		internal const int I战场分析基站 = 3009;

		internal const int I近程电浆塔 = 3010;

		internal const int I物流运输机 = 5001;

		internal const int I星际物流运输船 = 5002;

		internal const int I配送运输机 = 5003;

		internal const int I原型机 = 5101;

		internal const int I精准无人机 = 5102;

		internal const int I攻击无人机 = 5103;

		internal const int I护卫舰 = 5111;

		internal const int I驱逐舰 = 5112;

		internal const int I黑雾矩阵 = 5201;

		internal const int I硅基神经元 = 5202;

		internal const int I物质重组器 = 5203;

		internal const int I负熵奇点 = 5204;

		internal const int I核心素 = 5205;

		internal const int I能量碎片 = 5206;

		internal const int I电磁矩阵 = 6001;

		internal const int I能量矩阵 = 6002;

		internal const int I结构矩阵 = 6003;

		internal const int I信息矩阵 = 6004;

		internal const int I引力矩阵 = 6005;

		internal const int I宇宙矩阵 = 6006;

		internal const int IGB钨矿 = 6201;

		internal const int IGB铝矿 = 6202;

		internal const int IGB铝块 = 6203;

		internal const int IGB铝合金 = 6204;

		internal const int IGB二氧化硫 = 6205;

		internal const int IGB二氧化碳 = 6206;

		internal const int IGB硫矿 = 6207;

		internal const int IGB四氢双环戊二烯JP10 = 6212;

		internal const int IGB四氢双环戊二烯燃料棒 = 6216;

		internal const int IGB焦油燃料棒 = 6217;

		internal const int IGB = 6220;

		internal const int IGB同位素温差发电机 = 6221;

		internal const int IGB放射性矿物 = 6222;

		internal const int IGB铀矿 = 6225;

		internal const int IGB钚矿 = 6226;

		internal const int IGB含铀核燃料 = 6227;

		internal const int IGB含钚核燃料 = 6228;

		internal const int IGB量子储液罐 = 6229;

		internal const int IGB矿物处理厂 = 6230;

		internal const int IGB量子储物仓 = 6231;

		internal const int IGB = 6234;

		internal const int IGB氦三 = 6235;

		internal const int IGB钚燃料棒 = 6241;

		internal const int IGB铀燃料棒 = 6242;

		internal const int IGBMOX燃料棒 = 6243;

		internal const int IGB氦三燃料棒 = 6244;

		internal const int IGB氘氦混合燃料棒 = 6245;

		internal const int IGB石粉 = 6251;

		internal const int IGB铁矿粉 = 6252;

		internal const int IGB铜矿粉 = 6253;

		internal const int IGB硅矿粉 = 6254;

		internal const int IGB钛矿粉 = 6255;

		internal const int IGB煤矿粉 = 6256;

		internal const int IGB天穹装配厂 = 6257;

		internal const int IGB物质裂解塔 = 6258;

		internal const int IGB埃克森美孚化工厂 = 6259;

		internal const int IGB工业先锋精密加工中心 = 6260;

		internal const int IGB湛曦O型人造恒星 = 6261;

		internal const int IGB氦闪约束器 = 6263;

		internal const int IGB物质分解设施 = 6264;

		internal const int IGB苍穹粒子加速器 = 6265;

		internal const int IGB聚束液体汲取设施 = 6266;

		internal const int IGB大气采集站 = 6267;

		internal const int IGB三元精金 = 6271;

		internal const int IGB铝矿粉 = 6273;

		internal const int IGB硫粉 = 6277;

		internal const int IGB玻色矩阵 = 6278;

		internal const int IGB耗散矩阵 = 6279;

		internal const int IGB奇点矩阵 = 6280;

		internal const int IGB钨矿粉 = 6281;

		internal const int IGB基础机械组件 = 6501;

		internal const int IGB先进机械组件 = 6502;

		internal const int IGB尖端机械组件 = 6503;

		internal const int IGB超级机械组件 = 6504;

		internal const int IGB创世之书 = 6506;

		internal const int IGB虚空之书 = 6507;

		internal const int IGB起源之书 = 6508;

		internal const int IGB空燃料棒 = 6509;

		internal const int IGB开发者日志01 = 6511;

		internal const int IGB开发者日志02 = 6512;

		internal const int IGB开发者日志03 = 6513;

		internal const int IGB开发者日志04 = 6514;

		internal const int IGB开发者日志05 = 6515;

		internal const int IGB开发者日志06 = 6516;

		internal const int IGB开发者日志07 = 6517;

		internal const int IGB开发者日志08 = 6518;

		internal const int IGB开发者日志09 = 6519;

		internal const int IGB开发者日志10 = 6520;

		internal const int IGB开发者日志11 = 6521;

		internal const int IGB电力节约 = 6522;

		internal const int IGB上传扩容 = 6523;

		internal const int IGB燃料回收 = 6524;

		internal const int IGB风力扩容 = 6525;

		internal const int IGB光伏扩容 = 6526;

		internal const int IGB热聚增效 = 6527;

		internal const int IGB资源采掘 = 6528;

		internal const int IGB裂变增效 = 6529;

		internal const int IGB先进推进 = 6530;

		internal const int IGB特征向量模拟 = 6531;

		internal const int IGB中继信号干扰 = 6532;

		internal const int IGB神经元重编程 = 6533;

		internal const int IGB异常代码分析 = 6534;

		internal const int IGB = 7002;

		internal const int IGB = 7006;

		internal const int IGB丙烯 = 7009;

		internal const int IGB盐酸 = 7014;

		internal const int IGB三氯化铁 = 7015;

		internal const int IGB硝酸 = 7017;

		internal const int IGB海水 = 7018;

		internal const int IGB = 7019;

		internal const int IGB氢氧化钠 = 7020;

		internal const int IGB氯化钠 = 7101;

		internal const int IGB塑料基板 = 7501;

		internal const int IGB光学基板 = 7504;

		internal const int IGB钢芯弹箱 = 7607;

		internal const int IGB钨芯弹箱 = 7608;

		internal const int IGB三元弹箱 = 7609;

		internal const int IGB核子爆破单元 = 7610;

		internal const int IGB反物质湮灭单元 = 7611;

		internal const int IGB微型核弹组 = 7612;

		internal const int IGB反物质炮弹组 = 7613;

		internal const int IGB反物质导弹组 = 7615;

		internal const int IGB湮灭弹箱 = 7616;

		internal const int IGB电磁加农炮 = 7617;

		internal const int IGB紫外激光塔 = 7618;

		internal const int IGB钨块 = 7705;

		internal const int IGB钨强化玻璃 = 7706;

		internal const int IGB钨合金 = 7707;

		internal const int IGB聚苯硫醚PPS = 7708;

		internal const int IGB聚酰亚胺PI = 7709;

		internal const int IGB光学处理器 = 7803;

		internal const int IGB光学信息传输纤维 = 7804;

		internal const int IGB量子计算主机 = 7805;

		internal const int IGB超越X1型光学主机 = 7806;

		internal const int IFE商店刷新提示 = 8000;

		internal const int IFE电磁奖券 = 8001;

		internal const int IFE能量奖券 = 8002;

		internal const int IFE结构奖券 = 8003;

		internal const int IFE信息奖券 = 8004;

		internal const int IFE引力奖券 = 8005;

		internal const int IFE宇宙奖券 = 8006;

		internal const int IFE黑雾奖券 = 8007;

		internal const int IFE分馏塔原胚普通 = 8011;

		internal const int IFE分馏塔原胚精良 = 8012;

		internal const int IFE分馏塔原胚稀有 = 8013;

		internal const int IFE分馏塔原胚史诗 = 8014;

		internal const int IFE分馏塔原胚传说 = 8015;

		internal const int IFE分馏塔原胚定向 = 8016;

		internal const int IFE分馏配方通用核心 = 8017;

		internal const int IFE分馏塔增幅芯片 = 8018;

		internal const int IFE交互塔 = 8021;

		internal const int IFE矿物复制塔 = 8022;

		internal const int IFE点数聚集塔 = 8023;

		internal const int IFE量子复制塔 = 8024;

		internal const int IFE点金塔 = 8025;

		internal const int IFE分解塔 = 8026;

		internal const int IFE转化塔 = 8027;

		internal const int IFE行星交互塔 = 8031;

		internal const int IFE行星矿物复制塔 = 8032;

		internal const int IFE行星点数聚集塔 = 8033;

		internal const int IFE行星量子复制塔 = 8034;

		internal const int IFE行星点金塔 = 8035;

		internal const int IFE行星分解塔 = 8036;

		internal const int IFE行星转化塔 = 8037;

		internal const int IFE复制精华 = 8041;

		internal const int IFE点金精华 = 8042;

		internal const int IFE分解精华 = 8043;

		internal const int IFE转化精华 = 8044;

		internal const int IBC插件效果分享塔 = 8051;

		internal const int IBC插件效果分享站 = 8052;

		internal const int IBC速度插件MK1 = 8061;

		internal const int IBC速度插件MK2 = 8062;

		internal const int IBC速度插件MK3 = 8063;

		internal const int IBC产能插件MK1 = 8064;

		internal const int IBC产能插件MK2 = 8065;

		internal const int IBC产能插件MK3 = 8066;

		internal const int IBC节能插件MK1 = 8067;

		internal const int IBC节能插件MK2 = 8068;

		internal const int IBC节能插件MK3 = 8069;

		internal const int IBC品质插件MK1 = 8070;

		internal const int IBC品质插件MK2 = 8071;

		internal const int IBC品质插件MK3 = 8072;

		internal const int IMS引力发生装置 = 9480;

		internal const int IMS位面约束环 = 9481;

		internal const int IMS引力钻头 = 9482;

		internal const int IMS隧穿激发装置 = 9483;

		internal const int IMS谐振盘 = 9484;

		internal const int IMS光子探针 = 9485;

		internal const int IMS量子计算机 = 9486;

		internal const int IMS星际组装厂组件 = 9487;

		internal const int IMS物质解压器运载火箭 = 9488;

		internal const int IMS科学枢纽运载火箭 = 9489;

		internal const int IMS谐振发射器运载火箭 = 9490;

		internal const int IMS星际组装厂运载火箭 = 9491;

		internal const int IMS晶体重构器运载火箭 = 9492;

		internal const int IMS星际组装厂生产机器图标专用 = 9493;

		internal const int IMS铜金属重构装置 = 9494;

		internal const int IMS高纯硅重构装置 = 9495;

		internal const int IMS钛金属重构装置 = 9496;

		internal const int IMS单极磁石重构装置 = 9497;

		internal const int IMS晶体接收器 = 9498;

		internal const int IMS组件集成装置 = 9499;

		internal const int IMS多功能集成组件 = 9500;

		internal const int IMS石墨提炼装置 = 9501;

		internal const int IMS光栅晶体接收器 = 9502;

		internal const int IMS力场发生器 = 9503;

		internal const int IMS复合态晶体 = 9504;

		internal const int IMS电磁力抑制器 = 9505;

		internal const int IMS胶子发生器 = 9506;

		internal const int IMS强力过载装置 = 9507;

		internal const int IMS导流框架 = 9508;

		internal const int IMS恒星炮组件 = 9509;

		internal const int IMS恒星炮运载火箭 = 9510;

		internal const int IMS水滴 = 9511;

		internal const int IMS物资交换物流站 = 9512;

		internal const int IVD星河卫士勋章 = 9513;

		internal const int IVD水滴额外伤害 = 9514;

		internal const int M传送带 = 35;

		internal const int M高速传送带 = 36;

		internal const int M极速传送带 = 37;

		internal const int M四向分流器 = 38;

		internal const int M分拣器 = 41;

		internal const int M高速分拣器 = 42;

		internal const int M极速分拣器 = 43;

		internal const int M电力感应塔 = 44;

		internal const int M能量枢纽 = 45;

		internal const int M蓄电器 = 46;

		internal const int M蓄电器满 = 46;

		internal const int M物流运输机 = 47;

		internal const int M星际物流运输船 = 48;

		internal const int M行星内物流运输站 = 49;

		internal const int M星际物流运输站 = 50;

		internal const int MMS物资交换物流站 = 50;

		internal const int M小型储物仓 = 51;

		internal const int M大型储物仓 = 52;

		internal const int M风力涡轮机 = 53;

		internal const int M火力发电厂 = 54;

		internal const int MGB燃料电池发电厂 = 54;

		internal const int M太阳能板 = 55;

		internal const int M人造恒星 = 56;

		internal const int MGB朱曦K型人造恒星 = 56;

		internal const int M采矿机 = 57;

		internal const int M抽水站 = 60;

		internal const int M原油萃取站 = 61;

		internal const int M电弧熔炉 = 62;

		internal const int M原油精炼厂 = 63;

		internal const int M化工厂 = 64;

		internal const int M制造台MkI = 65;

		internal const int MGB基础制造台 = 65;

		internal const int M制造台MkII = 66;

		internal const int MGB标准制造单元 = 66;

		internal const int M制造台MkIII = 67;

		internal const int MGB高精度装配线 = 67;

		internal const int M卫星配电站 = 68;

		internal const int M微型粒子对撞机 = 69;

		internal const int M矩阵研究站 = 70;

		internal const int M无线输电塔 = 71;

		internal const int M电磁轨道弹射器 = 72;

		internal const int M射线接收站 = 73;

		internal const int MMS射线重构站 = 73;

		internal const int M垂直发射井 = 74;

		internal const int M小型运载火箭 = 75;

		internal const int M轨道采集器 = 117;

		internal const int M微型聚变发电站 = 118;

		internal const int MGB裂变能源发电站 = 118;

		internal const int M分馏塔 = 119;

		internal const int M喷涂机 = 120;

		internal const int M储液罐 = 121;

		internal const int M位面熔炉 = 194;

		internal const int M流速监测器 = 208;

		internal const int M地热发电站 = 255;

		internal const int M大型采矿机 = 256;

		internal const int M自动集装机 = 257;

		internal const int M物流配送器 = 371;

		internal const int M配送运输机 = 372;

		internal const int M高频激光塔 = 373;

		internal const int M高斯机枪塔 = 374;

		internal const int M聚爆加农炮 = 375;

		internal const int M量子化工厂 = 376;

		internal const int MGB先进化学反应釜 = 376;

		internal const int M行星护盾发生器 = 402;

		internal const int M信号塔 = 403;

		internal const int M导弹防御塔 = 407;

		internal const int M磁化电浆炮 = 408;

		internal const int M干扰塔 = 422;

		internal const int M导弹组 = 432;

		internal const int M超音速导弹组 = 433;

		internal const int M引力导弹组 = 434;

		internal const int M原型机 = 448;

		internal const int M精准无人机 = 449;

		internal const int M攻击无人机 = 450;

		internal const int M护卫舰 = 451;

		internal const int M驱逐舰 = 452;

		internal const int M战场分析基站 = 453;

		internal const int M自演化研究站 = 455;

		internal const int M重组式制造台 = 456;

		internal const int MGB物质重组工厂 = 456;

		internal const int M负熵熔炉 = 457;

		internal const int M近程电浆塔 = 482;

		internal const int M集装分拣器 = 483;

		internal const int M炮弹组 = 486;

		internal const int M高爆炮弹组 = 487;

		internal const int M晶石炮弹组 = 488;

		internal const int MGB微型核弹组 = 488;

		internal const int M燃烧单元 = 489;

		internal const int M爆破单元 = 490;

		internal const int M晶石爆破单元 = 491;

		internal const int MGB反物质湮灭单元 = 491;

		internal const int M干扰胶囊 = 492;

		internal const int M压制胶囊 = 493;

		internal const int M = 494;

		internal const int MFE交互塔 = 601;

		internal const int MFE矿物复制塔 = 602;

		internal const int MFE点数聚集塔 = 603;

		internal const int MFE量子复制塔 = 604;

		internal const int MFE点金塔 = 605;

		internal const int MFE分解塔 = 606;

		internal const int MFE转化塔 = 607;

		internal const int MFE行星交互塔 = 611;

		internal const int MFE行星矿物复制塔 = 612;

		internal const int MFE行星点数聚集塔 = 613;

		internal const int MFE行星量子复制塔 = 614;

		internal const int MFE行星点金塔 = 615;

		internal const int MFE行星分解塔 = 616;

		internal const int MFE行星转化塔 = 617;

		internal const int MBC插件效果分享塔 = 621;

		internal const int MBC插件效果分享站 = 622;

		internal const int MGB量子储液罐 = 801;

		internal const int MGB矿物处理厂 = 802;

		internal const int MGB天穹装配厂 = 803;

		internal const int MGB物质裂解塔 = 804;

		internal const int MGB埃克森美孚化工厂 = 805;

		internal const int MGB工业先锋精密加工中心 = 806;

		internal const int MGB湛曦O型人造恒星 = 807;

		internal const int MGB聚束液体汲取设施 = 808;

		internal const int MGB同位素温差发电机 = 809;

		internal const int MGB物质分解设施 = 810;

		internal const int MGB苍穹粒子加速器 = 811;

		internal const int MGB大气采集站 = 812;

		internal const int MGB反物质导弹组 = 813;

		internal const int MGB量子储物仓 = 814;

		internal const int MGB电磁加农炮 = 815;

		internal const int MGB紫外激光塔 = 816;

		internal const int MGB核子爆破单元 = 817;

		internal const int MGB反物质炮弹组 = 818;

		internal const int R铁块 = 1;

		internal const int R磁铁_GB铜线圈 = 2;

		internal const int R铜块 = 3;

		internal const int R石材 = 4;

		internal const int R齿轮_GB湮灭弹药箱 = 5;

		internal const int R磁线圈_GB电路板 = 6;

		internal const int R风力涡轮机 = 7;

		internal const int R电力感应塔 = 8;

		internal const int R电磁矩阵 = 9;

		internal const int R矩阵研究站 = 10;

		internal const int R棱镜 = 11;

		internal const int R电浆激发器 = 12;

		internal const int R无线输电塔 = 13;

		internal const int R原油萃取站 = 14;

		internal const int R原油精炼厂 = 15;

		internal const int R等离子精炼 = 16;

		internal const int R高能石墨 = 17;

		internal const int R能量矩阵 = 18;

		internal const int R液氢燃料棒 = 19;

		internal const int R推进器 = 20;

		internal const int R加力推进器 = 21;

		internal const int R化工厂 = 22;

		internal const int R塑料_GB聚丙烯 = 23;

		internal const int R硫酸 = 24;

		internal const int R有机晶体_GB铝块 = 25;

		internal const int R钛晶石_GB铝合金 = 26;

		internal const int R结构矩阵 = 27;

		internal const int R卡西米尔晶体 = 28;

		internal const int R卡西米尔晶体高效 = 29;

		internal const int R钛化玻璃 = 30;

		internal const int R石墨烯 = 31;

		internal const int R石墨烯高效 = 32;

		internal const int R碳纳米管 = 33;

		internal const int R硅石_GB硅石筛选 = 34;

		internal const int R碳纳米管高效 = 35;

		internal const int R粒子宽带 = 36;

		internal const int R晶格硅 = 37;

		internal const int R位面过滤器 = 38;

		internal const int R微型粒子对撞机 = 39;

		internal const int R重氢 = 40;

		internal const int R氘核燃料棒 = 41;

		internal const int R湮灭约束球 = 42;

		internal const int R人造恒星_GB朱曦K型人造恒星 = 43;

		internal const int R反物质燃料棒 = 44;

		internal const int R制造台MkI_GB基础制造台 = 45;

		internal const int R制造台MkII_GB标准制造单元 = 46;

		internal const int R制造台MkIII_GB高精度装配线 = 47;

		internal const int R采矿机 = 48;

		internal const int R抽水站 = 49;

		internal const int R电路板_GB玻璃 = 50;

		internal const int R处理器 = 51;

		internal const int R量子芯片 = 52;

		internal const int R微晶元件 = 53;

		internal const int R有机晶体原始_GB埃克森美孚化工厂 = 54;

		internal const int R信息矩阵 = 55;

		internal const int R电弧熔炉 = 56;

		internal const int R玻璃_GB三元精金 = 57;

		internal const int RX射线裂解 = 58;

		internal const int R高纯硅块 = 59;

		internal const int R金刚石 = 60;

		internal const int R金刚石高效 = 61;

		internal const int R晶格硅高效 = 62;

		internal const int R钢材 = 63;

		internal const int R火力发电厂_GB燃料电池发电厂 = 64;

		internal const int R钛块 = 65;

		internal const int R钛合金 = 66;

		internal const int R太阳能板 = 67;

		internal const int R光子合并器 = 68;

		internal const int R光子合并器高效 = 69;

		internal const int R太阳帆 = 70;

		internal const int R电磁轨道弹射器 = 71;

		internal const int R射线接收站_MS射线重构站 = 72;

		internal const int R卫星配电站 = 73;

		internal const int R质能储存 = 74;

		internal const int R宇宙矩阵 = 75;

		internal const int R蓄电器 = 76;

		internal const int R能量枢纽 = 77;

		internal const int R空间翘曲器 = 78;

		internal const int R空间翘曲器高级 = 79;

		internal const int R框架材料 = 80;

		internal const int R戴森球组件 = 81;

		internal const int R垂直发射井 = 82;

		internal const int R小型运载火箭 = 83;

		internal const int R传送带 = 84;

		internal const int R分拣器 = 85;

		internal const int R小型储物仓 = 86;

		internal const int R四向分流器 = 87;

		internal const int R高速分拣器 = 88;

		internal const int R高速传送带 = 89;

		internal const int R极速分拣器 = 90;

		internal const int R大型储物仓 = 91;

		internal const int R极速传送带 = 92;

		internal const int R行星内物流运输站 = 93;

		internal const int R物流运输机 = 94;

		internal const int R星际物流运输站 = 95;

		internal const int R星际物流运输船 = 96;

		internal const int R电动机 = 97;

		internal const int R电磁涡轮 = 98;

		internal const int R粒子容器 = 99;

		internal const int R粒子容器高效 = 100;

		internal const int R引力透镜 = 101;

		internal const int R引力矩阵 = 102;

		internal const int R超级磁场环 = 103;

		internal const int R奇异物质 = 104;

		internal const int R动力引擎 = 105;

		internal const int R增产剂MkI_GB氦核转化 = 106;

		internal const int R增产剂MkII_GB氦原子提取 = 107;

		internal const int R增产剂MkIII_GB增产剂 = 108;

		internal const int R喷涂机 = 109;

		internal const int R分馏塔_GB湛曦O型人造恒星 = 110;

		internal const int R轨道采集器 = 111;

		internal const int R地基 = 112;

		internal const int R微型聚变发电站_GB裂变能源发电站 = 113;

		internal const int R储液罐 = 114;

		internal const int R重氢分馏_GB氦闪约束器 = 115;

		internal const int R位面熔炉 = 116;

		internal const int R流速监测器 = 117;

		internal const int R地热发电站 = 118;

		internal const int R大型采矿机 = 119;

		internal const int R自动集装机 = 120;

		internal const int R重整精炼_GB铝矿粉 = 121;

		internal const int R物流配送器 = 122;

		internal const int R配送运输机 = 123;

		internal const int R量子化工厂_GB先进化学反应釜 = 124;

		internal const int R高斯机枪塔 = 125;

		internal const int R高频激光塔 = 126;

		internal const int R聚爆加农炮 = 127;

		internal const int R磁化电浆炮 = 128;

		internal const int R导弹防御塔 = 129;

		internal const int R干扰塔 = 130;

		internal const int R信号塔 = 131;

		internal const int R行星护盾发生器 = 132;

		internal const int R燃烧单元 = 133;

		internal const int R爆破单元 = 134;

		internal const int R晶石爆破单元_GB核子爆破单元 = 135;

		internal const int R机枪弹箱 = 136;

		internal const int R钛化弹箱 = 137;

		internal const int R超合金弹箱 = 138;

		internal const int R炮弹组 = 139;

		internal const int R高爆炮弹组 = 140;

		internal const int R晶石炮弹组_GB微型核弹组 = 141;

		internal const int R等离子胶囊 = 142;

		internal const int R反物质胶囊 = 143;

		internal const int R导弹组 = 144;

		internal const int R超音速导弹组 = 145;

		internal const int R引力导弹组 = 146;

		internal const int R原型机 = 147;

		internal const int R精准无人机 = 148;

		internal const int R攻击无人机 = 149;

		internal const int R护卫舰 = 150;

		internal const int R驱逐舰 = 151;

		internal const int R战场分析基站 = 152;

		internal const int R自演化研究站 = 153;

		internal const int R重组式制造台_GB物质重组工厂 = 154;

		internal const int R负熵熔炉 = 155;

		internal const int R奇异湮灭燃料棒 = 156;

		internal const int R近程电浆塔 = 157;

		internal const int R干扰胶囊 = 158;

		internal const int R压制胶囊 = 159;

		internal const int R集装分拣器 = 160;

		internal const int RMS引力发生装置 = 530;

		internal const int RMS位面约束环 = 531;

		internal const int RMS引力钻头 = 532;

		internal const int RMS隧穿激发装置 = 533;

		internal const int RMS谐振盘 = 534;

		internal const int RMS光子探针 = 535;

		internal const int RMS量子计算机 = 536;

		internal const int RMS星际组装厂组件 = 537;

		internal const int RMS物质解压器运载火箭 = 538;

		internal const int RMS科学枢纽运载火箭 = 539;

		internal const int RMS谐振发射器运载火箭 = 540;

		internal const int RMS星际组装厂运载火箭 = 541;

		internal const int RMS晶体重构器运载火箭 = 542;

		internal const int RMS星际组装厂生产机器图标专用 = 543;

		internal const int RMS铜金属重构装置 = 544;

		internal const int RMS高纯硅重构装置 = 545;

		internal const int RMS钛金属重构装置 = 546;

		internal const int RMS单极磁石重构装置 = 547;

		internal const int RMS晶体接收器 = 548;

		internal const int RMS组件集成装置 = 549;

		internal const int RMS多功能集成组件 = 550;

		internal const int RMS传送带快速组装 = 551;

		internal const int RMS集装分拣器快速组装 = 352;

		internal const int RMS制造台4快速组装 = 353;

		internal const int RMS熔炉3快速组装 = 354;

		internal const int RMS实验室2快速组装 = 355;

		internal const int RMS大矿机快速组装 = 356;

		internal const int RMS抽水泵快速组装 = 357;

		internal const int RMS石墨提炼装置 = 563;

		internal const int RMS光栅晶体接收器 = 564;

		internal const int RMS力场发生器 = 565;

		internal const int RMS复合态晶体 = 566;

		internal const int RMS电磁力抑制器 = 567;

		internal const int RMS胶子发生器 = 568;

		internal const int RMS强力过载装置 = 569;

		internal const int RMS导流框架 = 570;

		internal const int RMS恒星炮组件 = 571;

		internal const int RMS恒星炮运载火箭 = 572;

		internal const int RMS水滴gm = 573;

		internal const int RMS物资交换物流站 = 575;

		internal const int RVD星河卫士奖章 = 382;

		internal const int RGB放射性矿物处理 = 401;

		internal const int RGB铝矿精炼 = 402;

		internal const int RGB钨矿精炼 = 404;

		internal const int RGB钨矿粉 = 405;

		internal const int RGB含铀核燃料 = 406;

		internal const int RGB含钚核燃料 = 407;

		internal const int RGB铀燃料棒 = 408;

		internal const int RGB钚燃料棒 = 409;

		internal const int RGBMOX燃料棒 = 410;

		internal const int RGB铁矿精炼 = 411;

		internal const int RGB铜矿精炼 = 412;

		internal const int RGB硅矿精炼 = 413;

		internal const int RGB钛矿精炼 = 414;

		internal const int RGB天穹装配厂 = 416;

		internal const int RGB苍穹粒子加速器 = 417;

		internal const int RGB聚束液体汲取设施 = 418;

		internal const int RGB大气采集站 = 419;

		internal const int RGB石矿精炼 = 420;

		internal const int RGB煤矿精炼 = 421;

		internal const int RGB工业先锋精密加工中心 = 422;

		internal const int RGB物质分解设施 = 423;

		internal const int RGB物质回收 = 429;

		internal const int RGB焦油裂化 = 501;

		internal const int RGB二氧化碳 = 506;

		internal const int RGB催化重整 = 509;

		internal const int RGB四氢双环戊二烯JP10 = 512;

		internal const int RGB四氢双环戊二烯燃料棒 = 515;

		internal const int RGB焦油燃料棒 = 516;

		internal const int RGB处理器高效 = 519;

		internal const int RGB量子储液罐 = 522;

		internal const int RGB矿物处理厂 = 523;

		internal const int RGB量子储物仓 = 524;

		internal const int RGB铁矿粉 = 531;

		internal const int RGB铜矿粉 = 532;

		internal const int RGB硅矿粉 = 533;

		internal const int RGB钛矿粉 = 534;

		internal const int RGB石粉 = 535;

		internal const int RGB煤矿粉 = 536;

		internal const int RGB硫粉 = 537;

		internal const int RGB玻色矩阵 = 539;

		internal const int RGB耗散矩阵 = 540;

		internal const int RGB质能储存高效 = 541;

		internal const int RGB物质裂解塔 = 542;

		internal const int RGB奇点矩阵 = 544;

		internal const int RGB有机晶体 = 546;

		internal const int RGB能量物质化 = 547;

		internal const int RGB二氧化硫还原 = 548;

		internal const int RGB有机晶体活化 = 549;

		internal const int RGB有机晶体重组 = 550;

		internal const int RMS分拣器快速组装 = 552;

		internal const int RMS配电站快速组装 = 553;

		internal const int RMS制造台快速组装 = 554;

		internal const int RMS位面熔炉快速组装 = 555;

		internal const int RMS化工厂快速组装 = 556;

		internal const int RMS精炼厂快速组装 = 557;

		internal const int RMS对撞机快速组装 = 558;

		internal const int RMS研究站快速组装 = 559;

		internal const int RMS人造恒星快速组装 = 560;

		internal const int RMS行星内物流快速组装 = 561;

		internal const int RMS星际物流快速组装 = 562;

		internal const int RGB超越X1型光学主机 = 569;

		internal const int RGB氘氦混合燃料棒 = 624;

		internal const int RGB氦三燃料棒 = 625;

		internal const int RGB基础机械组件 = 641;

		internal const int RGB先进机械组件 = 642;

		internal const int RGB尖端机械组件 = 643;

		internal const int RGB空燃料棒 = 644;

		internal const int RGB水电解 = 702;

		internal const int RGB盐水电解 = 703;

		internal const int RGB钠盐转化 = 704;

		internal const int RGB钛晶石高效 = 709;

		internal const int RGB合成氨 = 710;

		internal const int RGB煤炭液化 = 712;

		internal const int RGB焦油分馏 = 713;

		internal const int RGB钛晶石 = 714;

		internal const int RGB三氯化铁 = 716;

		internal const int RGB氨氧化 = 717;

		internal const int RGB羰基合成 = 720;

		internal const int RGB塑料基板 = 751;

		internal const int RGB同位素温差发电机 = 752;

		internal const int RGB光学基板 = 754;

		internal const int RGB聚苯硫醚PPS = 771;

		internal const int RGB聚酰亚胺PI = 772;

		internal const int RGB钨矿筛选 = 773;

		internal const int RGB钨块 = 774;

		internal const int RGB钨强化玻璃 = 775;

		internal const int RGB钨合金 = 776;

		internal const int RGB钢芯弹箱 = 781;

		internal const int RGB钨芯弹箱 = 782;

		internal const int RGB三元弹箱 = 783;

		internal const int RGB反物质湮灭单元 = 785;

		internal const int RGB反物质炮弹组 = 787;

		internal const int RGB反物质导弹组 = 789;

		internal const int RGB电磁加农炮 = 791;

		internal const int RGB紫外激光塔 = 792;

		internal const int RGB光学处理器 = 793;

		internal const int RGB光学信息传输纤维 = 794;

		internal const int RGB量子计算主机 = 795;

		internal const int RGB海水淡化 = 801;

		internal const int RFE电磁奖券 = 901;

		internal const int RFE能量奖券 = 902;

		internal const int RFE结构奖券 = 903;

		internal const int RFE信息奖券 = 904;

		internal const int RFE引力奖券 = 905;

		internal const int RFE宇宙奖券 = 906;

		internal const int RFE黑雾奖券 = 907;

		internal const int RFE分馏塔原胚定向 = 916;

		internal const int RFE交互塔 = 921;

		internal const int RFE矿物复制塔 = 922;

		internal const int RFE点数聚集塔 = 923;

		internal const int RFE量子复制塔 = 924;

		internal const int RFE点金塔 = 925;

		internal const int RFE分解塔 = 926;

		internal const int RFE转化塔 = 927;

		internal const int RFE行星交互塔 = 931;

		internal const int RFE行星矿物复制塔 = 932;

		internal const int RFE行星点数聚集塔 = 933;

		internal const int RFE行星量子复制塔 = 934;

		internal const int RFE行星点金塔 = 935;

		internal const int RFE行星分解塔 = 936;

		internal const int RFE行星转化塔 = 937;

		internal const int RBC插件效果分享塔 = 951;

		internal const int RBC插件效果分享站 = 952;

		internal const int RBC速度插件MK1 = 961;

		internal const int RBC速度插件MK2 = 962;

		internal const int RBC速度插件MK3 = 963;

		internal const int RBC产能插件MK1 = 964;

		internal const int RBC产能插件MK2 = 965;

		internal const int RBC产能插件MK3 = 966;

		internal const int RBC节能插件MK1 = 967;

		internal const int RBC节能插件MK2 = 968;

		internal const int RBC节能插件MK3 = 969;

		internal const int RBC品质插件MK1 = 970;

		internal const int RBC品质插件MK2 = 971;

		internal const int RBC品质插件MK3 = 972;

		internal const int T戴森球计划 = 1;

		internal const int T电磁学 = 1001;

		internal const int T电磁矩阵 = 1002;

		internal const int T高效电浆控制 = 1101;

		internal const int T等离子萃取精炼 = 1102;

		internal const int TX射线裂解 = 1103;

		internal const int T重整精炼_GB先进有机合成技术 = 1104;

		internal const int T能量矩阵 = 1111;

		internal const int T氢燃料棒_GB气体冷凝 = 1112;

		internal const int T推进器 = 1113;

		internal const int T加力推进器 = 1114;

		internal const int T流体储存封装 = 1120;

		internal const int T基础化工 = 1121;

		internal const int T高分子化工 = 1122;

		internal const int T高强度晶体 = 1123;

		internal const int T结构矩阵 = 1124;

		internal const int T卡西米尔晶体 = 1125;

		internal const int T高强度玻璃 = 1126;

		internal const int T应用型超导体 = 1131;

		internal const int T高强度材料 = 1132;

		internal const int T粒子可控 = 1133;

		internal const int T重氢分馏_GB强相互作用力材料 = 1134;

		internal const int T波函数干扰 = 1141;

		internal const int T微型粒子对撞机_GB粒子对撞机 = 1142;

		internal const int T奇异物质 = 1143;

		internal const int T人造恒星_GB质能转换利用 = 1144;

		internal const int T可控湮灭反应 = 1145;

		internal const int T增产剂MkI_GB物品增产 = 1151;

		internal const int T增产剂MkII_GB量子折跃 = 1152;

		internal const int T增产剂MkIII_GB人造恒星 = 1153;

		internal const int T基础制造 = 1201;

		internal const int T高速制造_GB标准制造单元 = 1202;

		internal const int T量子打印_GB高精度加工 = 1203;

		internal const int TFE分馏数据中心 = 1251;

		internal const int TFE分馏塔原胚 = 1252;

		internal const int TFE物品交互 = 1253;

		internal const int TFE矿物复制 = 1254;

		internal const int TFE增产点数聚集 = 1255;

		internal const int TFE量子复制 = 1256;

		internal const int TFE物品点金 = 1257;

		internal const int TFE物品分解 = 1258;

		internal const int TFE物品转化 = 1259;

		internal const int TFE行星物品交互 = 1260;

		internal const int TFE行星矿物复制 = 1261;

		internal const int TFE行星增产点数聚集 = 1262;

		internal const int TFE行星量子复制 = 1263;

		internal const int TFE行星物品点金 = 1264;

		internal const int TFE行星物品分解 = 1265;

		internal const int TFE行星物品转化 = 1266;

		internal const int TFE电磁奖券 = 1271;

		internal const int TFE能量奖券 = 1272;

		internal const int TFE结构奖券 = 1273;

		internal const int TFE信息奖券 = 1274;

		internal const int TFE引力奖券 = 1275;

		internal const int TFE宇宙奖券 = 1276;

		internal const int TFE黑雾奖券 = 1277;

		internal const int TFE超值礼包1 = 1281;

		internal const int TFE超值礼包2 = 1282;

		internal const int TFE超值礼包3 = 1283;

		internal const int TFE超值礼包4 = 1284;

		internal const int TFE超值礼包5 = 1285;

		internal const int TFE超值礼包6 = 1286;

		internal const int TFE超值礼包7 = 1287;

		internal const int TFE超值礼包8 = 1288;

		internal const int TFE超值礼包9 = 1289;

		internal const int T处理器 = 1302;

		internal const int T量子芯片 = 1303;

		internal const int T光子聚束采矿 = 1304;

		internal const int T亚微观量子纠缠_GB化学反应釜压力容器 = 1305;

		internal const int T半导体材料 = 1311;

		internal const int T信息矩阵 = 1312;

		internal const int T自动化冶金 = 1401;

		internal const int T冶炼提纯 = 1402;

		internal const int T晶体冶炼 = 1403;

		internal const int T钢材冶炼 = 1411;

		internal const int T火力发电_GB燃料电池发电 = 1412;

		internal const int T钛矿冶炼 = 1413;

		internal const int T高强度钛合金 = 1414;

		internal const int T移山填海工程_GB工业生产 = 1415;

		internal const int T微型核聚变发电_GB裂变发电站 = 1416;

		internal const int T位面冶金 = 1417;

		internal const int T太阳能收集 = 1501;

		internal const int T光子变频 = 1502;

		internal const int T太阳帆轨道系统 = 1503;

		internal const int T射线接收站 = 1504;

		internal const int T行星电离层利用 = 1505;

		internal const int T狄拉克逆变机制 = 1506;

		internal const int T宇宙矩阵 = 1507;

		internal const int T任务完成 = 1508;

		internal const int T能量储存 = 1511;

		internal const int T星际电力运输 = 1512;

		internal const int T地热开采 = 1513;

		internal const int T高强度轻质结构 = 1521;

		internal const int T垂直发射井 = 1522;

		internal const int T戴森球应力系统 = 1523;

		internal const int T基础物流系统 = 1601;

		internal const int T改良物流系统 = 1602;

		internal const int T高效物流系统 = 1603;

		internal const int T行星物流系统 = 1604;

		internal const int T星际物流系统 = 1605;

		internal const int T气态行星开采 = 1606;

		internal const int T集装物流系统 = 1607;

		internal const int T配送物流系统 = 1608;

		internal const int T电磁驱动 = 1701;

		internal const int T磁悬浮 = 1702;

		internal const int T粒子磁力阱 = 1703;

		internal const int T引力波折射 = 1704;

		internal const int T引力矩阵 = 1705;

		internal const int T超级磁场发生器 = 1711;

		internal const int T卫星配电系统 = 1712;

		internal const int T武器系统 = 1801;

		internal const int T燃烧单元 = 1802;

		internal const int T爆破单元 = 1803;

		internal const int T晶石爆破单元_GB核能爆破单元 = 1804;

		internal const int T动力引擎 = 1805;

		internal const int T导弹防御塔 = 1806;

		internal const int T聚爆加农炮 = 1807;

		internal const int T信号塔 = 1808;

		internal const int T行星防御系统 = 1809;

		internal const int T干扰塔 = 1810;

		internal const int T磁化电浆炮 = 1811;

		internal const int T钛化弹箱_GB钢芯穿甲弹 = 1812;

		internal const int T超合金弹箱_GB钛金强化弹壳 = 1813;

		internal const int T高爆炮弹组 = 1814;

		internal const int T超音速导弹组 = 1815;

		internal const int T晶石炮弹组_GB微型核弹 = 1816;

		internal const int T引力导弹组 = 1817;

		internal const int T反物质胶囊 = 1818;

		internal const int T原型机 = 1819;

		internal const int T精准无人机 = 1820;

		internal const int T攻击无人机 = 1821;

		internal const int T护卫舰 = 1822;

		internal const int T驱逐舰 = 1823;

		internal const int T压制胶囊 = 1824;

		internal const int T战场分析基站 = 1826;

		internal const int TGB科学理论 = 1900;

		internal const int T数字模拟计算 = 1901;

		internal const int T物质重组 = 1902;

		internal const int T负熵递归 = 1903;

		internal const int T高密度可控湮灭 = 1904;

		internal const int TGB钨强化玻璃 = 1911;

		internal const int TGB焦油精炼 = 1915;

		internal const int TGB放射性矿物提炼 = 1916;

		internal const int TMS尼科尔戴森光束 = 1918;

		internal const int TGB裂变能源燃料棒 = 1919;

		internal const int TGB同位素温差发电 = 1920;

		internal const int TGB聚变能源燃料棒 = 1921;

		internal const int TGB巨型建筑天穹装配厂 = 1923;

		internal const int TGB巨型建筑物质裂解塔 = 1924;

		internal const int TGB巨型建筑行星级化学反应釜 = 1925;

		internal const int TGB巨型建筑精密结构组装厂 = 1926;

		internal const int TGB巨型建筑巨型粒子对撞机 = 1927;

		internal const int TGB四氢双环戊二烯燃料棒 = 1928;

		internal const int TGB矿物处理 = 1929;

		internal const int TGB先进化工 = 1930;

		internal const int TGB巨型建筑物质分解设施 = 1931;

		internal const int TGB化工厂 = 1932;

		internal const int TGB巨型建筑工程学 = 1934;

		internal const int TGB行星协调中心 = 1936;

		internal const int TGB护盾载波调制 = 1937;

		internal const int TGB基础机械组件 = 1941;

		internal const int TGB先进机械组件 = 1942;

		internal const int TGB尖端机械组件 = 1943;

		internal const int TGB钨强化金属 = 1944;

		internal const int TGB家园世界虚拟技术革新 = 1947;

		internal const int TGB家园世界光学信息传输技术 = 1948;

		internal const int TGB超级量子计算机 = 1949;

		internal const int TGB家园世界光学计算机 = 1950;

		internal const int TGB反物质湮灭单元 = 1952;

		internal const int TGB湮灭战斗部 = 1954;

		internal const int TGB超重型穿甲弹 = 1955;

		internal const int TGB强互作用力弹药 = 1956;

		internal const int TGB小型化湮灭反应 = 1957;

		internal const int TGB反物质飞弹 = 1959;

		internal const int TGB行星协调中心黑雾数据库 = 1960;

		internal const int TGB虚数空间存储 = 1962;

		internal const int TGB物品仓储 = 1963;

		internal const int TVD微型恒星能量引导 = 1997;

		internal const int TVD并入COSMO架构 = 1998;

		internal const int TVD玻色子操控 = 1999;

		internal const int T机甲核心 = 2101;

		internal const int T机械骨骼 = 2201;

		internal const int T机舱容量 = 2301;

		internal const int T通讯控制 = 2401;

		internal const int T能量回路 = 2501;

		internal const int T无人机引擎 = 2601;

		internal const int T批量建造 = 2701;

		internal const int T能量护盾 = 2801;

		internal const int T驱动引擎 = 2901;

		internal const int T自动标记重建 = 2951;

		internal const int T太阳帆寿命 = 3101;

		internal const int T射线传输效率 = 3201;

		internal const int T分拣器货物叠加 = 3301;

		internal const int T分拣器货物集装 = 3306;

		internal const int T集装分拣器改良 = 3311;

		internal const int T运输船引擎 = 3401;

		internal const int T运输机舱扩容 = 3501;

		internal const int T矿物利用 = 3601;

		internal const int T垂直建造 = 3701;

		internal const int T运输站集装物流 = 3801;

		internal const int T研究速度 = 3901;

		internal const int T配送范围 = 4001;

		internal const int T宇宙探索 = 4101;

		internal const int T太阳帆吸附速度 = 4201;

		internal const int T动能武器伤害 = 5001;

		internal const int T能量武器伤害 = 5101;

		internal const int T爆破武器伤害 = 5201;

		internal const int T战斗无人机伤害 = 5301;

		internal const int T战斗无人机射速 = 5401;

		internal const int T战斗无人机耐久 = 5601;

		internal const int T行星护盾 = 5701;

		internal const int T地面编队扩容 = 5801;

		internal const int T太空编队扩容 = 5901;

		internal const int T结构强化 = 6001;

		internal const int T电磁武器效果 = 6101;

		internal const int TVD元驱动挂载点位扩展 = 6601;

		private static readonly Random rand = new Random();

		public static Color Gray = new Color(0.5882353f, 0.5882353f, 0.5882353f, 1f);

		public static Color Gray2 = new Color(1f, 1f, 1f, 0.4f);

		public static Color Gray3 = new Color(0.69803923f, 0.69803923f, 0.69803923f, 56f / 85f);

		public static Color White = new Color(0.8784314f, 0.8784314f, 0.8784314f, 61f / 85f);

		public static Color Green = new Color(32f / 85f, 64f / 85f, 0f, 61f / 85f);

		public static Color Blue = new Color(0.38039216f, 72f / 85f, 1f, 0.72156864f);

		public static Color Purple = new Color(0.6901961f, 32f / 85f, 64f / 85f, 61f / 85f);

		public static Color Red = new Color(1f, 31f / 85f, 0.29803923f, 61f / 85f);

		public static Color Orange = new Color(0.99215686f, 0.5882353f, 0.36862746f, 0.8f);

		public static Color Gold = new Color(0.8784314f, 0.6901961f, 0f, 61f / 85f);

		public static string FormatP(this float value)
		{
			int i = 3;
			StringBuilder stringBuilder = new StringBuilder("0.###");
			for (; i < 10; i++)
			{
				if ((double)value * Math.Pow(10.0, i) >= 1.0)
				{
					return value.ToString(stringBuilder.Append("%").ToString());
				}
				stringBuilder.Append("#");
			}
			return "0%";
		}

		public static string FormatName(string s)
		{
			if (s == null)
			{
				return "null";
			}
			return Localization.Translate(s).Replace("\u00a0", "").Replace("\u2009", "")
				.Replace(" ", "")
				.Replace("“", "")
				.Replace("”", "")
				.Replace(":", "")
				.Replace(":", "")
				.Replace("!", "")
				.Replace("-", "")
				.Replace(".", "")
				.Replace("(", "")
				.Replace(")", "");
		}

		public static bool IsGridIndexValid(int gridIndex)
		{
			if (GenesisBook.Enable)
			{
				return gridIndex % 1000 / 100 >= 1 && gridIndex % 1000 / 100 <= 7 && gridIndex % 100 >= 1 && gridIndex % 100 <= 17;
			}
			return gridIndex % 1000 / 100 >= 1 && gridIndex % 1000 / 100 <= 8 && gridIndex % 100 >= 1 && gridIndex % 100 <= 14;
		}

		public static bool GridIndexValid(this ItemProto proto)
		{
			return IsGridIndexValid(proto.GridIndex);
		}

		public static bool GridIndexValid(this RecipeProto proto)
		{
			return IsGridIndexValid(proto.GridIndex);
		}

		public static void Register(string key, string enTrans, string cnTrans = null)
		{
			LocalizationModule.RegisterTranslation(key, enTrans, cnTrans ?? key, enTrans);
		}

		public static void Edit(string key, string enTrans, string cnTrans = null)
		{
			LocalizationModule.EditTranslation(key, enTrans, cnTrans ?? key, enTrans);
		}

		public static void RegisterOrEditAsync(string key, string enTrans, string cnTrans = null)
		{
			ModStr modStr = default(ModStr);
			modStr.key = key;
			modStr.enTrans = enTrans;
			modStr.cnTrans = cnTrans ?? key;
			ModStr item = modStr;
			foreach (ModStr modString in modStringList)
			{
				if (modString.key == key)
				{
					modStringList.Remove(modString);
					break;
				}
			}
			modStringList.Add(item);
		}

		public static void RegisterOrEditImmediately(string key, string enTrans, string cnTrans = null)
		{
			RegisterOrEditAsync(key, enTrans, cnTrans);
			LoadLanguagePostfixAfterCommonApi();
		}

		public static void LoadLanguagePostfixAfterCommonApi()
		{
			try
			{
				if (modStringList.Count == 0 || Localization.strings == null || Localization.CurrentLanguageIndex >= Localization.strings.Length || Localization.strings[Localization.CurrentLanguageIndex] == null || Localization.currentStrings == null || Localization.floats == null || Localization.CurrentLanguageIndex >= Localization.floats.Length || Localization.floats[Localization.CurrentLanguageIndex] == null || Localization.currentFloats == null)
				{
					return;
				}
				List<string> list = Localization.strings[Localization.CurrentLanguageIndex].ToList();
				List<float> list2 = Localization.floats[Localization.CurrentLanguageIndex].ToList();
				bool flag = Localization.CurrentLanguageLCID == 2052;
				foreach (ModStr modString in modStringList)
				{
					if (!Localization.namesIndexer.TryGetValue(modString.key, out var value))
					{
						value = Localization.namesIndexer.Count;
						Localization.namesIndexer.Add(modString.key, value);
					}
					while (list.Count <= value)
					{
						list.Add(Localization.namesIndexer.ElementAt(list.Count).Key);
						list2.Add(0f);
					}
					list[value] = (flag ? modString.cnTrans : modString.enTrans);
				}
				Localization.strings[Localization.CurrentLanguageIndex] = list.ToArray();
				Localization.currentStrings = Localization.strings[Localization.CurrentLanguageIndex];
				Localization.floats[Localization.CurrentLanguageIndex] = list2.ToArray();
				Localization.currentFloats = Localization.floats[Localization.CurrentLanguageIndex];
				LogInfo($"Modify translations finish, currentStrings.len={Localization.currentStrings.Length}");
			}
			catch (Exception ex)
			{
				LogError("LoadLanguagePostfixAfterCommonApi Error: " + ex);
			}
		}

		public static void InitLogger(ManualLogSource logger)
		{
			Utils.logger = logger;
		}

		public static void LogDebug(object data)
		{
			logger.LogDebug(data);
		}

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

		public static void LogWarning(object data)
		{
			logger.LogWarning(data);
		}

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

		public static void LogFatal(object data)
		{
			logger.LogFatal(data);
		}

		public static RectTransform NormalizeRectWithTopLeft(Component cmp, float left, float top, Transform parent = null)
		{
			//IL_003d: 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_0069: 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)
			Transform transform = cmp.transform;
			RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
			if (val == null)
			{
				return null;
			}
			if ((Object)(object)parent != (Object)null)
			{
				((Transform)val).SetParent(parent, false);
			}
			val.anchorMin = new Vector2(0f, 1f);
			val.anchorMax = new Vector2(0f, 1f);
			val.pivot = new Vector2(0f, 1f);
			val.anchoredPosition3D = new Vector3(left, 0f - top, 0f);
			return val;
		}

		public static RectTransform NormalizeRectWithMidLeft(Component cmp, float left, float top, Transform parent = null, float? height = null)
		{
			//IL_0018: 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)
			RectTransform val = NormalizeRectWithTopLeft(cmp, left, top, parent);
			float num = height ?? val.sizeDelta.y;
			val.anchoredPosition3D = new Vector3(left, 0f - top + num / 2f, 0f);
			return val;
		}

		public static RectTransform NormalizeRectWithTopRight(Component cmp, float right, float top, Transform parent = null)
		{
			//IL_003d: 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_0069: 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)
			Transform transform = cmp.transform;
			RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
			if (val == null)
			{
				return null;
			}
			if ((Object)(object)parent != (Object)null)
			{
				((Transform)val).SetParent(parent, false);
			}
			val.anchorMax = new Vector2(1f, 1f);
			val.anchorMin = new Vector2(1f, 1f);
			val.pivot = new Vector2(1f, 1f);
			val.anchoredPosition3D = new Vector3(0f - right, 0f - top, 0f);
			return val;
		}

		public static RectTransform NormalizeRectWithBottomLeft(Component cmp, float left, float bottom, Transform parent = null)
		{
			//IL_003d: 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_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			Transform transform = cmp.transform;
			RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
			if (val == null)
			{
				return null;
			}
			if ((Object)(object)parent != (Object)null)
			{
				((Transform)val).SetParent(parent, false);
			}
			val.anchorMax = new Vector2(0f, 0f);
			val.anchorMin = new Vector2(0f, 0f);
			val.pivot = new Vector2(0f, 0f);
			val.anchoredPosition3D = new Vector3(left, bottom, 0f);
			return val;
		}

		public static RectTransform NormalizeRectWithMargin(Component cmp, float top, float left, float bottom, float right, Transform parent = null)
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: 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_0072: 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_0091: Unknown result type (might be due to invalid IL or missing references)
			Transform transform = cmp.transform;
			RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
			if (val == null)
			{
				return null;
			}
			if ((Object)(object)parent != (Object)null)
			{
				((Transform)val).SetParent(parent, false);
			}
			val.anchoredPosition3D = Vector3.zero;
			((Transform)val).localScale = Vector3.one;
			val.anchorMax = Vector2.one;
			val.anchorMin = Vector2.zero;
			val.pivot = new Vector2(0.5f, 0.5f);
			val.offsetMax = new Vector2(0f - right, 0f - top);
			val.offsetMin = new Vector2(left, bottom);
			return val;
		}

		public static RectTransform NormalizeRectCenter(GameObject go, float width = 0f, float height = 0f)
		{
			//IL_0027: 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_0053: 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)
			Transform transform = go.transform;
			RectTransform val = (RectTransform)(object)((transform is RectTransform) ? transform : null);
			if (val == null)
			{
				return null;
			}
			val.anchorMax = new Vector2(0.5f, 0.5f);
			val.anchorMin = new Vector2(0.5f, 0.5f);
			val.pivot = new Vector2(0.5f, 0.5f);
			if (width > 0f && height > 0f)
			{
				val.sizeDelta = new Vector2(width, height);
			}
			return val;
		}

		public static void SetPosition(this Text text, float x, float y)
		{
			NormalizeRectWithMidLeft((Component)(object)text, x, y);
		}

		public static (float, float) GetPosition(int index, int count, float totalPx = 800f)
		{
			float num = (totalPx - (float)((count - 1) * 20)) / (float)count;
			float item = (float)index * (num + 20f);
			return (item, num);
		}

		public static void SetText(this UIButton btn, string notTranslateStr)
		{
			try
			{
				Localizer component = ((Component)((Component)btn).gameObject.transform.Find("button-text")).GetComponent<Localizer>();
				Text component2 = ((Component)((Component)btn).gameObject.transform.Find("button-text")).GetComponent<Text>();
				if ((Object)(object)component != (Object)null)
				{
					component.stringKey = notTranslateStr;
					component.translation = Localization.Translate(notTranslateStr);
				}
				if ((Object)(object)component2 != (Object)null)
				{
					component2.text = Localization.Translate(notTranslateStr);
				}
			}
			catch (Exception arg)
			{
				LogError($"SetText error: {arg}");
			}
		}

		public static void AddTranslations()
		{
			Register("提示", "Tip");
			Register("确定", "Confirm");
			Register("取消", "Cancel");
			Register("要花费", "Would you like to spend");
			Register("来兑换", "to exchange");
			Register("吗?", "?");
			Register("兑换", "Exchange");
			Register("已兑换", "Exchanged");
			Register("无法兑换", "Can not exchange");
			Register("配方经验", "recipe experience");
		}

		public static void AddItemToModData(int itemId, int count, int inc = 0)
		{
			if (itemId == 1099)
			{
				AddItemToPackage(itemId, count);
				return;
			}
			lock (ItemManager.centerItemCount)
			{
				ItemManager.centerItemCount[itemId] += count;
				ItemManager.centerItemInc[itemId] += inc;
			}
		}

		public static void AddItemToPackage(int itemId, int count, int inc = 0, bool throwTrash = true)
		{
			if (!DSPGame.IsMenuDemo && GameMain.mainPlayer != null)
			{
				int num = GameMain.mainPlayer.TryAddItemToPackage(itemId, count, inc, throwTrash, 0, false);
				if (num > 0)
				{
					UIItemup.Up(itemId, num);
				}
			}
		}

		public static long GetModDataItemCount(int itemId)
		{
			return ItemManager.centerItemCount[itemId];
		}

		public static int GetPackageItemCount(int itemId)
		{
			if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null)
			{
				return 0;
			}
			StorageComponent package = GameMain.mainPlayer.package;
			int num = 0;
			for (int i = 0; i < package.size; i++)
			{
				if (package.grids[i].itemId == itemId && package.grids[i].count > 0)
				{
					num += package.grids[i].count;
				}
			}
			return num;
		}

		public static int GetDeliveryPackageItemCount(int itemId)
		{
			if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null)
			{
				return 0;
			}
			if (!GameMain.mainPlayer.deliveryPackage.unlocked)
			{
				return 0;
			}
			DeliveryPackage deliveryPackage = GameMain.mainPlayer.deliveryPackage;
			int num = 0;
			for (int num2 = 99; num2 >= 0; num2--)
			{
				if (deliveryPackage.grids[num2].itemId == itemId && deliveryPackage.grids[num2].count > 0)
				{
					num += deliveryPackage.grids[num2].count;
				}
			}
			return num;
		}

		public static long GetItemTotalCount(int itemId)
		{
			if (itemId == 1099)
			{
				if (GameMain.data.history.HasFeatureKey(1100001) && GameMain.sandboxToolsEnabled)
				{
					return long.MaxValue;
				}
				return GameMain.mainPlayer.sandCount;
			}
			return GetModDataItemCount(itemId) + GetPackageItemCount(itemId) + GetDeliveryPackageItemCount(itemId);
		}

		public static int TakeItemFromModData(int itemId, int count, out int inc)
		{
			lock (ItemManager.centerItemCount)
			{
				count = (int)Math.Min(count, ItemManager.centerItemCount[itemId]);
				inc = (int)((count != 0) ? (count / ItemManager.centerItemCount[itemId]) : 0);
				ItemManager.centerItemCount[itemId] -= count;
				ItemManager.centerItemInc[itemId] -= inc;
				return count;
			}
		}

		public static bool TakeItem(int itemId, int count, out int inc, bool showMessage = true)
		{
			inc = 0;
			if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null)
			{
				return false;
			}
			ItemProto val = ((ProtoSet<ItemProto>)(object)LDB.items).Select(itemId);
			if (GetItemTotalCount(itemId) < count)
			{
				if (showMessage)
				{
					UIMessageBox.Show(Localization.Translate("提示"), $"{((Proto)val).name} 不足 {count}!", Localization.Translate("确定"), 1, (Response)null);
				}
				return false;
			}
			if (itemId == 1099)
			{
				if (GameMain.data.history.HasFeatureKey(1100001) && GameMain.sandboxToolsEnabled)
				{
					return true;
				}
				Player mainPlayer = GameMain.mainPlayer;
				mainPlayer.sandCount -= count;
				return true;
			}
			count -= TakeItemFromModData(itemId, count, out var inc2);
			inc += inc2;
			if (count > 0)
			{
				int num = default(int);
				count -= GameMain.mainPlayer.package.TakeItem(itemId, count, ref num);
				inc += num;
				if (count > 0)
				{
					int num2 = default(int);
					GameMain.mainPlayer.deliveryPackage.TakeItems(ref itemId, ref count, ref num2);
					inc += num2;
				}
			}
			return true;
		}

		public static void ClickToMoveModDataItem(int itemId, bool leftClick)
		{
			ItemProto val = ((ProtoSet<ItemProto>)(object)LDB.items).Select(itemId);
			if (val != null)
			{
				int count = (leftClick ? (val.StackSize * ExtractAndPopup.LeftClickTakeCount) : (val.StackSize * ExtractAndPopup.RightClickTakeCount));
				int inc;
				lock (ItemManager.centerItemCount)
				{
					count = TakeItemFromModData(itemId, count, out inc);
				}
				AddItemToPackage(itemId, count, inc, throwTrash: false);
			}
		}

		public static int GetEssenceMinCount()
		{
			long val = Math.Min(ItemManager.centerItemCount[8041], ItemManager.centerItemCount[8042]);
			val = Math.Min(val, ItemManager.centerItemCount[8043]);
			val = Math.Min(val, ItemManager.centerItemCount[8044]);
			return (int)Math.Min(2147483647L, val);
		}

		public static bool TakeEssenceFromModData(int n, int[] consumeRegister)
		{
			if (ItemManager.centerItemCount[8041] < n || ItemManager.centerItemCount[8042] < n || ItemManager.centerItemCount[8043] < n || ItemManager.centerItemCount[8044] < n)
			{
				return false;
			}
			lock (ItemManager.centerItemCount)
			{
				TakeItemFromModData(8041, n, out var inc);
				TakeItemFromModData(8042, n, out inc);
				TakeItemFromModData(8043, n, out inc);
				TakeItemFromModData(8044, n, out inc);
			}
			lock (consumeRegister)
			{
				consumeRegister[8041] += n;
				consumeRegister[8042] += n;
				consumeRegister[8043] += n;
				consumeRegister[8044] += n;
			}
			return true;
		}

		public static double GetRandDouble(ref uint seed)
		{
			seed = (uint)((int)((ulong)((long)(seed % 2147483646 + 1) * 48271L) % 2147483647uL) - 1);
			return (double)seed / 2147483646.0;
		}

		public static int GetRandInt(int min, int max)
		{
			return rand.Next(min, max);
		}

		public static double GetRandDouble()
		{
			return rand.NextDouble();
		}

		public static string WithColor(this string s, Color color)
		{
			//IL_000e: 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_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_004d: Unknown result type (might be due to invalid IL or missing references)
			string text = $"#{(byte)(color.r * 255f):X2}{(byte)(color.g * 255f):X2}{(byte)(color.b * 255f):X2}{(byte)(color.a * 255f):X2}";
			return "<color=" + text + ">" + s + "</color>";
		}

		public static string WithQualityColor(this string s, int quality)
		{
			//IL_002e: 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_004a: 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_0074: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			if (1 == 0)
			{
			}
			string result = quality switch
			{
				0 => s.WithColor(Gray), 
				1 => s.WithColor(White), 
				2 => s.WithColor(Green), 
				3 => s.WithColor(Blue), 
				4 => s.WithColor(Purple), 
				5 => s.WithColor(Red), 
				7 => s.WithColor(Gold), 
				_ => $"Invalid quality {quality}".WithColor(Red), 
			};
			if (1 == 0)
			{
			}
			return result;
		}

		public static string WithPALvColor(this string s, int level)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: 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_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: 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_0080: 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)
			if (1 == 0)
			{
			}
			string result = level switch
			{
				1 => s.WithColor(White), 
				2 => s.WithColor(Green), 
				3 => s.WithColor(Blue), 
				4 => s.WithColor(Purple), 
				5 => s.WithColor(Red), 
				6 => s.WithColor(Orange), 
				7 => s.WithColor(Gold), 
				_ => $"Invalid point aggregate level {level}".WithColor(Red), 
			};
			if (1 == 0)
			{
			}
			return result;
		}

		public static string WithValueColor(this string s, int itemID)
		{
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: 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_0080: 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_009c: 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)
			float num = ItemManager.itemValue[itemID];
			if (1 == 0)
			{
			}
			string result = ((num <= 5f) ? s.WithColor(Gray) : ((num <= 20f) ? s.WithColor(White) : ((num <= 100f) ? s.WithColor(Green) : ((num <= 500f) ? s.WithColor(Blue) : ((num <= 2500f) ? s.WithColor(Purple) : ((num <= 10000f) ? s.WithColor(Red) : ((!(num <= 100000f)) ? s.WithColor(Gold) : s.WithColor(Orange))))))));
			if (1 == 0)
			{
			}
			return result;
		}
	}
	[AttributeUsage(AttributeTargets.Class, Inherited = false)]
	public class PatchGuidAttribute : Attribute
	{
		public string Guid { get; }

		public PatchGuidAttribute(string guid)
		{
			Guid = guid;
			base..ctor();
		}
	}
	public enum PatchCallbackFlag
	{
		CallOnEnableBeforePatch,
		CallOnDisableAfterUnpatch
	}
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
	public class PatchSetCallbackFlagAttribute : Attribute
	{
		public PatchCallbackFlag Flag { get; }

		public PatchSetCallbackFlagAttribute(PatchCallbackFlag flag)
		{
			Flag = flag;
			base..ctor();
		}
	}
	public class PatchImpl<T> where T : PatchImpl<T>, new()
	{
		protected Harmony _patch;

		protected static T Instance { get; } = new T();


		public static void Enable(bool enable)
		{
			T instance = Instance;
			if (enable)
			{
				if (instance._patch == null)
				{
					string text = typeof(T).GetCustomAttribute<PatchGuidAttribute>()?.Guid ?? ("PatchImpl." + (typeof(T).FullName ?? typeof(T).ToString()));
					bool flag = typeof(T).GetCustomAttributes<PatchSetCallbackFlagAttribute>().Any((PatchSetCallbackFlagAttribute n) => n.Flag == PatchCallbackFlag.CallOnEnableBeforePatch);
					if (flag)
					{
						instance.OnEnable();
					}
					instance._patch = Harmony.CreateAndPatchAll(typeof(T), text);
					if (!flag)
					{
						instance.OnEnable();
					}
				}
			}
			else if (instance._patch != null)
			{
				bool flag2 = typeof(T).GetCustomAttributes<PatchSetCallbackFlagAttribute>().Any((PatchSetCallbackFlagAttribute n) => n.Flag == PatchCallbackFlag.CallOnDisableAfterUnpatch);
				if (!flag2)
				{
					instance.OnDisable();
				}
				instance._patch.UnpatchSelf();
				instance._patch = null;
				if (flag2)
				{
					instance.OnDisable();
				}
			}
		}

		public static Harmony GetHarmony()
		{
			return Instance._patch;
		}

		protected virtual void OnEnable()
		{
		}

		protected virtual void OnDisable()
		{
		}
	}
}
namespace FE.UI.View
{
	public static class MainWindow
	{
		private static PressKeyBind _toggleKey;

		private static bool _configWinInitialized;

		private static MyConfigWindow _configWin;

		private static bool sandboxMode;

		public static void AddTranslations()
		{
			FE.Utils.Utils.Register("KEYOpenFracCentre", "[FE] Open Fractionation Data Centre", "[FE] 打开分馏数据中心");
			FE.Utils.Utils.Register("分馏数据中心", "Fractionation Data Centre");
			FE.Utils.Utils.Register("核心操作", "Core Operation");
			RecipeOperate.AddTranslations();
			BuildingOperate.AddTranslations();
			FE.Utils.Utils.Register("物品管理", "Item Management");
			ItemInteraction.AddTranslations();
			ImportantItem.AddTranslations();
			FE.Utils.Utils.Register("资源获取", "Resource Collection");
			TicketRaffle.AddTranslations();
			SelectedRaffle.AddTranslations();
			LimitedTimeStore.AddTranslations();
			FE.Utils.Utils.Register("进度系统", "Progress System");
			MainTask.AddTranslations();
			RecurringTask.AddTranslations();
			Achievements.AddTranslations();
			DevelopmentDiary.AddTranslations();
			FE.Utils.Utils.Register("统计相关", "Statistic Related");
			RecipeGallery.AddTranslations();
			FracStatistic.AddTranslations();
			FE.Utils.Utils.Register("系统设置", "System Setting");
			VipFeatures.AddTranslations();
			ExtractAndPopup.AddTranslations();
			SandboxMode.AddTranslations();
		}

		public static void LoadConfig(ConfigFile configFile)
		{
			RecipeOperate.LoadConfig(configFile);
			BuildingOperate.LoadConfig(configFile);
			ItemInteraction.LoadConfig(configFile);
			ImportantItem.LoadConfig(configFile);
			TicketRaffle.LoadConfig(configFile);
			SelectedRaffle.LoadConfig(configFile);
			LimitedTimeStore.LoadConfig(configFile);
			MainTask.LoadConfig(configFile);
			RecurringTask.LoadConfig(configFile);
			Achievements.LoadConfig(configFile);
			DevelopmentDiary.LoadConfig(configFile);
			RecipeGallery.LoadConfig(configFile);
			FracStatistic.LoadConfig(configFile);
			VipFeatures.LoadConfig(configFile);
			ExtractAndPopup.LoadConfig(configFile);
			SandboxMode.LoadConfig(configFile);
		}

		public static void Init()
		{
			//IL_0061: 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_0073: 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)
			MyConfigWindow.OnUICreated = (Action<MyConfigWindow, RectTransform>)Delegate.Combine(MyConfigWindow.OnUICreated, new Action<MyConfigWindow, RectTransform>(CreateUI));
			MyConfigWindow.OnUpdateUI = (Action)Delegate.Combine(MyConfigWindow.OnUpdateUI, new Action(UpdateUI));
			BuiltinKey val = default(BuiltinKey);
			val.key = new CombineKey(102, (byte)1, (ECombineKeyAction)0, false);
			val.conflictGroup = 2821;
			val.name = "OpenFracCentre";
			val.canOverride = true;
			_toggleKey = CustomKeyBindSystem.RegisterKeyBindWithReturn<PressKeyBind>(val);
		}

		private static void CreateUI(MyConfigWindow wnd, RectTransform trans)
		{
			wnd.AddTabGroup(trans, "核心操作");
			RecipeOperate.CreateUI(wnd, trans);
			BuildingOperate.CreateUI(wnd, trans);
			wnd.AddTabGroup(trans, "物品管理");
			ItemInteraction.CreateUI(wnd, trans);
			ImportantItem.CreateUI(wnd, trans);
			wnd.AddTabGroup(trans, "资源获取");
			TicketRaffle.CreateUI(wnd, trans);
			SelectedRaffle.CreateUI(wnd, trans);
			LimitedTimeStore.CreateUI(wnd, trans);
			wnd.AddTabGroup(trans, "进度系统");
			MainTask.CreateUI(wnd, trans);
			RecurringTask.CreateUI(wnd, trans);
			Achievements.CreateUI(wnd, trans);
			DevelopmentDiary.CreateUI(wnd, trans);
			wnd.AddTabGroup(trans, "统计相关");
			RecipeGallery.CreateUI(wnd, trans);
			FracStatistic.CreateUI(wnd, trans);
			wnd.AddTabGroup(trans, "系统设置");
			VipFeatures.CreateUI(wnd, trans);
			ExtractAndPopup.CreateUI(wnd, trans);
			if (sandboxMode)
			{
				SandboxMode.CreateUI(wnd, trans);
			}
		}

		private static void UpdateUI()
		{
			RecipeOperate.UpdateUI();
			BuildingOperate.UpdateUI();
			ItemInteraction.UpdateUI();
			ImportantItem.UpdateUI();
			TicketRaffle.UpdateUI();
			SelectedRaffle.UpdateUI();
			LimitedTimeStore.UpdateUI();
			MainTask.UpdateUI();
			RecurringTask.UpdateUI();
			Achievements.UpdateUI();
			DevelopmentDiary.UpdateUI();
			RecipeGallery.UpdateUI();
			FracStatistic.UpdateUI();
			VipFeatures.UpdateUI();
			ExtractAndPopup.UpdateUI();
			if (sandboxMode)
			{
				SandboxMode.UpdateUI();
			}
		}

		public static void OnInputUpdate()
		{
			if (GameMain.isPaused || !GameMain.isRunning || GameMain.isFullscreenPaused || GameMain.mainPlayer == null)
			{
				CloseConfigWindow();
			}
			else if (!VFInput.inputing && _toggleKey.keyValue && GameMain.history.TechUnlocked(1251))
			{
				ToggleConfigWindow();
			}
		}

		private static void ToggleConfigWindow()
		{
			if (!_configWinInitialized)
			{
				_configWinInitialized = true;
				sandboxMode = GameMain.sandboxToolsEnabled;
				_configWin = MyConfigWindow.CreateInstance("FEMainWindow", "分馏数据中心");
			}
			if (((ManualBehaviour)_configWin).active)
			{
				((ManualBehaviour)_configWin)._Close();
				return;
			}
			if (sandboxMode != GameMain.sandboxToolsEnabled)
			{
				sandboxMode = GameMain.sandboxToolsEnabled;
				_configWin = MyConfigWindow.CreateInstance("FEMainWindow", "分馏数据中心");
			}
			_configWin.Open();
		}

		private static void CloseConfigWindow()
		{
			if (_configWinInitialized && ((ManualBehaviour)_configWin).active)
			{
				((ManualBehaviour)_configWin)._Close();
			}
		}

		public static void Import(BinaryReader r)
		{
			int num = r.ReadInt32();
			RecipeOperate.Import(r);
			BuildingOperate.Import(r);
			ItemInteraction.Import(r);
			ImportantItem.Import(r);
			TicketRaffle.Import(r);
			SelectedRaffle.Import(r);
			LimitedTimeStore.Import(r);
			MainTask.Import(r);
			RecurringTask.Import(r);
			Achievements.Import(r);
			DevelopmentDiary.Import(r);
			RecipeGallery.Import(r);
			FracStatistic.Import(r);
			VipFeatures.Import(r);
			ExtractAndPopup.Import(r);
			SandboxMode.Import(r);
		}

		public static void Export(BinaryWriter w)
		{
			w.Write(1);
			BuildingOperate.Export(w);
			RecipeOperate.Export(w);
			ItemInteraction.Export(w);
			ImportantItem.Export(w);
			TicketRaffle.Export(w);
			SelectedRaffle.Export(w);
			LimitedTimeStore.Export(w);
			MainTask.Export(w);
			RecurringTask.Export(w);
			Achievements.Export(w);
			DevelopmentDiary.Export(w);
			RecipeGallery.Export(w);
			FracStatistic.Export(w);
			VipFeatures.Export(w);
			ExtractAndPopup.Export(w);
			SandboxMode.Export(w);
		}

		public static void IntoOtherSave()
		{
			BuildingOperate.IntoOtherSave();
			RecipeOperate.IntoOtherSave();
			ItemInteraction.IntoOtherSave();
			ImportantItem.IntoOtherSave();
			TicketRaffle.IntoOtherSave();
			SelectedRaffle.IntoOtherSave();
			LimitedTimeStore.IntoOtherSave();
			MainTask.IntoOtherSave();
			RecurringTask.IntoOtherSave();
			Achievements.IntoOtherSave();
			DevelopmentDiary.IntoOtherSave();
			RecipeGallery.IntoOtherSave();
			FracStatistic.IntoOtherSave();
			VipFeatures.IntoOtherSave();
			ExtractAndPopup.IntoOtherSave();
			SandboxMode.IntoOtherSave();
		}
	}
}
namespace FE.UI.View.Statistic
{
	public static class FracStatistic
	{
		private static RectTransform window;

		private static RectTransform tab;

		public static void AddTranslations()
		{
			FE.Utils.Utils.Register("分馏统计", "Frac Statistic");
		}

		public static void LoadConfig(ConfigFile configFile)
		{
		}

		public static void CreateUI(MyConfigWindow wnd, RectTransform trans)
		{
			window = trans;
			tab = wnd.AddTab(trans, "分馏统计");
			float num = 0f;
			float num2 = 18f;
		}

		public static void UpdateUI()
		{
			if (((Component)tab).gameObject.activeSelf)
			{
			}
		}

		public static void Import(BinaryReader r)
		{
			int num = r.ReadInt32();
		}

		public static void Export(BinaryWriter w)
		{
			w.Write(1);
		}

		public static void IntoOtherSave()
		{
		}
	}
	public static class RecipeGallery
	{
		private static RectTransform window;

		private static RectTransform tab;

		private static Text recipeUnlockTitleText;

		private static Text[,] recipeUnlockInfoText = new Text[9, 8];

		private static int[] Matrixes = new int[7] { 6001, 6002, 6003, 6004, 6005, 6006, 5201 };

		public static void AddTranslations()
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			FE.Utils.Utils.Register("配方图鉴", "Recipe Gallery");
			FE.Utils.Utils.Register("配方解锁情况", "The recipe unlock status is as follows (" + "Full Echo".WithColor(FE.Utils.Utils.Orange) + "/" + "Unlocked".WithColor(FE.Utils.Utils.Blue) + "/Total):", "配方解锁情况如下(" + "满回响".WithColor(FE.Utils.Utils.Orange) + "/" + "已解锁".WithColor(FE.Utils.Utils.Blue) + "/总数):");
		}

		public static void LoadConfig(ConfigFile configFile)
		{
		}

		public static void CreateUI(MyConfigWindow wnd, RectTransform trans)
		{
			window = trans;
			tab = wnd.AddTab(trans, "配方图鉴");
			float x = 0f;
			float num = 18f;
			recipeUnlockTitleText = wnd.AddText2(x, num, tab, "配方解锁情况");
			recipeUnlockTitleText.supportRichText = true;
			num += 36f;
			for (int i = 0; i < 9; i++)
			{
				for (int j = 0; j < 8; j++)
				{
					(float, float) position = FE.Utils.Utils.GetPosition(j, 8);
					recipeUnlockInfoText[i, j] = wnd.AddText2(position.Item1, num, tab, "动态刷新");
					recipeUnlockInfoText[i, j].supportRichText = true;
				}
				num += 36f;
			}
			recipeUnlockInfoText[0, 0].text = "";
			for (int k = 1; k <= 7; k++)
			{
				recipeUnlockInfoText[k, 0].text = ((Proto)((ProtoSet<ItemProto>)(object)LDB.items).Select(Matrixes[k - 1])).name.Replace(" Matrix", "");
			}
			recipeUnlockInfoText[8, 0].text = Localization.Translate("总计");
			for (int l = 1; l <= 6; l++)
			{
				recipeUnlockInfoText[0, l].text = ERecipeExtension.RecipeTypeShortNames[l - 1];
			}
			recipeUnlockInfoText[0, 7].text = Localization.Translate("总计");
		}

		public static void UpdateUI()
		{
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Unknown result type (might be due to invalid IL or missing references)
			if (!((Component)tab).gameObject.activeSelf)
			{
				return;
			}
			int[,] array = new int[9, 8];
			int[,] array2 = new int[9, 8];
			int[,] array3 = new int[9, 8];
			for (int i = 1; i <= 7; i++)
			{
				for (int j = 1; j <= 6; j++)
				{
					int matrixID = Matrixes[i - 1];
					ERecipe recipeType = (ERecipe)j;
					List<BaseRecipe> list = (from r in RecipeManager.GetRecipesByType(recipeType)
						where ItemManager.itemToMatrix[r.InputID] == matrixID
						select r).ToList();
					array3[i, j] = list.Count;
					array3[8, j] += list.Count;
					array3[i, 7] += list.Count;
					array3[8, 7] += list.Count;
					list = list.Where((BaseRecipe r) => r.Unlocked).ToList();
					array2[i, j] = list.Count;
					array2[8, j] += list.Count;
					array2[i, 7] += list.Count;
					array2[8, 7] += list.Count;
					list = list.Where((BaseRecipe r) => r.IsMaxMemory).ToList();
					array[i, j] = list.Count;
					array[8, j] += list.Count;
					array[i, 7] += list.Count;
					array[8, 7] += list.Count;
				}
			}
			for (int k = 1; k <= 8; k++)
			{
				for (int l = 1; l <= 7; l++)
				{
					recipeUnlockInfoText[k, l].text = $"{array[k, l].ToString().WithColor(FE.Utils.Utils.Orange)}/{array2[k, l].ToString().WithColor(FE.Utils.Utils.Blue)}/{array3[k, l]}";
				}
			}
		}

		public static void Import(BinaryReader r)
		{
			int num = r.ReadInt32();
		}

		public static void Export(BinaryWriter w)
		{
			w.Write(1);
		}

		public static void IntoOtherSave()
		{
		}
	}
}
namespace FE.UI.View.Setting
{
	public static class ExtractAndPopup
	{
		private static RectTransform window;

		private static RectTransform tab;

		private static int[] ClickTakeCounts = new int[7] { 1, 3, 5, 10, 30, 50, 100 };

		private static string[] ClickTakeCountsStr = ClickTakeCounts.Select((int count) => count.ToString()).ToArray();

		private static ConfigEntry<int> LeftClickTakeCountEntry;

		private static ConfigEntry<int> RightClickTakeCountEntry;

		public static int LeftClickTakeCount => ClickTakeCounts[LeftClickTakeCountEntry.Value];

		public static int RightClickTakeCount => ClickTakeCounts[RightClickTakeCountEntry.Value];

		public static void AddTranslations()
		{
			FE.Utils.Utils.Register("提取&弹窗", "Extract & Pop-up");
			FE.Utils.Utils.Register("左键单击时提取几组物品", "Extract how many sets of items when left-click");
			FE.Utils.Utils.Register("右键单击时提取几组物品", "Extract how many sets of items when right-click");
		}

		public static void LoadConfig(ConfigFile configFile)
		{
			LeftClickTakeCountEntry = configFile.Bind<int>("Extract & Pop-up", "LeftClickTakeCount", 0, "左键单击时提取几组物品");
			if (LeftClickTakeCountEntry.Value < 0 || LeftClickTakeCountEntry.Value >= ClickTakeCounts.Length)
			{
				LeftClickTakeCountEntry.Value = 0;
			}
			RightClickTakeCountEntry = configFile.Bind<int>("Extract & Pop-up", "RightClickTakeCount", 3, "右键单击时提取几组物品");
			if (RightClickTakeCountEntry.Value < 0 || RightClickTakeCountEntry.Value >= ClickTakeCounts.Length)
			{
				RightClickTakeCountEntry.Value = 3;
			}
		}

		public static void CreateUI(MyConfigWindow wnd, RectTransform trans)
		{
			window = trans;
			tab = wnd.AddTab(trans, "提取&弹窗");
			float x = 0f;
			float num = 18f;
			wnd.AddComboBox(x, num, tab, "左键单击时提取几组物品").WithItems(ClickTakeCountsStr).WithSize(200f, 0f)
				.WithConfigEntry(LeftClickTakeCountEntry);
			num += 36f;
			wnd.AddComboBox(x, num, tab, "右键单击时提取几组物品").WithItems(ClickTakeCountsStr).WithSize(200f, 0f)
				.WithConfigEntry(RightClickTakeCountEntry);
		}

		public static void UpdateUI()
		{
			if (((Component)tab).gameObject.activeSelf)
			{
			}
		}

		public static void Import(BinaryReader r)
		{
			int num = r.ReadInt32();
		}

		public static void Export(BinaryWriter w)
		{
			w.Write(1);
		}

		public static void IntoOtherSave()
		{
		}
	}
	public static class SandboxMode
	{
		private class MultiRateMapper : MyWindow.RangeValueMapper<float>
		{
			public MultiRateMapper()
				: base(0, 40)
			{
			}

			public override float IndexToValue(int index)
			{
				return (float)Math.Pow(10.0, (double)(index - 10) / 10.0);
			}

			public override int ValueToIndex(float value)
			{
				return (int)(Math.Log10(value) * 10.0 + 10.0);
			}
		}

		[CompilerGenerated]
		private static class <>O
		{
			public static UnityAction <0>__UnlockAllFracRecipes;
		}

		private static RectTransform window;

		private static RectTransform tab;

		private static UIButton btnUnlockAll;

		private static ConfigEntry<float> ExpMultiRateEntry;

		private static Text txtExpMultiRate;

		private static MySlider sliderExpMultiRate;

		public static float ExpMultiRate { get; private set; }

		public static void AddTranslations()
		{
			FE.Utils.Utils.Register("沙盒模式", "Sandbox Mode");
			FE.Utils.Utils.Register("解锁所有分馏配方", "Unlock all fractionation recipes");
			FE.Utils.Utils.Register("经验获取倍率", "Experience gain multiplier");
			FE.Utils.Utils.Register("经验获取倍率说明", "Adjust the speed at which recipe experience is gained by processing items.", "调整通过处理物品获取配方经验的速度。");
		}

		public static void LoadConfig(ConfigFile configFile)
		{
			ExpMultiRateEntry = configFile.Bind<float>("TabSetting", "ExpMultiRate", 1f, "经验获取倍率");
			ExpMultiRate = ExpMultiRateEntry.Value;
		}

		public static void CreateUI(MyConfigWindow wnd, RectTransform trans)
		{
			//IL_0049: 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_0054: Expected O, but got Unknown
			window = trans;
			tab = wnd.AddTab(trans, "沙盒模式");
			float num = 0f;
			float num2 = 18f;
			float y = num2;
			RectTransform parent = tab;
			object obj = <>O.<0>__UnlockAllFracRecipes;
			if (obj == null)
			{
				UnityAction val = RecipeManager.UnlockAllFracRecipes;
				<>O.<0>__UnlockAllFracRecipes = val;
				obj = (object)val;
			}
			btnUnlockAll = wnd.AddButton(0, 2, y, parent, "解锁所有分馏配方", 16, "button-unlock-all-recipes", (UnityAction)obj);
			num2 += 36f;
			txtExpMultiRate = wnd.AddText2(num, num2, tab, "经验获取倍率", 15, "text-exp-multi-rate");
			sliderExpMultiRate = wnd.AddSlider(num + txtExpMultiRate.preferredWidth + 5f, num2, tab, ExpMultiRateEntry, new MultiRateMapper(), "0.#", 200f);
			wnd.AddTipsButton2(num + txtExpMultiRate.preferredWidth + 5f + 200f + 5f, num2, tab, "经验获取倍率", "经验获取倍率说明");
		}

		public static void UpdateUI()
		{
			if (((Component)tab).gameObject.activeSelf)
			{
				bool sandboxToolsEnabled = GameMain.sandboxToolsEnabled;
				((Behaviour)btnUnlockAll).enabled = sandboxToolsEnabled;
				((Behaviour)btnUnlockAll.button).enabled = sandboxToolsEnabled;
				ExpMultiRate = (sandboxToolsEnabled ? ExpMultiRateEntry.Value : 1f);
				((Behaviour)sliderExpMultiRate.slider).enabled = sandboxToolsEnabled;
			}
		}

		public static void Import(BinaryReader r)
		{
			int num = r.ReadInt32();
		}

		public static void Export(BinaryWriter w)
		{
			w.Write(1);
		}

		public static void IntoOtherSave()
		{
		}
	}
	public static class VipFeatures
	{
		private static RectTransform window;

		private static RectTransform tab;

		public static int vipLevel;

		public static int vipFreeCount => (vipLevel + 2) / 3 + 2;

		public static float vipDiscount => 1f - 0.05f * (float)Math.Min(10, vipLevel);

		public static void AddTranslations()
		{
			FE.Utils.Utils.Register("VIP功能", "VIP Features");
		}

		public static void LoadConfig(ConfigFile configFile)
		{
		}

		public static void CreateUI(MyConfigWindow wnd, RectTransform trans)
		{
			window = trans;
			tab = wnd.AddTab(trans, "VIP功能");
			float num = 0f;
			float num2 = 18f;
		}

		public static void UpdateUI()
		{
			if (((Component)tab).gameObj