Decompiled source of CAAP N v1.4.0
CruiseAssist.dll
Decompiled 7 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using tanu.CruiseAssist; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("CruiseAssist")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CruiseAssist")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("9cdb5e0f-fb97-46ff-a4fb-a9a400443fd3")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] [HarmonyPatch(typeof(PlayerMove_Drift))] internal class Patch_PlayerMoveDrift { [HarmonyPatch("GameTick")] [HarmonyPrefix] public static void GameTick_Prefix(PlayerMove_Drift __instance) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (!CruiseAssistPlugin.Enable || !CruiseAssistPlugin.TargetSelected || (int)((PlayerAction)__instance).controller.movementStateInFrame != 1) { return; } if (VFInput._moveForward.pressing || VFInput._pullUp.pressing) { CruiseAssistPlugin.Interrupt = true; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.CancelOperate(); }); } else { CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.OperateDrift(__instance); }); } } } [HarmonyPatch(typeof(PlayerMove_Fly))] internal class Patch_PlayerMoveFly { [HarmonyPatch("GameTick")] [HarmonyPrefix] public static void GameTick_Prefix(PlayerMove_Fly __instance) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Invalid comparison between Unknown and I4 //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (!CruiseAssistPlugin.Enable || !CruiseAssistPlugin.TargetSelected || (int)((PlayerAction)__instance).controller.movementStateInFrame != 2) { return; } if (VFInput._moveForward.pressing || VFInput._pullUp.pressing) { CruiseAssistPlugin.Interrupt = true; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.CancelOperate(); }); } else { CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.OperateFly(__instance); }); } } } [HarmonyPatch(typeof(PlayerMove_Walk))] internal class Patch_PlayerMoveWalk { [HarmonyPatch("GameTick")] [HarmonyPrefix] public static void GameTick_Prefix(PlayerMove_Walk __instance) { //IL_04b3: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04c7: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_057b: Unknown result type (might be due to invalid IL or missing references) //IL_0585: Unknown result type (might be due to invalid IL or missing references) //IL_058a: Unknown result type (might be due to invalid IL or missing references) //IL_058f: Unknown result type (might be due to invalid IL or missing references) //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05d9: Unknown result type (might be due to invalid IL or missing references) //IL_05de: Unknown result type (might be due to invalid IL or missing references) //IL_05e3: Unknown result type (might be due to invalid IL or missing references) //IL_070d: Unknown result type (might be due to invalid IL or missing references) //IL_0713: Invalid comparison between Unknown and I4 //IL_0621: Unknown result type (might be due to invalid IL or missing references) //IL_062b: Unknown result type (might be due to invalid IL or missing references) //IL_0630: Unknown result type (might be due to invalid IL or missing references) //IL_0635: Unknown result type (might be due to invalid IL or missing references) //IL_0716: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_0400: Unknown result type (might be due to invalid IL or missing references) //IL_0664: Unknown result type (might be due to invalid IL or missing references) //IL_066e: Unknown result type (might be due to invalid IL or missing references) //IL_0673: Unknown result type (might be due to invalid IL or missing references) //IL_0678: Unknown result type (might be due to invalid IL or missing references) //IL_0434: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_0443: 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_06c9: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06d8: Unknown result type (might be due to invalid IL or missing references) //IL_06dd: Unknown result type (might be due to invalid IL or missing references) CruiseAssistPlugin.lastState = CruiseAssistPlugin.State; if (CruiseAssistPlugin.Interrupt) { CruiseAssistPlugin.lockOn = false; CruiseAssistPlugin.State = CruiseAssistState.INACTIVE; CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetStar = null; CruiseAssistPlugin.SelectTargetHive = null; CruiseAssistPlugin.SelectTargetMsg = null; CruiseAssistPlugin.SelectTargetEnemyIdF = 0; CruiseAssistPlugin.lastState = CruiseAssistState.INACTIVE; CruiseAssistPlugin.AbortPreloadStar(); } CruiseAssistPlugin.State = CruiseAssistState.INACTIVE; CruiseAssistPlugin.Interrupt = false; CruiseAssistPlugin.TargetStar = null; CruiseAssistPlugin.TargetPlanet = null; CruiseAssistPlugin.TargetHive = null; CruiseAssistPlugin.TargetMsg = null; CruiseAssistPlugin.TargetEnemyId = 0; CruiseAssistPlugin.TargetRange = 0.0; CruiseAssistPlugin.TargetSelected = false; if (GameMain.localPlanet != null && (CruiseAssistPlugin.History.Count == 0 || CruiseAssistPlugin.History.Last() != GameMain.localPlanet.id)) { if (CruiseAssistPlugin.History.Count >= 128) { CruiseAssistPlugin.History.RemoveAt(0); } CruiseAssistPlugin.History.Add(GameMain.localPlanet.id); ConfigManager.CheckConfig(ConfigManager.Step.STATE); } if (!CruiseAssistPlugin.Enable) { CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetInactive(); }); return; } int indicatorAstroId = GameMain.mainPlayer.navigation.indicatorAstroId; int indicatorEnemyId = GameMain.mainPlayer.navigation.indicatorEnemyId; int indicatorMsgId = GameMain.mainPlayer.navigation.indicatorMsgId; if ((Object)(object)UIRoot.instance.uiGame.starmap.focusHive != (Object)null) { return; } if (CruiseAssistPlugin.SelectTargetAstroId != indicatorAstroId) { CruiseAssistPlugin.SelectTargetAstroId = indicatorAstroId; if (indicatorAstroId == 0) { CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetStar = null; } else { if (indicatorAstroId > 1000000) { CruiseAssistPlugin.SelectTargetHive = GameMain.spaceSector.dfHivesByAstro[indicatorAstroId - 1000000]; CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetStar = CruiseAssistPlugin.SelectTargetHive.starData; } else if (indicatorAstroId % 100 != 0) { CruiseAssistPlugin.SelectTargetPlanet = GameMain.galaxy.PlanetById(indicatorAstroId); CruiseAssistPlugin.SelectTargetStar = CruiseAssistPlugin.SelectTargetPlanet.star; } else { CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetStar = GameMain.galaxy.StarById(indicatorAstroId / 100); } CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetTargetAstroId(indicatorAstroId); }); } } if (CruiseAssistPlugin.SelectTargetEnemyId != indicatorEnemyId) { CruiseAssistPlugin.SelectTargetEnemyId = indicatorEnemyId; if (indicatorEnemyId != 0) { CruiseAssistPlugin.SelectTargetEnemyIdF = indicatorEnemyId; CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetStar = null; CruiseAssistPlugin.SelectTargetHive = null; CruiseAssistPlugin.SelectTargetMsg = null; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetTargetAstroId(indicatorAstroId); }); } else { CruiseAssistPlugin.SelectTargetEnemyIdF = 0; } } if (CruiseAssistPlugin.SelectTargetMsgId != indicatorMsgId) { CruiseAssistPlugin.SelectTargetMsgId = indicatorMsgId; if (indicatorMsgId == 0) { CruiseAssistPlugin.SelectTargetMsg = null; } else { CruiseAssistPlugin.SelectTargetMsg = GameMain.gameScenario.cosmicMessageManager.messages[indicatorMsgId]; CruiseAssistPlugin.SelectTargetStar = CruiseAssistPlugin.SelectTargetMsg.nearStar; CruiseAssistPlugin.SelectTargetEnemyIdF = 0; CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetHive = null; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetTargetAstroId(indicatorAstroId); }); } } VectorLF3 val; if (CruiseAssistPlugin.SelectTargetStar != null) { if (GameMain.localStar != null && CruiseAssistPlugin.SelectTargetStar.id == GameMain.localStar.id) { if (CruiseAssistPlugin.SelectTargetPlanet == null && CruiseAssistPlugin.SelectTargetHive == null && GameMain.localPlanet != null) { CruiseAssistPlugin.SelectTargetStar = null; CruiseAssistPlugin.SelectTargetEnemyId = 0; CruiseAssistPlugin.SelectTargetAstroId = 0; GameMain.mainPlayer.navigation.indicatorAstroId = 0; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetInactive(); }); return; } if (CruiseAssistPlugin.SelectTargetPlanet != null) { if (GameMain.localPlanet != null && CruiseAssistPlugin.SelectTargetPlanet.id == GameMain.localPlanet.id) { CruiseAssistPlugin.Deactivate(); return; } CruiseAssistPlugin.TargetPlanet = CruiseAssistPlugin.SelectTargetPlanet; } else if (CruiseAssistPlugin.SelectTargetHive != null) { val = GameMain.spaceSector.astros[CruiseAssistPlugin.SelectTargetHive.hiveAstroId - 1000000].uPos - GameMain.mainPlayer.uPosition; if (((VectorLF3)(ref val)).magnitude < 30000.0) { CruiseAssistPlugin.Deactivate(); return; } CruiseAssistPlugin.TargetHive = CruiseAssistPlugin.SelectTargetHive; } else if (CruiseAssistPlugin.SelectTargetMsg != null) { val = CruiseAssistPlugin.SelectTargetMsg.uPosition - GameMain.mainPlayer.uPosition; if (((VectorLF3)(ref val)).magnitude < 2000.0) { CruiseAssistPlugin.Deactivate(); return; } CruiseAssistPlugin.TargetMsg = CruiseAssistPlugin.SelectTargetMsg; } else if (CruiseAssistPlugin.ReticuleTargetPlanet != null) { CruiseAssistPlugin.TargetPlanet = CruiseAssistPlugin.ReticuleTargetPlanet; } } else { CruiseAssistPlugin.TargetStar = CruiseAssistPlugin.SelectTargetStar; CruiseAssistPlugin.TargetPlanet = CruiseAssistPlugin.SelectTargetPlanet; CruiseAssistPlugin.TargetHive = CruiseAssistPlugin.SelectTargetHive; } } else if (CruiseAssistPlugin.SelectTargetEnemyIdF != 0) { val = CruiseAssistPlugin.SelectTargetEnemy.pos - GameMain.mainPlayer.uPosition; if (((VectorLF3)(ref val)).magnitude < 3000.0) { CruiseAssistPlugin.Deactivate(); return; } CruiseAssistPlugin.TargetEnemyId = CruiseAssistPlugin.SelectTargetEnemyId; } else if (CruiseAssistPlugin.ReticuleTargetPlanet != null) { CruiseAssistPlugin.SelectTargetPlanet = CruiseAssistPlugin.ReticuleTargetPlanet; CruiseAssistPlugin.SelectTargetStar = CruiseAssistPlugin.SelectTargetPlanet.star; CruiseAssistPlugin.TargetPlanet = CruiseAssistPlugin.ReticuleTargetPlanet; CruiseAssistPlugin.TargetStar = CruiseAssistPlugin.TargetPlanet.star; } else if (CruiseAssistPlugin.ReticuleTargetStar != null) { CruiseAssistPlugin.SelectTargetPlanet = null; CruiseAssistPlugin.SelectTargetStar = CruiseAssistPlugin.ReticuleTargetStar; CruiseAssistPlugin.TargetPlanet = null; CruiseAssistPlugin.TargetStar = CruiseAssistPlugin.ReticuleTargetStar; } _ = ((PlayerAction)__instance).player; if (CruiseAssistPlugin.TargetPlanet != null) { CruiseAssistPlugin.State = CruiseAssistState.TO_PLANET; CruiseAssistPlugin.TargetStar = CruiseAssistPlugin.TargetPlanet.star; val = CruiseAssistPlugin.TargetUPos - GameMain.mainPlayer.uPosition; CruiseAssistPlugin.TargetRange = ((VectorLF3)(ref val)).magnitude - (double)CruiseAssistPlugin.TargetPlanet.realRadius; CruiseAssistPlugin.TargetSelected = true; } else if (CruiseAssistPlugin.TargetHive != null) { CruiseAssistPlugin.State = CruiseAssistState.TO_HIVE; CruiseAssistPlugin.TargetStar = CruiseAssistPlugin.TargetHive.starData; val = CruiseAssistPlugin.TargetUPos - GameMain.mainPlayer.uPosition; CruiseAssistPlugin.TargetRange = ((VectorLF3)(ref val)).magnitude - 30000.0; CruiseAssistPlugin.TargetSelected = true; } else if (CruiseAssistPlugin.TargetMsg != null) { CruiseAssistPlugin.State = CruiseAssistState.TO_MSG; CruiseAssistPlugin.TargetStar = CruiseAssistPlugin.TargetMsg.nearStar; val = CruiseAssistPlugin.TargetUPos - GameMain.mainPlayer.uPosition; CruiseAssistPlugin.TargetRange = ((VectorLF3)(ref val)).magnitude - 2000.0; CruiseAssistPlugin.TargetSelected = true; } else if (CruiseAssistPlugin.TargetEnemyId != 0) { CruiseAssistPlugin.State = CruiseAssistState.TO_ENEMY; val = CruiseAssistPlugin.TargetUPos - GameMain.mainPlayer.uPosition; CruiseAssistPlugin.TargetRange = ((VectorLF3)(ref val)).magnitude; CruiseAssistPlugin.TargetSelected = true; } else { if (CruiseAssistPlugin.TargetStar == null) { CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetInactive(); }); return; } CruiseAssistPlugin.State = CruiseAssistState.TO_STAR; val = CruiseAssistPlugin.TargetStar.uPosition - GameMain.mainPlayer.uPosition; CruiseAssistPlugin.TargetRange = ((VectorLF3)(ref val)).magnitude - (double)(CruiseAssistPlugin.TargetStar.viewRadius - 120f); CruiseAssistPlugin.TargetSelected = true; } if ((int)((PlayerAction)__instance).controller.movementStateInFrame > 0) { return; } if (VFInput._jump.pressing) { CruiseAssistPlugin.Interrupt = true; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.CancelOperate(); }); } else { CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.OperateWalk(__instance); }); } } } [HarmonyPatch(typeof(PlayerMove_Sail))] internal class Patch_PlayerMoveSail { [HarmonyPatch("GameTick")] [HarmonyPrefix] public static void GameTick_Prefix(PlayerMove_Sail __instance) { //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_00be: 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_0142: 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_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: 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_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020f: 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_0224: Unknown result type (might be due to invalid IL or missing references) //IL_022b: 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_0235: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: 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_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) if (CruiseAssistPlugin.TargetStar?.id == GameMain.localStar?.id) { CruiseAssistPlugin.AbortPreloadStar(); } if (!CruiseAssistPlugin.Enable || !CruiseAssistPlugin.TargetSelected) { return; } Player player = ((PlayerAction)__instance).player; if (!player.sailing) { return; } if (GameMain.mainPlayer.controller.input0 != Vector4.zero || (GameMain.mainPlayer.controller.input1 != Vector4.zero && GameMain.mainPlayer.controller.input1.y >= 0f)) { CruiseAssistPlugin.Interrupt = true; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.CancelOperate(); }); return; } bool operate = false; CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { operate |= extension.OperateSail(__instance); }); if (operate) { return; } VectorLF3 val = CruiseAssistPlugin.TargetUPos - player.uPosition; float num = Vector3.Angle(VectorLF3.op_Implicit(val), VectorLF3.op_Implicit(player.uVelocity)); float num2 = 1.6f / Mathf.Max(10f, num); _ = ((VectorLF3)(ref player.controller.actionSail.visual_uvel)).magnitude; if ((double)num < 0.5) { CruiseAssistPlugin.lockOn = true; } if (CruiseAssistPlugin.lockOn) { if (CruiseAssistPlugin.TargetStar != null) { CruiseAssistPlugin.TryPreloadStar(CruiseAssistPlugin.TargetStar); } player.uVelocity = VectorLF3.op_Implicit(Vector3.Slerp(VectorLF3.op_Implicit(player.uVelocity), VectorLF3.op_Implicit(((VectorLF3)(ref val)).normalized * ((VectorLF3)(ref player.uVelocity)).magnitude), 0.75f)); } else { player.uVelocity = VectorLF3.op_Implicit(Vector3.Slerp(VectorLF3.op_Implicit(player.uVelocity), VectorLF3.op_Implicit(((VectorLF3)(ref val)).normalized * ((VectorLF3)(ref player.uVelocity)).magnitude), num2)); } if (CruiseAssistPlugin.State == CruiseAssistState.TO_ENEMY) { player.controller.actionSail.warpSpeedControl = 1.0 - Math.Pow(Maths.Clamp01(1.0 - (((VectorLF3)(ref val)).magnitude - 3000.0) / 400000.0), 2.0) * 0.65; } } } namespace tanu.CruiseAssist; public class ListUtils { public static string ToString(List<int> list) { if (list == null || list.Count == 0) { return ""; } return list.Select((int id) => id.ToString()).Aggregate((string a, string b) => a + "," + b); } public static string ToString(List<string> list) { if (list == null || list.Count == 0) { return ""; } return list.Aggregate((string a, string b) => a + "," + b); } public static List<int> ParseToIntList(string str) { if (str == null || str.Length == 0) { return new List<int>(); } int result; return (from s in str.Split(new char[1] { ',' }) where int.TryParse(s, out result) select s).Select(int.Parse).ToList(); } public static List<string> ParseToStringList(string str) { if (str == null || str.Length == 0) { return new List<string>(); } return str.Split(new char[1] { ',' }).ToList(); } } public class CruiseAssistConfigManager : ConfigManager { public CruiseAssistConfigManager(ConfigFile Config) : base(Config) { } protected override void CheckConfigImplements(Step step) { bool flag = false; if (step == Step.AWAKE) { ConfigManager.Bind("Base", "ModVersion", "1.3.1", "Don't change.").Value = "1.3.1"; ConfigManager.Migration("State", "MainWindow0Left", 100, "State", "InfoWindowLeft"); ConfigManager.Migration("State", "MainWindow0Top", 100, "State", "InfoWindowTop"); ConfigManager.Migration("State", "MainWindow0Left", 100, "State", "MainWindowLeft"); ConfigManager.Migration("State", "MainWindow0Top", 100, "State", "MainWindowTop"); ConfigManager.Migration("State", "StarListWindow0Left", 100, "State", "StarListWindowLeft"); ConfigManager.Migration("State", "StarListWindow0Top", 100, "State", "StarListWindowTop"); flag = true; } switch (step) { case Step.AWAKE: case Step.GAME_MAIN_BEGIN: { CruiseAssistDebugUI.Show = ConfigManager.Bind("Debug", "DebugWindowShow", defaultValue: false).Value; CruiseAssistPlugin.Enable = ConfigManager.Bind("Setting", "Enable", defaultValue: true).Value; CruiseAssistPlugin.MarkVisitedFlag = ConfigManager.Bind("Setting", "MarkVisited", defaultValue: true).Value; CruiseAssistPlugin.SelectFocusFlag = ConfigManager.Bind("Setting", "SelectFocus", defaultValue: true).Value; CruiseAssistPlugin.HideDuplicateHistoryFlag = ConfigManager.Bind("Setting", "HideDuplicateHistory", defaultValue: true).Value; CruiseAssistPlugin.AutoDisableLockCursorFlag = ConfigManager.Bind("Setting", "AutoDisableLockCursor", defaultValue: false).Value; CruiseAssistPlugin.TrackDarkFogSeedsFlag = ConfigManager.Bind("Setting", "TrackDarkFogSeeds", defaultValue: true).Value; CruiseAssistPlugin.PreventNonTargetLoadingFlag = ConfigManager.Bind("Setting", "PreventNonTargetLoading", defaultValue: true).Value; CruiseAssistPlugin.DisplaySeedETAFlag = ConfigManager.Bind("Setting", "DisplaySeedETA", defaultValue: true).Value; CruiseAssistMainUI.Scale = ConfigManager.Bind("Setting", "UIScale", 150).Value; EnumUtils.TryParse<CruiseAssistMainUIViewMode>(ConfigManager.Bind("Setting", "MainWindowViewMode", CruiseAssistMainUIViewMode.FULL.ToString()).Value, out CruiseAssistMainUI.ViewMode); for (int j = 0; j < 2; j++) { ((Rect)(ref CruiseAssistMainUI.Rect[j])).x = ConfigManager.Bind("State", $"MainWindow{j}Left", 100).Value; ((Rect)(ref CruiseAssistMainUI.Rect[j])).y = ConfigManager.Bind("State", $"MainWindow{j}Top", 100).Value; ((Rect)(ref CruiseAssistStarListUI.Rect[j])).x = ConfigManager.Bind("State", $"StarListWindow{j}Left", 100).Value; ((Rect)(ref CruiseAssistStarListUI.Rect[j])).y = ConfigManager.Bind("State", $"StarListWindow{j}Top", 100).Value; ((Rect)(ref CruiseAssistConfigUI.Rect[j])).x = ConfigManager.Bind("State", $"ConfigWindow{j}Left", 100).Value; ((Rect)(ref CruiseAssistConfigUI.Rect[j])).y = ConfigManager.Bind("State", $"ConfigWindow{j}Top", 100).Value; } CruiseAssistStarListUI.ListSelected = ConfigManager.Bind("State", "StarListWindowListSelected", 0).Value; ((Rect)(ref CruiseAssistDebugUI.Rect)).x = ConfigManager.Bind("State", "DebugWindowLeft", 100).Value; ((Rect)(ref CruiseAssistDebugUI.Rect)).y = ConfigManager.Bind("State", "DebugWindowTop", 100).Value; if (!DSPGame.IsMenuDemo && GameMain.galaxy != null) { CruiseAssistPlugin.History = ListUtils.ParseToIntList(ConfigManager.Bind("Save", $"History_{GameMain.galaxy.seed}", "").Value); CruiseAssistPlugin.Bookmark = ListUtils.ParseToIntList(ConfigManager.Bind("Save", $"Bookmark_{GameMain.galaxy.seed}", "").Value); } else { CruiseAssistPlugin.History = new List<int>(); CruiseAssistPlugin.Bookmark = new List<int>(); } break; } case Step.STATE: { LogManager.LogInfo("check state."); flag |= ConfigManager.UpdateEntry("Setting", "Enable", CruiseAssistPlugin.Enable); flag |= ConfigManager.UpdateEntry("Setting", "MarkVisited", CruiseAssistPlugin.MarkVisitedFlag); flag |= ConfigManager.UpdateEntry("Setting", "SelectFocus", CruiseAssistPlugin.SelectFocusFlag); flag |= ConfigManager.UpdateEntry("Setting", "HideDuplicateHistory", CruiseAssistPlugin.HideDuplicateHistoryFlag); flag |= ConfigManager.UpdateEntry("Setting", "AutoDisableLockCursor", CruiseAssistPlugin.AutoDisableLockCursorFlag); flag |= ConfigManager.UpdateEntry("Setting", "TrackDarkFogSeeds", CruiseAssistPlugin.TrackDarkFogSeedsFlag); flag |= ConfigManager.UpdateEntry("Setting", "PreventNonTargetLoading", CruiseAssistPlugin.PreventNonTargetLoadingFlag); flag |= ConfigManager.UpdateEntry("Setting", "DisplaySeedETA", CruiseAssistPlugin.DisplaySeedETAFlag); flag |= ConfigManager.UpdateEntry("Setting", "UIScale", (int)CruiseAssistMainUI.Scale); flag |= ConfigManager.UpdateEntry("Setting", "MainWindowViewMode", CruiseAssistMainUI.ViewMode.ToString()); for (int i = 0; i < 2; i++) { flag |= ConfigManager.UpdateEntry("State", $"MainWindow{i}Left", (int)((Rect)(ref CruiseAssistMainUI.Rect[i])).x); flag |= ConfigManager.UpdateEntry("State", $"MainWindow{i}Top", (int)((Rect)(ref CruiseAssistMainUI.Rect[i])).y); flag |= ConfigManager.UpdateEntry("State", $"StarListWindow{i}Left", (int)((Rect)(ref CruiseAssistStarListUI.Rect[i])).x); flag |= ConfigManager.UpdateEntry("State", $"StarListWindow{i}Top", (int)((Rect)(ref CruiseAssistStarListUI.Rect[i])).y); flag |= ConfigManager.UpdateEntry("State", $"ConfigWindow{i}Left", (int)((Rect)(ref CruiseAssistConfigUI.Rect[i])).x); flag |= ConfigManager.UpdateEntry("State", $"ConfigWindow{i}Top", (int)((Rect)(ref CruiseAssistConfigUI.Rect[i])).y); } flag |= ConfigManager.UpdateEntry("State", "StarListWindowListSelected", CruiseAssistStarListUI.ListSelected); flag |= ConfigManager.UpdateEntry("State", "DebugWindowLeft", (int)((Rect)(ref CruiseAssistDebugUI.Rect)).x); flag |= ConfigManager.UpdateEntry("State", "DebugWindowTop", (int)((Rect)(ref CruiseAssistDebugUI.Rect)).y); if (!DSPGame.IsMenuDemo && GameMain.galaxy != null) { if (!ConfigManager.ContainsKey("Save", $"History_{GameMain.galaxy.seed}") || !ConfigManager.ContainsKey("Save", $"Bookmark_{GameMain.galaxy.seed}")) { ConfigManager.Bind("Save", $"History_{GameMain.galaxy.seed}", ""); ConfigManager.Bind("Save", $"Bookmark_{GameMain.galaxy.seed}", ""); flag = true; } flag |= ConfigManager.UpdateEntry("Save", $"History_{GameMain.galaxy.seed}", ListUtils.ToString(CruiseAssistPlugin.History)); flag |= ConfigManager.UpdateEntry("Save", $"Bookmark_{GameMain.galaxy.seed}", ListUtils.ToString(CruiseAssistPlugin.Bookmark)); } CruiseAssistMainUI.NextCheckGameTick = long.MaxValue; break; } } if (flag) { ConfigManager.Save(); } } } public interface CruiseAssistExtensionAPI { void CheckConfig(string step); void SetTargetAstroId(int astroId); bool OperateWalk(PlayerMove_Walk __instance); bool OperateDrift(PlayerMove_Drift __instance); bool OperateFly(PlayerMove_Fly __instance); bool OperateSail(PlayerMove_Sail __instance); void SetInactive(); void CancelOperate(); void OnGUI(); bool CheckActive(); } [BepInPlugin("nord.CruiseAssist", "CruiseAssist-N", "1.3.1")] public class CruiseAssistPlugin : BaseUnityPlugin { public const string ModGuid = "nord.CruiseAssist"; public const string ModName = "CruiseAssist-N"; public const string ModVersion = "1.3.1"; public const double HIVE_IN_RANGE = 30000.0; public const double ENEMY_IN_RANGE = 3000.0; public const double MSG_IN_RANGE = 2000.0; public static bool Enable = true; public static bool Interrupt = false; public static bool TargetSelected = false; public static bool MarkVisitedFlag = true; public static bool SelectFocusFlag = false; public static bool HideDuplicateHistoryFlag = true; public static bool AutoDisableLockCursorFlag = false; public static bool TrackDarkFogSeedsFlag = true; public static bool PreventNonTargetLoadingFlag = true; public static bool DisplaySeedETAFlag = true; public static StarData ReticuleTargetStar = null; public static PlanetData ReticuleTargetPlanet = null; public static StarData SelectTargetStar = null; public static PlanetData SelectTargetPlanet = null; public static EnemyDFHiveSystem SelectTargetHive = null; public static CosmicMessageData SelectTargetMsg = null; public static int SelectTargetAstroId = 0; public static int SelectTargetEnemyId = 0; public static int SelectTargetEnemyIdF = 0; public static int SelectTargetMsgId = 0; public static StarData TargetStar = null; public static PlanetData TargetPlanet = null; public static EnemyDFHiveSystem TargetHive = null; public static CosmicMessageData TargetMsg = null; public static int TargetEnemyId = 0; public static bool lockOn = false; public static StarData preloadStar = null; public static CruiseAssistState State = CruiseAssistState.INACTIVE; public static CruiseAssistState lastState = CruiseAssistState.INACTIVE; public static List<int> History = new List<int>(); public static List<int> Bookmark = new List<int>(); public static Func<StarData, string> GetStarName = (StarData star) => star.displayName; public static Func<PlanetData, string> GetPlanetName = (PlanetData planet) => planet.displayName; public static Func<EnemyDFHiveSystem, string> GetHiveName = (EnemyDFHiveSystem hive) => hive.displayName; public static Func<EnemyData, string> GetEnemyName = (EnemyData enemy) => ((Proto)((ProtoSet<EnemyProto>)(object)LDB.enemies).Select((int)enemy.protoId)).name; public static Func<CosmicMessageData, string> GetMsgName = delegate(CosmicMessageData msg) { int protoId = msg.protoId; string text = ""; text = Localization.Translate("宇宙讯息"); if (protoId > CosmicMessageProto.maxProtoId) { text = Localization.Translate("黑雾通讯器"); } return text; }; private Harmony harmony; internal static List<CruiseAssistExtensionAPI> extensions = new List<CruiseAssistExtensionAPI>(); public static double TargetRange = 0.0; public static EnemyData SelectTargetEnemy => GameMain.spaceSector.enemyPool[SelectTargetEnemyId]; public static EnemyData TargetEnemy => GameMain.spaceSector.enemyPool[TargetEnemyId]; public static VectorLF3 TargetUPos { get { //IL_000c: 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_0045: 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_0078: 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_00a3: 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) if (TargetPlanet != null) { return TargetPlanet.uPosition; } if (TargetHive != null) { return GameMain.spaceSector.astros[TargetHive.hiveAstroId - 1000000].uPos; } if (TargetEnemyId != 0) { VectorLF3 zero = VectorLF3.zero; ref EnemyData reference = ref GameMain.spaceSector.enemyPool[TargetEnemyId]; GameMain.spaceSector.TransformFromAstro_ref(reference.astroId, ref zero, ref reference.pos); return zero; } if (TargetMsg != null) { return TargetMsg.uPosition; } if (TargetStar == null) { return GameMain.mainPlayer.uPosition; } return TargetStar.uPosition; } } public static bool CheckActive() { return State != CruiseAssistState.INACTIVE; } public void Awake() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown LogManager.Logger = ((BaseUnityPlugin)this).Logger; new CruiseAssistConfigManager(((BaseUnityPlugin)this).Config); ConfigManager.CheckConfig(ConfigManager.Step.AWAKE); harmony = new Harmony("nord.CruiseAssist.Patch"); harmony.PatchAll(typeof(Patch_GameMain)); harmony.PatchAll(typeof(Patch_UISailPanel)); harmony.PatchAll(typeof(Patch_UIStarmap)); harmony.PatchAll(typeof(Patch_UITechTree)); harmony.PatchAll(typeof(Patch_PlayerMoveWalk)); harmony.PatchAll(typeof(Patch_PlayerMoveDrift)); harmony.PatchAll(typeof(Patch_PlayerMoveFly)); harmony.PatchAll(typeof(Patch_PlayerMoveSail)); harmony.PatchAll(typeof(Patch_DeterminLocalPlanet)); } public void OnDestroy() { harmony.UnpatchSelf(); } public void OnGUI() { //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: 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) if (DSPGame.IsMenuDemo || GameMain.mainPlayer == null) { return; } UIGame uiGame = UIRoot.instance.uiGame; if (!uiGame.guideComplete || ((ManualBehaviour)uiGame.techTree).active || ((ManualBehaviour)uiGame.escMenu).active || ((ManualBehaviour)uiGame.dysonEditor).active || uiGame.hideAllUI0 || uiGame.hideAllUI1 || ((Object)(object)UIMilkyWayLoadingSplash.instance != (Object)null && ((ManualBehaviour)UIMilkyWayLoadingSplash.instance).active) || ((Object)(object)UIRoot.instance.uiMilkyWay != (Object)null && ((ManualBehaviour)UIRoot.instance.uiMilkyWay).active) || VFInput.inCombatScreenGUI || ((ManualBehaviour)uiGame.controlPanelWindow).active || ((ManualBehaviour)uiGame.dashboard).active || ((ManualBehaviour)uiGame.statWindow).active || ((ManualBehaviour)uiGame.blueprintBrowser).active) { return; } bool extensionActive = false; extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extensionActive |= extension.CheckActive(); }); if (GameMain.mainPlayer.sailing || ((ManualBehaviour)uiGame.starmap).active || extensionActive) { CruiseAssistMainUI.wIdx = (((ManualBehaviour)uiGame.starmap).active ? 1 : 0); float num = CruiseAssistMainUI.Scale / 100f; GUIUtility.ScaleAroundPivot(new Vector2(num, num), Vector2.zero); CruiseAssistMainUI.OnGUI(); if (CruiseAssistStarListUI.Show[CruiseAssistMainUI.wIdx]) { CruiseAssistStarListUI.OnGUI(); } if (CruiseAssistConfigUI.Show[CruiseAssistMainUI.wIdx]) { CruiseAssistConfigUI.OnGUI(); } if (CruiseAssistDebugUI.Show) { CruiseAssistDebugUI.OnGUI(); } bool flag = false; flag = ResetInput(CruiseAssistMainUI.Rect[CruiseAssistMainUI.wIdx], num); if (!flag && CruiseAssistStarListUI.Show[CruiseAssistMainUI.wIdx]) { flag = ResetInput(CruiseAssistStarListUI.Rect[CruiseAssistMainUI.wIdx], num); } if (!flag && CruiseAssistConfigUI.Show[CruiseAssistMainUI.wIdx]) { flag = ResetInput(CruiseAssistConfigUI.Rect[CruiseAssistMainUI.wIdx], num); } if (!flag && CruiseAssistDebugUI.Show) { flag = ResetInput(CruiseAssistDebugUI.Rect, num); } extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.OnGUI(); }); } } private bool ResetInput(Rect rect, float scale) { //IL_0027: 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_0077: Unknown result type (might be due to invalid IL or missing references) float num = ((Rect)(ref rect)).xMin * scale; float num2 = ((Rect)(ref rect)).xMax * scale; float num3 = ((Rect)(ref rect)).yMin * scale; float num4 = ((Rect)(ref rect)).yMax * scale; float x = Input.mousePosition.x; float num5 = (float)Screen.height - Input.mousePosition.y; if (num <= x && x <= num2 && num3 <= num5 && num5 <= num4 && (((IEnumerable<int>)new int[3] { 0, 1, 2 }).Any((Func<int, bool>)Input.GetMouseButton) || Input.mouseScrollDelta.y != 0f)) { Input.ResetInputAxes(); return true; } return false; } public static void RegistExtension(CruiseAssistExtensionAPI extension) { extensions.Add(extension); } public static void UnregistExtension(Type type) { extensions.RemoveAll((CruiseAssistExtensionAPI extension) => extension.GetType().FullName == type.FullName); } public static void Deactivate() { //IL_00c6: Unknown result type (might be due to invalid IL or missing references) SelectTargetStar = null; SelectTargetHive = null; SelectTargetPlanet = null; SelectTargetMsg = null; SelectTargetAstroId = 0; SelectTargetEnemyId = 0; SelectTargetMsgId = 0; GameMain.mainPlayer.navigation.indicatorAstroId = 0; GameMain.mainPlayer.navigation.indicatorEnemyId = 0; GameMain.mainPlayer.navigation.indicatorMsgId = 0; lockOn = false; AbortPreloadStar(); extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.SetInactive(); }); Player mainPlayer = GameMain.mainPlayer; if (lastState != CruiseAssistState.INACTIVE && State == CruiseAssistState.INACTIVE && mainPlayer.warping && mainPlayer.warpCommand) { mainPlayer.warpCommand = false; VFAudio.Create("warp-end", mainPlayer.transform, Vector3.zero, true, 0, -1, -1L); } } public static EnemyDFHiveSystem GetSeedsTargetHive(EnemyData seed) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0010: 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_003e: Unknown result type (might be due to invalid IL or missing references) if (seed.dfTinderId <= 0) { return null; } EnemyDFHiveSystem hiveByAstroId = GameMain.spaceSector.GetHiveByAstroId(seed.astroId); if (hiveByAstroId == null) { return null; } ref DFTinderComponent reference = ref hiveByAstroId.tinders.buffer[seed.dfTinderId]; if (reference.id == seed.dfTinderId && reference.direction > 0 && reference.stage >= -1) { return GameMain.spaceSector.GetHiveByAstroId(reference.targetHiveAstroId); } return null; } public static void TryPreloadStar(StarData star) { if (GameMain.localStar == null && star?.id != preloadStar?.id && !star.loaded && GameMain.isRunning) { if (preloadStar != null) { AbortPreloadStar(); } preloadStar = star; LogManager.LogInfo("Try to preload the star."); } } public static void AbortPreloadStar() { if (preloadStar != null) { if (GameMain.localStar?.id != preloadStar.id && preloadStar.loaded) { LogManager.LogInfo("Abort star's preloading."); } preloadStar = null; } } } public abstract class ConfigManager { public enum Step { AWAKE, GAME_MAIN_BEGIN, UNIVERSE_GEN_CREATE_GALAXY, STATE } private static ConfigManager instance; private static Dictionary<ConfigDefinition, string> orphanedEntries; public static ConfigFile Config { get; private set; } protected ConfigManager(ConfigFile config) { instance = this; Config = config; Config.SaveOnConfigSet = false; } public static void CheckConfig(Step step) { instance.CheckConfigImplements(step); } protected abstract void CheckConfigImplements(Step step); public static ConfigEntry<T> Bind<T>(ConfigDefinition configDefinition, T defaultValue, ConfigDescription configDescription = null) { return Config.Bind<T>(configDefinition, defaultValue, configDescription); } public static ConfigEntry<T> Bind<T>(string section, string key, T defaultValue, ConfigDescription configDescription = null) { return Config.Bind<T>(section, key, defaultValue, configDescription); } public static ConfigEntry<T> Bind<T>(string section, string key, T defaultValue, string description) { return Config.Bind<T>(section, key, defaultValue, description); } public static ConfigEntry<T> GetEntry<T>(ConfigDefinition configDefinition) { try { return (ConfigEntry<T>)(object)Config[configDefinition]; } catch (KeyNotFoundException ex) { LogManager.LogError($"{ex.GetType()}: configDefinition={configDefinition}"); throw; } } public static ConfigEntry<T> GetEntry<T>(string section, string key) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return GetEntry<T>(new ConfigDefinition(section, key)); } public static T GetValue<T>(ConfigDefinition configDefinition) { return GetEntry<T>(configDefinition).Value; } public static T GetValue<T>(string section, string key) { return GetEntry<T>(section, key).Value; } public static bool ContainsKey(ConfigDefinition configDefinition) { return Config.ContainsKey(configDefinition); } public static bool ContainsKey(string section, string key) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown return Config.ContainsKey(new ConfigDefinition(section, key)); } public static bool UpdateEntry<T>(string section, string key, T value) where T : IComparable { ConfigEntry<T> entry = GetEntry<T>(section, key); if (entry.Value.CompareTo(value) == 0) { return false; } entry.Value = value; return true; } public static bool RemoveEntry(ConfigDefinition key) { return Config.Remove(key); } public static Dictionary<ConfigDefinition, string> GetOrphanedEntries() { if (orphanedEntries == null) { orphanedEntries = Traverse.Create((object)Config).Property<Dictionary<ConfigDefinition, string>>("OrphanedEntries", (object[])null).Value; } return orphanedEntries; } public static void Migration<T>(string newSection, string newKey, T defaultValue, string oldSection, string oldKey) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown GetOrphanedEntries(); ConfigDefinition key = new ConfigDefinition(oldSection, oldKey); if (orphanedEntries.TryGetValue(key, out var value)) { ((ConfigEntryBase)Bind(newSection, newKey, defaultValue)).SetSerializedValue(value); orphanedEntries.Remove(key); LogManager.LogInfo("migration " + oldSection + "." + oldKey + "(" + value + ") => " + newSection + "." + newKey); } } public static void Save(bool clearOrphanedEntries = false) { if (clearOrphanedEntries) { GetOrphanedEntries().Clear(); } Config.Save(); LogManager.LogInfo("save config."); } } [HarmonyPatch(typeof(GameData), "ArriveStar")] public class Patch_ArriveStar { [HarmonyPrefix] public static bool ArriveStar_Prefix(StarData star) { if (CruiseAssistPlugin.preloadStar != null && CruiseAssistPlugin.preloadStar.id != star?.id) { return false; } return true; } } [HarmonyPatch(typeof(GameData), "DetermineLocalPlanet")] public class Patch_DeterminLocalPlanet { [HarmonyPrefix] public static bool DetermineLocalPlanet_Prefix(ref bool __result) { if (!CruiseAssistPlugin.PreventNonTargetLoadingFlag) { return true; } StarData val = null; PlanetData val2 = null; GameMain.data.GetNearestStarPlanet(ref val, ref val2); if (CruiseAssistPlugin.preloadStar != null && val?.id != CruiseAssistPlugin.preloadStar.id) { __result = false; return false; } return true; } } [HarmonyPatch(typeof(UIStarmap))] public class Patch_UIStarmap { [HarmonyPatch("_OnClose")] [HarmonyPrefix] public static void OnClose_Prefix() { ConfigManager.CheckConfig(ConfigManager.Step.STATE); CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.CheckConfig(ConfigManager.Step.STATE.ToString()); }); } } [HarmonyPatch(typeof(UITechTree))] public class Patch_UITechTree { [HarmonyPatch("_OnOpen")] [HarmonyPrefix] public static void OnOpen_Prefix() { ConfigManager.CheckConfig(ConfigManager.Step.STATE); CruiseAssistPlugin.extensions.ForEach(delegate(CruiseAssistExtensionAPI extension) { extension.CheckConfig(ConfigManager.Step.STATE.ToString()); }); } } public class CruiseAssistConfigUI { private static int wIdx = 0; public const float WindowWidth = 400f; public const float WindowHeight = 400f; public static bool[] Show = new bool[2]; public static Rect[] Rect = (Rect[])(object)new Rect[2] { new Rect(0f, 0f, 400f, 400f), new Rect(0f, 0f, 400f, 400f) }; private static float lastCheckWindowLeft = float.MinValue; private static float lastCheckWindowTop = float.MinValue; public static float TempScale = 150f; private static GUIStyle windowStyle; private static GUIStyle mainWindowStyleLabelStyle; private static GUIStyle mainWindowStyleButtonStyle; private static GUIStyle uiScaleTitleLabelStyle; private static GUIStyle scaleSliderStyle; private static GUIStyle scaleSliderThumbStyle; private static GUIStyle uiScaleValueLabelStyle; private static GUIStyle scaleSetButtonStyle; private static GUIStyle toggleStyle; private static GUIStyle closeButtonStyle; public static void OnGUI() { //IL_0048: 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: Expected O, but got Unknown //IL_0068: 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_001d: 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) CruiseAssistMainUI.StyleStuff(); wIdx = CruiseAssistMainUI.wIdx; windowStyle = (GUIStyle)(((object)windowStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.WindowStyle) { fontSize = 11 })); Rect[wIdx] = GUILayout.Window(99030293, Rect[wIdx], new WindowFunction(WindowFunction), "CruiseAssist - Config", windowStyle, Array.Empty<GUILayoutOption>()); float num = CruiseAssistMainUI.Scale / 100f; if ((float)Screen.width / num < ((Rect)(ref Rect[wIdx])).xMax) { ((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num - ((Rect)(ref Rect[wIdx])).width; } if (((Rect)(ref Rect[wIdx])).x < 0f) { ((Rect)(ref Rect[wIdx])).x = 0f; } if ((float)Screen.height / num < ((Rect)(ref Rect[wIdx])).yMax) { ((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num - ((Rect)(ref Rect[wIdx])).height; } if (((Rect)(ref Rect[wIdx])).y < 0f) { ((Rect)(ref Rect[wIdx])).y = 0f; } if (lastCheckWindowLeft != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop)) { CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } lastCheckWindowLeft = ((Rect)(ref Rect[wIdx])).x; lastCheckWindowTop = ((Rect)(ref Rect[wIdx])).y; } public static void WindowFunction(int windowId) { //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_0037: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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_0088: 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_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_0143: 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_0153: 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_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_0220: 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_0230: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0295: 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_02ac: 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_0313: 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_0323: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_040c: Unknown result type (might be due to invalid IL or missing references) //IL_045e: Unknown result type (might be due to invalid IL or missing references) //IL_04b0: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Unknown result type (might be due to invalid IL or missing references) //IL_0554: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_059c: Unknown result type (might be due to invalid IL or missing references) //IL_05a7: Unknown result type (might be due to invalid IL or missing references) //IL_05b2: Unknown result type (might be due to invalid IL or missing references) //IL_05db: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); mainWindowStyleLabelStyle = (GUIStyle)(((object)mainWindowStyleLabelStyle) ?? ((object)new GUIStyle(GUI.skin.label) { fixedWidth = 120f, fixedHeight = 20f, fontSize = 12, alignment = (TextAnchor)3 })); GUILayout.Label("Main Window Style :", mainWindowStyleLabelStyle, Array.Empty<GUILayoutOption>()); mainWindowStyleButtonStyle = (GUIStyle)(((object)mainWindowStyleButtonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseToolbarButtonStyle) { fixedWidth = 80f, fixedHeight = 20f, fontSize = 12 })); string[] array = new string[2] { "FULL", "MINI" }; int num = ((CruiseAssistMainUI.ViewMode != CruiseAssistMainUIViewMode.FULL) ? 1 : 0); GUI.changed = false; int num2 = GUILayout.Toolbar(num, array, mainWindowStyleButtonStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); } if (num2 != num) { switch (num2) { case 0: CruiseAssistMainUI.ViewMode = CruiseAssistMainUIViewMode.FULL; break; case 1: CruiseAssistMainUI.ViewMode = CruiseAssistMainUIViewMode.MINI; break; } CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); uiScaleTitleLabelStyle = (GUIStyle)(((object)uiScaleTitleLabelStyle) ?? ((object)new GUIStyle(GUI.skin.label) { fixedWidth = 60f, fixedHeight = 20f, fontSize = 12, alignment = (TextAnchor)3 })); GUILayout.Label("UI Scale :", uiScaleTitleLabelStyle, Array.Empty<GUILayoutOption>()); object obj = scaleSliderStyle; if (obj == null) { GUIStyle val = new GUIStyle(CruiseAssistMainUI.BaseHorizontalSliderStyle) { fixedWidth = 180f }; val.margin.top = 10; val.alignment = (TextAnchor)3; obj = (object)val; } scaleSliderStyle = (GUIStyle)obj; scaleSliderThumbStyle = (GUIStyle)(((object)scaleSliderThumbStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseHorizontalSliderThumbStyle))); TempScale = GUILayout.HorizontalSlider(TempScale, 80f, 240f, scaleSliderStyle, scaleSliderThumbStyle, Array.Empty<GUILayoutOption>()); TempScale = (int)TempScale / 5 * 5; uiScaleValueLabelStyle = (GUIStyle)(((object)uiScaleValueLabelStyle) ?? ((object)new GUIStyle(GUI.skin.label) { fixedWidth = 40f, fixedHeight = 20f, fontSize = 12, alignment = (TextAnchor)3 })); GUILayout.Label(TempScale.ToString("0") + "%", uiScaleValueLabelStyle, Array.Empty<GUILayoutOption>()); object obj2 = scaleSetButtonStyle; if (obj2 == null) { GUIStyle val2 = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle) { fixedWidth = 60f, fixedHeight = 18f }; val2.margin.top = 6; val2.fontSize = 12; obj2 = (object)val2; } scaleSetButtonStyle = (GUIStyle)obj2; if (GUILayout.Button("SET", scaleSetButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.Scale = TempScale; CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUILayout.EndHorizontal(); toggleStyle = (GUIStyle)(((object)toggleStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseToggleStyle) { fixedHeight = 20f, fontSize = 12, alignment = (TextAnchor)3 })); GUI.changed = false; CruiseAssistPlugin.MarkVisitedFlag = GUILayout.Toggle(CruiseAssistPlugin.MarkVisitedFlag, "Mark the visited system and planet.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; CruiseAssistPlugin.SelectFocusFlag = GUILayout.Toggle(CruiseAssistPlugin.SelectFocusFlag, "Focus when target selected.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; CruiseAssistPlugin.HideDuplicateHistoryFlag = GUILayout.Toggle(CruiseAssistPlugin.HideDuplicateHistoryFlag, "Hide duplicate history.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; CruiseAssistPlugin.AutoDisableLockCursorFlag = GUILayout.Toggle(CruiseAssistPlugin.AutoDisableLockCursorFlag, "Disable lock cursor when starting sail mode.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; CruiseAssistPlugin.TrackDarkFogSeedsFlag = GUILayout.Toggle(CruiseAssistPlugin.TrackDarkFogSeedsFlag, "Display all active Dark Fog seeds in starlist.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; CruiseAssistPlugin.PreventNonTargetLoadingFlag = GUILayout.Toggle(CruiseAssistPlugin.PreventNonTargetLoadingFlag, "Prevent loading of non-target stars when CruiseAssist is active.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; CruiseAssistPlugin.DisplaySeedETAFlag = GUILayout.Toggle(CruiseAssistPlugin.DisplaySeedETAFlag, "Display ETA for Dark Fog seeds.", toggleStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); closeButtonStyle = (GUIStyle)(((object)closeButtonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseButtonStyle) { fixedWidth = 80f, fixedHeight = 20f, fontSize = 12 })); if (GUILayout.Button("Close", closeButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); Show[wIdx] = false; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUI.DragWindow(); } } public class CruiseAssistDebugUI { public static bool Show = false; public static Rect Rect = new Rect(0f, 0f, 400f, 400f); private static float lastCheckWindowLeft = float.MinValue; private static float lastCheckWindowTop = float.MinValue; private static long nextCheckGameTick = long.MaxValue; private static Vector2 scrollPos = Vector2.zero; public static int trackedTinders = 0; public static void OnGUI() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) GUIStyle val = new GUIStyle(GUI.skin.window); val.fontSize = 11; Rect = GUILayout.Window(99030294, Rect, new WindowFunction(WindowFunction), "CruiseAssist - Debug", val, Array.Empty<GUILayoutOption>()); _ = CruiseAssistMainUI.Scale / 100f; if ((float)Screen.width < ((Rect)(ref Rect)).xMax) { ((Rect)(ref Rect)).x = (float)Screen.width - ((Rect)(ref Rect)).width; } if (((Rect)(ref Rect)).x < 0f) { ((Rect)(ref Rect)).x = 0f; } if ((float)Screen.height < ((Rect)(ref Rect)).yMax) { ((Rect)(ref Rect)).y = (float)Screen.height - ((Rect)(ref Rect)).height; } if (((Rect)(ref Rect)).y < 0f) { ((Rect)(ref Rect)).y = 0f; } if (lastCheckWindowLeft != float.MinValue && (((Rect)(ref Rect)).x != lastCheckWindowLeft || ((Rect)(ref Rect)).y != lastCheckWindowTop)) { nextCheckGameTick = GameMain.gameTick + 300; } lastCheckWindowLeft = ((Rect)(ref Rect)).x; lastCheckWindowTop = ((Rect)(ref Rect)).y; if (nextCheckGameTick <= GameMain.gameTick) { ConfigManager.CheckConfig(ConfigManager.Step.STATE); nextCheckGameTick = long.MaxValue; } } public static void WindowFunction(int windowId) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0022: 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_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUIStyle val = new GUIStyle(GUI.skin.label); val.fontSize = 12; scrollPos = GUILayout.BeginScrollView(scrollPos, Array.Empty<GUILayoutOption>()); GUILayout.Label($"trackedTinders={trackedTinders}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.lockOn={CruiseAssistPlugin.lockOn}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.preloadStar={CruiseAssistPlugin.preloadStar?.id}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.localStar={GameMain.localStar?.id}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.localPlanet={GameMain.localPlanet?.id}", val, Array.Empty<GUILayoutOption>()); StarData preloadStar = CruiseAssistPlugin.preloadStar; GUILayout.Label($"CruiseAssist.preloadStar.loaded={((preloadStar != null) ? new bool?(preloadStar.loaded) : null)}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.ReticuleTargetStar.id={CruiseAssistPlugin.ReticuleTargetStar?.id}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.ReticuleTargetPlanet.id={CruiseAssistPlugin.ReticuleTargetPlanet?.id}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.SelectTargetStar.id={CruiseAssistPlugin.SelectTargetStar?.id}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.SelectTargetPlanet.id={CruiseAssistPlugin.SelectTargetPlanet?.id}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.SelectTargetMsg.protoId={CruiseAssistPlugin.SelectTargetMsg?.protoId}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.TargetUPos={CruiseAssistPlugin.TargetUPos}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.uPosition={GameMain.mainPlayer.uPosition}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.navigation.indicatorAstroId={GameMain.mainPlayer.navigation.indicatorAstroId}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.navigation.indicatorEnemyId={GameMain.mainPlayer.navigation.indicatorEnemyId}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.navigation.indicatorMsgId={GameMain.mainPlayer.navigation.indicatorMsgId}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input0.w={GameMain.mainPlayer.controller.input0.w}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input0.x={GameMain.mainPlayer.controller.input0.x}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input0.y={GameMain.mainPlayer.controller.input0.y}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input0.z={GameMain.mainPlayer.controller.input0.z}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input1.w={GameMain.mainPlayer.controller.input1.w}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input1.x={GameMain.mainPlayer.controller.input1.x}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input1.y={GameMain.mainPlayer.controller.input1.y}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.controller.input1.z={GameMain.mainPlayer.controller.input1.z}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"VFInput._sailSpeedUp={VFInput._sailSpeedUp}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.Enable={CruiseAssistPlugin.Enable}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"CruiseAssist.History={CruiseAssistPlugin.History.Count()}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label("CruiseAssist.History=" + ListUtils.ToString(CruiseAssistPlugin.History), val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GUI.skin.window.margin.top={GUI.skin.window.margin.top}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GUI.skin.window.border.top={GUI.skin.window.border.top}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GUI.skin.window.padding.top={GUI.skin.window.padding.top}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GUI.skin.window.overflow.top={GUI.skin.window.overflow.top}", val, Array.Empty<GUILayoutOption>()); GUILayout.EndScrollView(); GUILayout.EndVertical(); GUI.DragWindow(); } } public enum CruiseAssistMainUIViewMode { FULL, MINI } public class CruiseAssistStarListUI { private static int wIdx = 0; public const float WindowWidth = 440f; public const float WindowHeight = 480f; public static bool[] Show = new bool[2]; public static Rect[] Rect = (Rect[])(object)new Rect[2] { new Rect(0f, 0f, 440f, 480f), new Rect(0f, 0f, 440f, 480f) }; public static int ListSelected = 0; public static int[] actionSelected = new int[3]; private static float lastCheckWindowLeft = float.MinValue; private static float lastCheckWindowTop = float.MinValue; private static readonly Vector2[] scrollPos = (Vector2[])(object)new Vector2[3] { Vector2.zero, Vector2.zero, Vector2.zero }; private const string VisitedMark = "● "; private const string NonVisitMark = ""; public static GUIStyle windowStyle = null; public static GUIStyle mainWindowStyleButtonStyle = null; public static GUIStyle nameLabelStyle = null; public static GUIStyle nRangeLabelStyle = null; public static GUIStyle hRangeLabelStyle = null; public static GUIStyle nActionButtonStyle = null; public static GUIStyle hActionButtonStyle = null; public static GUIStyle nSortButtonStyle = null; public static GUIStyle hSortButtonStyle = null; public static GUIStyle nViewButtonStyle = null; public static GUIStyle hViewButtonStyle = null; public static GUIStyle buttonStyle = null; public static GUIContent cheapText = null; public static string[][] listButtonModeName = new string[3][] { new string[2] { "Target", "Bookmark" }, new string[3] { "Target", "Bookmark", "Delete" }, new string[3] { "Target", "Sort", "Delete" } }; private static bool CanDisplayViewButton => ((ManualBehaviour)UIRoot.instance.uiGame.starmap).active; public static GUIContent GetCheapGUIContent(string text) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) cheapText = (GUIContent)(((object)cheapText) ?? ((object)new GUIContent())); cheapText.text = text; return cheapText; } public static bool IsStarVisited(StarData star) { if (star != null) { return star.planets.Where((PlanetData p) => p.factory != null).Count() > 0; } return false; } public static void OnGUI() { //IL_0047: 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_006c: Expected O, but got Unknown //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) wIdx = CruiseAssistMainUI.wIdx; windowStyle = (GUIStyle)(((object)windowStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.WindowStyle))); windowStyle.fontSize = 11; Rect[wIdx] = GUILayout.Window(99030292, Rect[wIdx], new WindowFunction(WindowFunction), "CruiseAssist - StarList", windowStyle, Array.Empty<GUILayoutOption>()); float num = CruiseAssistMainUI.Scale / 100f; if ((float)Screen.width / num < ((Rect)(ref Rect[wIdx])).xMax) { ((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num - ((Rect)(ref Rect[wIdx])).width; } if (((Rect)(ref Rect[wIdx])).x < 0f) { ((Rect)(ref Rect[wIdx])).x = 0f; } if ((float)Screen.height / num < ((Rect)(ref Rect[wIdx])).yMax) { ((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num - ((Rect)(ref Rect[wIdx])).height; } if (((Rect)(ref Rect[wIdx])).y < 0f) { ((Rect)(ref Rect[wIdx])).y = 0f; } if (lastCheckWindowLeft != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop)) { CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } lastCheckWindowLeft = ((Rect)(ref Rect[wIdx])).x; lastCheckWindowTop = ((Rect)(ref Rect[wIdx])).y; } public static void WindowFunction(int windowId) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: 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_0165: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: 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_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0547: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_060e: Unknown result type (might be due to invalid IL or missing references) //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); mainWindowStyleButtonStyle = (GUIStyle)(((object)mainWindowStyleButtonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseButtonStyle))); mainWindowStyleButtonStyle.fixedWidth = 80f; mainWindowStyleButtonStyle.fixedHeight = 20f; mainWindowStyleButtonStyle.fontSize = 12; string[] array = new string[3] { "Normal", "History", "Bookmark" }; GUI.changed = false; int num = GUILayout.Toolbar(ListSelected, array, mainWindowStyleButtonStyle, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); } if (num != ListSelected) { ListSelected = num; CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUILayout.EndHorizontal(); scrollPos[ListSelected] = GUILayout.BeginScrollView(scrollPos[ListSelected], GUIStyle.none, CruiseAssistMainUI.BaseVerticalScrollBarStyle, Array.Empty<GUILayoutOption>()); nameLabelStyle = (GUIStyle)(((object)nameLabelStyle) ?? ((object)new GUIStyle(GUI.skin.label))); nameLabelStyle.fixedWidth = 240f; nameLabelStyle.stretchHeight = true; nameLabelStyle.fontSize = 14; nameLabelStyle.alignment = (TextAnchor)3; nRangeLabelStyle = (GUIStyle)(((object)nRangeLabelStyle) ?? ((object)new GUIStyle(GUI.skin.label))); nRangeLabelStyle.fixedWidth = 60f; nRangeLabelStyle.fixedHeight = 20f; nRangeLabelStyle.fontSize = 14; nRangeLabelStyle.alignment = (TextAnchor)5; hRangeLabelStyle = (GUIStyle)(((object)hRangeLabelStyle) ?? ((object)new GUIStyle(nRangeLabelStyle))); hRangeLabelStyle.fixedHeight = 40f; nActionButtonStyle = (GUIStyle)(((object)nActionButtonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseButtonStyle))); nActionButtonStyle.fixedWidth = 40f; nActionButtonStyle.fixedHeight = 18f; nActionButtonStyle.margin.top = 6; nActionButtonStyle.fontSize = 12; hActionButtonStyle = (GUIStyle)(((object)hActionButtonStyle) ?? ((object)new GUIStyle(nActionButtonStyle))); hActionButtonStyle.margin.top = 16; nSortButtonStyle = (GUIStyle)(((object)nSortButtonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseButtonStyle))); nSortButtonStyle.fixedWidth = 20f; nSortButtonStyle.fixedHeight = 18f; nSortButtonStyle.margin.top = 6; nSortButtonStyle.fontSize = 12; hSortButtonStyle = (GUIStyle)(((object)hSortButtonStyle) ?? ((object)new GUIStyle(nSortButtonStyle))); hSortButtonStyle.margin.top = 16; nViewButtonStyle = (GUIStyle)(((object)nViewButtonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseButtonStyle))); nViewButtonStyle.fixedWidth = 20f; nViewButtonStyle.fixedHeight = 18f; nViewButtonStyle.margin.top = 6; nViewButtonStyle.fontSize = 12; hViewButtonStyle = (GUIStyle)(((object)hViewButtonStyle) ?? ((object)new GUIStyle(nViewButtonStyle))); hViewButtonStyle.margin.top = 16; _ = UIRoot.instance.uiGame; if (ListSelected == 0) { List<DFTinderComponent> activeTinders = null; CruiseAssistDebugUI.trackedTinders = 0; if (CruiseAssistPlugin.TrackDarkFogSeedsFlag) { activeTinders = new List<DFTinderComponent>(); EnemyDFHiveSystem[] dfHivesByAstro = GameMain.spaceSector.dfHivesByAstro; foreach (EnemyDFHiveSystem val in dfHivesByAstro) { if (val == null || val.tinderCount == 0) { continue; } CruiseAssistDebugUI.trackedTinders += val.tinders.cursor; for (int j = 1; j < val.tinders.cursor; j++) { if (((DFTinderComponent)(ref val.tinders.buffer[j])).ID > 0) { DFTinderComponent val2 = val.tinders.buffer[j]; if (val2.stage >= -1 && val2.direction > 0) { activeTinders.Add(val2); } } } } } CollectionExtensions.Do<Tuple<StarData, double>>((IEnumerable<Tuple<StarData, double>>)(from tuple in GameMain.galaxy.stars.Select(delegate(StarData star) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) VectorLF3 val9 = star.uPosition - GameMain.mainPlayer.uPosition; return new Tuple<StarData, double>(star, ((VectorLF3)(ref val9)).magnitude); }) orderby tuple.v2 select tuple), (Action<Tuple<StarData, double>>)delegate(Tuple<StarData, double> tuple) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_074c: Unknown result type (might be due to invalid IL or missing references) //IL_0760: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b8: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_0792: Unknown result type (might be due to invalid IL or missing references) //IL_07a6: Unknown result type (might be due to invalid IL or missing references) //IL_06db: Unknown result type (might be due to invalid IL or missing references) //IL_06e5: Unknown result type (might be due to invalid IL or missing references) //IL_06ea: Unknown result type (might be due to invalid IL or missing references) //IL_06ef: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: 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_0148: 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_01f3: 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_025e: Unknown result type (might be due to invalid IL or missing references) //IL_0218: 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_0244: Unknown result type (might be due to invalid IL or missing references) //IL_08a8: Unknown result type (might be due to invalid IL or missing references) //IL_0912: 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_0365: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) StarData star3 = tuple.v1; double range = tuple.v2; string starName = CruiseAssistPlugin.GetStarName(star3); bool flag3 = false; List<Tuple<EnemyData, double>> list = new List<Tuple<EnemyData, double>>(); VectorLF3 val6; if (activeTinders != null) { foreach (DFTinderComponent item in activeTinders) { EnemyDFHiveSystem hiveByAstroId = GameMain.spaceSector.GetHiveByAstroId(item.targetHiveAstroId); if (hiveByAstroId != null && hiveByAstroId.starData.id == star3.id) { EnemyData val5 = GameMain.spaceSector.enemyPool[item.enemyId]; val6 = val5.pos - GameMain.mainPlayer.uPosition; double magnitude2 = ((VectorLF3)(ref val6)).magnitude; list.Add(new Tuple<EnemyData, double>(val5, magnitude2)); } } list.Sort((Tuple<EnemyData, double> tuple1, Tuple<EnemyData, double> tuple2) => tuple1.v2.CompareTo(tuple2.v2)); foreach (Tuple<EnemyData, double> item2 in list) { GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); EnemyData v = item2.v1; val6 = v.pos - star3.uPosition; double magnitude3 = ((VectorLF3)(ref val6)).magnitude; float magnitude4 = ((Vector3)(ref v.vel)).magnitude; string text3; if (magnitude4 <= 0f) { text3 = "∞"; } else { double num5 = magnitude3 / (double)magnitude4; int num6 = (int)(num5 / 3600.0); int num7 = (int)(num5 % 3600.0 / 60.0); int num8 = (int)(num5 % 60.0); text3 = $"{num6}:{num7:D2}:{num8:D2}"; } double v2 = item2.v2; nameLabelStyle.normal.textColor = Color.red; nRangeLabelStyle.normal.textColor = Color.red; if (CruiseAssistPlugin.TargetEnemyId != 0 && v.id == CruiseAssistPlugin.TargetEnemyId) { nameLabelStyle.normal.textColor = CruiseAssistMainUI.enemyTextColor; nRangeLabelStyle.normal.textColor = CruiseAssistMainUI.enemyTextColor; } string text4 = starName + " ← " + CruiseAssistPlugin.GetEnemyName(v); if (CruiseAssistPlugin.MarkVisitedFlag) { text4 = (IsStarVisited(star3) ? "● " : "") + text4; } if (CruiseAssistPlugin.DisplaySeedETAFlag) { text4 = text4 + " (" + text3 + ")"; } GUILayout.Label(text4, nameLabelStyle, Array.Empty<GUILayoutOption>()); float num9 = nameLabelStyle.CalcHeight(GetCheapGUIContent(text4), nameLabelStyle.fixedWidth); GUILayout.FlexibleSpace(); GUILayout.Label(CruiseAssistMainUI.RangeToString(v2), (num9 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>()); if (GUILayout.Button((actionSelected[ListSelected] == 0) ? "SET" : "-", (num9 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectEnemy(v.id); } } if (CanDisplayViewButton && actionSelected[ListSelected] == 0 && GUILayout.Button("-", (num9 < 30f) ? nSortButtonStyle : hSortButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); } GUILayout.EndHorizontal(); } } UIStarmap starmap = UIRoot.instance.uiGame.starmap; if (GameMain.localStar != null && star3.id == GameMain.localStar.id) { flag3 = true; } else if ((star3.id == CruiseAssistPlugin.SelectTargetStar?.id || star3.id == starmap.focusStar?.star.id || star3.id == starmap.focusPlanet?.planet.star.id || star3.id == starmap.focusHive?.hive.starData.id || star3.id == starmap.viewStar?.id || star3.id == starmap.viewPlanet?.star.id || star3.id == starmap.viewHive?.starData.id) && GameMain.history.universeObserveLevel >= ((range >= 14400000.0) ? 4 : 3)) { flag3 = true; } if (flag3) { CollectionExtensions.Do<Tuple<EnemyDFHiveSystem, double>>((IEnumerable<Tuple<EnemyDFHiveSystem, double>>)(from tuple2 in GameMain.spaceSector.dfHivesByAstro.Where((EnemyDFHiveSystem hive) => hive != null && hive.starData.id == star3.id && hive.hasAnyStructureOrUnit).Select(delegate(EnemyDFHiveSystem hive) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) VectorLF3 val8 = GameMain.spaceSector.astros[hive.hiveAstroId - 1000000].uPos - GameMain.mainPlayer.uPosition; return new Tuple<EnemyDFHiveSystem, double>(hive, ((VectorLF3)(ref val8)).magnitude); }) orderby tuple2.v2 select tuple2), (Action<Tuple<EnemyDFHiveSystem, double>>)delegate(Tuple<EnemyDFHiveSystem, double> tuple2) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); EnemyDFHiveSystem v5 = tuple2.v1; double v6 = tuple2.v2; nameLabelStyle.normal.textColor = Color.white; nRangeLabelStyle.normal.textColor = Color.white; if (CruiseAssistPlugin.SelectTargetHive != null && v5.hiveAstroId == CruiseAssistPlugin.SelectTargetHive.hiveAstroId) { nameLabelStyle.normal.textColor = CruiseAssistMainUI.hiveTextColor; nRangeLabelStyle.normal.textColor = CruiseAssistMainUI.hiveTextColor; } string text8 = starName + " - " + CruiseAssistPlugin.GetHiveName(v5); GUILayout.Label(text8, nameLabelStyle, Array.Empty<GUILayoutOption>()); float num12 = nameLabelStyle.CalcHeight(GetCheapGUIContent(text8), nameLabelStyle.fixedWidth); GUILayout.FlexibleSpace(); GUILayout.Label(CruiseAssistMainUI.RangeToString(v6), (num12 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>()); if (GUILayout.Button((actionSelected[ListSelected] == 0) ? "SET" : "-", (num12 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectHive(star3, v5); } } if (CanDisplayViewButton && actionSelected[ListSelected] == 0 && GUILayout.Button("V", (num12 < 30f) ? nViewButtonStyle : hViewButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectHive(star3, v5, set: false); } } GUILayout.EndHorizontal(); }); IEnumerable<Tuple<PlanetData, double>> enumerable4 = star3.planets.Select(delegate(PlanetData planet) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) VectorLF3 val7 = planet.uPosition - GameMain.mainPlayer.uPosition; return new Tuple<PlanetData, double>(planet, ((VectorLF3)(ref val7)).magnitude); }); val6 = star3.uPosition - GameMain.mainPlayer.uPosition; CollectionExtensions.Do<Tuple<PlanetData, double>>((IEnumerable<Tuple<PlanetData, double>>)(from tuple2 in CollectionExtensions.AddItem<Tuple<PlanetData, double>>(enumerable4, new Tuple<PlanetData, double>(null, ((VectorLF3)(ref val6)).magnitude)) orderby tuple2.v2 select tuple2), (Action<Tuple<PlanetData, double>>)delegate(Tuple<PlanetData, double> tuple2) { //IL_0024: 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_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0154: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); PlanetData v3 = tuple2.v1; double v4 = tuple2.v2; nameLabelStyle.normal.textColor = Color.white; nRangeLabelStyle.normal.textColor = Color.white; float num11; if (v3 == null) { if (CruiseAssistPlugin.SelectTargetPlanet == null && CruiseAssistPlugin.SelectTargetStar != null && star3.id == CruiseAssistPlugin.SelectTargetStar.id) { nameLabelStyle.normal.textColor = Color.cyan; nRangeLabelStyle.normal.textColor = Color.cyan; } string text6 = starName; if (CruiseAssistPlugin.MarkVisitedFlag) { text6 = ((star3.planets.Where((PlanetData p) => p.factory != null).Count() > 0) ? "● " : "") + text6; } GUILayout.Label(text6, nameLabelStyle, Array.Empty<GUILayoutOption>()); num11 = nameLabelStyle.CalcHeight(GetCheapGUIContent(text6), nameLabelStyle.fixedWidth); } else { if (CruiseAssistPlugin.SelectTargetPlanet != null && v3.id == CruiseAssistPlugin.SelectTargetPlanet.id) { nameLabelStyle.normal.textColor = Color.cyan; nRangeLabelStyle.normal.textColor = Color.cyan; } string text7 = starName + " - " + CruiseAssistPlugin.GetPlanetName(v3); if (CruiseAssistPlugin.MarkVisitedFlag) { text7 = ((v3.factory != null) ? "● " : "") + text7; } GUILayout.Label(text7, nameLabelStyle, Array.Empty<GUILayoutOption>()); num11 = nameLabelStyle.CalcHeight(GetCheapGUIContent(text7), nameLabelStyle.fixedWidth); } GUILayout.FlexibleSpace(); GUILayout.Label(CruiseAssistMainUI.RangeToString((v3 == null) ? range : v4), (num11 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>()); if (GUILayout.Button((actionSelected[ListSelected] == 0) ? "SET" : ((v3 == null) ? "-" : (CruiseAssistPlugin.Bookmark.Contains(v3.id) ? "DEL" : "ADD")), (num11 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectStar(star3, v3); } else if (v3 != null) { if (CruiseAssistPlugin.Bookmark.Contains(v3.id)) { CruiseAssistPlugin.Bookmark.Remove(v3.id); } else if (CruiseAssistPlugin.Bookmark.Count <= 128) { CruiseAssistPlugin.Bookmark.Add(v3.id); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } } } if (CanDisplayViewButton && actionSelected[ListSelected] == 0 && GUILayout.Button("V", (num11 < 30f) ? nViewButtonStyle : hViewButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectStar(star3, v3, set: false); } } GUILayout.EndHorizontal(); }); } else { GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); nameLabelStyle.normal.textColor = Color.white; nRangeLabelStyle.normal.textColor = Color.white; if (CruiseAssistPlugin.SelectTargetStar != null && star3.id == CruiseAssistPlugin.SelectTargetStar.id) { nameLabelStyle.normal.textColor = Color.cyan; nRangeLabelStyle.normal.textColor = Color.cyan; } string text5 = starName; if (CruiseAssistPlugin.MarkVisitedFlag) { text5 = ((star3.planets.Where((PlanetData p) => p.factory != null).Count() > 0) ? "● " : "") + text5; } GUILayout.Label(text5, nameLabelStyle, Array.Empty<GUILayoutOption>()); float num10 = nameLabelStyle.CalcHeight(GetCheapGUIContent(text5), nameLabelStyle.fixedWidth); GUILayout.FlexibleSpace(); GUILayout.Label(CruiseAssistMainUI.RangeToString(range), (num10 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>()); if (GUILayout.Button((actionSelected[ListSelected] == 0) ? "SET" : "-", (num10 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectStar(star3, null); } } if (CanDisplayViewButton && actionSelected[ListSelected] == 0 && GUILayout.Button("V", (num10 < 30f) ? nViewButtonStyle : hViewButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectStar(star3, null, set: false); } } GUILayout.EndHorizontal(); } }); } else if (ListSelected == 1 || ListSelected == 2) { bool highlighted = false; IEnumerable<int> enumerable2; if (ListSelected != 1) { IEnumerable<int> enumerable = CruiseAssistPlugin.Bookmark.ToList(); enumerable2 = enumerable; } else { enumerable2 = Enumerable.Reverse(CruiseAssistPlugin.History); } IEnumerable<int> enumerable3 = enumerable2; if (ListSelected == 1 && actionSelected[ListSelected] != 2 && CruiseAssistPlugin.HideDuplicateHistoryFlag) { enumerable3 = enumerable3.Distinct(); } int listIndex = -1; CollectionExtensions.Do<int>(enumerable3, (Action<int>)delegate(int id) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_02ff: 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_0449: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) int num2 = listIndex + 1; listIndex = num2; PlanetData val3 = GameMain.galaxy.PlanetById(id); if (val3 != null) { StarData star2 = val3.star; string text = CruiseAssistPlugin.GetStarName(star2); VectorLF3 val4 = val3.uPosition - GameMain.mainPlayer.uPosition; double magnitude = ((VectorLF3)(ref val4)).magnitude; nameLabelStyle.normal.textColor = Color.white; nRangeLabelStyle.normal.textColor = Color.white; if (!highlighted && CruiseAssistPlugin.SelectTargetPlanet != null && val3.id == CruiseAssistPlugin.SelectTargetPlanet.id) { nameLabelStyle.normal.textColor = Color.cyan; nRangeLabelStyle.normal.textColor = Color.cyan; highlighted = true; } GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); string text2 = text + " - " + CruiseAssistPlugin.GetPlanetName(val3); if (CruiseAssistPlugin.MarkVisitedFlag) { text2 = ((val3.factory != null) ? "● " : "") + text2; } GUILayout.Label(text2, nameLabelStyle, Array.Empty<GUILayoutOption>()); float num3 = nameLabelStyle.CalcHeight(GetCheapGUIContent(text2), nameLabelStyle.fixedWidth); GUILayout.FlexibleSpace(); GUILayout.Label(CruiseAssistMainUI.RangeToString(magnitude), (num3 < 30f) ? nRangeLabelStyle : hRangeLabelStyle, Array.Empty<GUILayoutOption>()); if (ListSelected == 2 && actionSelected[ListSelected] == 1) { int num4 = CruiseAssistPlugin.Bookmark.IndexOf(id); bool flag = num4 == 0; bool flag2 = num4 == CruiseAssistPlugin.Bookmark.Count - 1; if (GUILayout.Button(flag2 ? "-" : "↓", (num3 < 30f) ? nSortButtonStyle : hSortButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (!flag2) { CruiseAssistPlugin.Bookmark.RemoveAt(num4); CruiseAssistPlugin.Bookmark.Insert(num4 + 1, id); } } if (GUILayout.Button(flag ? "-" : "↑", (num3 < 30f) ? nSortButtonStyle : hSortButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (!flag) { CruiseAssistPlugin.Bookmark.RemoveAt(num4); CruiseAssistPlugin.Bookmark.Insert(num4 - 1, id); } } } else { if (GUILayout.Button((actionSelected[ListSelected] == 0) ? "SET" : ((actionSelected[ListSelected] != 2) ? (CruiseAssistPlugin.Bookmark.Contains(id) ? "DEL" : "ADD") : ((ListSelected == 1 && listIndex == 0) ? "-" : "DEL")), (num3 < 30f) ? nActionButtonStyle : hActionButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectStar(star2, val3); } else if (actionSelected[ListSelected] == 1) { if (ListSelected == 1) { if (CruiseAssistPlugin.Bookmark.Contains(id)) { CruiseAssistPlugin.Bookmark.Remove(id); } else if (CruiseAssistPlugin.Bookmark.Count <= 128) { CruiseAssistPlugin.Bookmark.Add(id); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } } } else if (actionSelected[ListSelected] == 2) { if (ListSelected == 1) { if (listIndex != 0) { CruiseAssistPlugin.History.RemoveAt(CruiseAssistPlugin.History.Count - 1 - listIndex); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } } else if (ListSelected == 2) { CruiseAssistPlugin.Bookmark.Remove(val3.id); CruiseAssistMainUI.NextCheckGameTick = GameMain.gameTick + 300; } } } if (CanDisplayViewButton && actionSelected[ListSelected] == 0 && GUILayout.Button("V", (num3 < 30f) ? nViewButtonStyle : hViewButtonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); if (actionSelected[ListSelected] == 0) { SelectStar(star2, val3, set: false); } } } GUILayout.EndHorizontal(); } }); } GUILayout.EndScrollView(); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); buttonStyle = (GUIStyle)(((object)buttonStyle) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseButtonStyle))); buttonStyle.fixedWidth = 80f; buttonStyle.fixedHeight = 20f; buttonStyle.fontSize = 12; if (GUILayout.Button(listButtonModeName[ListSelected][actionSelected[ListSelected]], buttonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); actionSelected[ListSelected]++; actionSelected[ListSelected] %= listButtonModeName[ListSelected].Length; } GUILayout.FlexibleSpace(); if (GUILayout.Button("Close", buttonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); Show[wIdx] = false; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUI.DragWindow(); } public static void SelectStar(StarData star, PlanetData planet, bool set = true) { UIGame uiGame = UIRoot.instance.uiGame; if (CruiseAssistPlugin.SelectFocusFlag && ((ManualBehaviour)uiGame.starmap).active) { if (star != null) { UIStarmapStar val = uiGame.starmap.starUIs.Where((UIStarmapStar s) => s.star.id == star.id).FirstOrDefault(); if ((Object)(object)val != (Object)null) { UIStarmap_OnStarClick(uiGame.starmap, val); uiGame.starmap.OnCursorFunction2Click(0); } } if (planet != null) { UIStarmapPlanet val2 = uiGame.starmap.planetUIs.Where((UIStarmapPlanet p) => p.planet.id == planet.id).FirstOrDefault(); if ((Object)(object)val2 != (Object)null) { UIStarmap_OnPlanetClick(uiGame.starmap, val2); uiGame.starmap.OnCursorFunction2Click(0); } } } if (set) { if (planet != null) { GameMain.mainPlayer.navigation.indicatorAstroId = planet.id; } else if (star != null) { GameMain.mainPlayer.navi
AutoPilot.dll
Decompiled 7 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using tanu.CruiseAssist; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("0.0.0.0")] namespace tanu.AutoPilot; internal class AutoPilotConfigManager : ConfigManager { internal AutoPilotConfigManager(ConfigFile config) : base(config) { } protected override void CheckConfigImplements(Step step) { bool flag = false; switch (step) { case Step.AWAKE: ConfigManager.Bind("Base", "ModVersion", "1.3.1", "Don't change.").Value = "1.3.1"; flag = true; LoadGeneralSettings(); break; case Step.GAME_MAIN_BEGIN: LoadGeneralSettings(); break; case Step.STATE: { LogManager.LogInfo("Checking state and updating config."); flag |= ConfigManager.UpdateEntry("Setting", "MinEnergyPer", AutoPilotPlugin.Conf.MinEnergyPer); flag |= ConfigManager.UpdateEntry("Setting", "MaxSpeed", AutoPilotPlugin.Conf.MaxSpeed); flag |= ConfigManager.UpdateEntry("Setting", "WarpMinRangeAU", AutoPilotPlugin.Conf.WarpMinRangeAU); flag |= ConfigManager.UpdateEntry("Setting", "WarpSpeed", AutoPilotPlugin.Conf.SpeedToWarp); flag |= ConfigManager.UpdateEntry("Setting", "LocalWarp", AutoPilotPlugin.Conf.LocalWarpFlag); flag |= ConfigManager.UpdateEntry("Setting", "AutoStart", AutoPilotPlugin.Conf.AutoStartFlag); flag |= ConfigManager.UpdateEntry("Setting", "MainWindowJoin", AutoPilotPlugin.Conf.MainWindowJoinFlag); for (int i = 0; i < 2; i++) { flag |= ConfigManager.UpdateEntry("State", $"MainWindow{i}Left", (int)((Rect)(ref AutoPilotMainUI.Rect[i])).x); flag |= ConfigManager.UpdateEntry("State", $"MainWindow{i}Top", (int)((Rect)(ref AutoPilotMainUI.Rect[i])).y); flag |= ConfigManager.UpdateEntry("State", $"ConfigWindow{i}Left", (int)((Rect)(ref AutoPilotConfigUI.Rect[i])).x); flag |= ConfigManager.UpdateEntry("State", $"ConfigWindow{i}Top", (int)((Rect)(ref AutoPilotConfigUI.Rect[i])).y); } flag |= ConfigManager.UpdateEntry("State", "DebugWindowLeft", (int)((Rect)(ref AutoPilotDebugUI.Rect)).x); flag |= ConfigManager.UpdateEntry("State", "DebugWindowTop", (int)((Rect)(ref AutoPilotDebugUI.Rect)).y); AutoPilotMainUI.NextCheckGameTick = long.MaxValue; break; } } if (flag) { ConfigManager.Save(); } } private void LoadGeneralSettings() { AutoPilotDebugUI.Show = ConfigManager.Bind("Debug", "DebugWindowShow", defaultValue: false).Value; AutoPilotPlugin.Conf.MinEnergyPer = ConfigManager.Bind("Setting", "MinEnergyPer", 20).Value; AutoPilotPlugin.Conf.MaxSpeed = ConfigManager.Bind("Setting", "MaxSpeed", 2000).Value; AutoPilotPlugin.Conf.WarpMinRangeAU = ConfigManager.Bind("Setting", "WarpMinRangeAU", 2).Value; AutoPilotPlugin.Conf.SpeedToWarp = ConfigManager.Bind("Setting", "WarpSpeed", 400).Value; AutoPilotPlugin.Conf.LocalWarpFlag = ConfigManager.Bind("Setting", "LocalWarp", defaultValue: false).Value; AutoPilotPlugin.Conf.AutoStartFlag = ConfigManager.Bind("Setting", "AutoStart", defaultValue: true).Value; AutoPilotPlugin.Conf.MainWindowJoinFlag = ConfigManager.Bind("Setting", "MainWindowJoin", defaultValue: true).Value; for (int i = 0; i < 2; i++) { ((Rect)(ref AutoPilotMainUI.Rect[i])).x = ConfigManager.Bind("State", $"MainWindow{i}Left", 100).Value; ((Rect)(ref AutoPilotMainUI.Rect[i])).y = ConfigManager.Bind("State", $"MainWindow{i}Top", 100).Value; ((Rect)(ref AutoPilotConfigUI.Rect[i])).x = ConfigManager.Bind("State", $"ConfigWindow{i}Left", 100).Value; ((Rect)(ref AutoPilotConfigUI.Rect[i])).y = ConfigManager.Bind("State", $"ConfigWindow{i}Top", 100).Value; } ((Rect)(ref AutoPilotDebugUI.Rect)).x = ConfigManager.Bind("State", "DebugWindowLeft", 100).Value; ((Rect)(ref AutoPilotDebugUI.Rect)).y = ConfigManager.Bind("State", "DebugWindowTop", 100).Value; } } internal class AutoPilotConfigUI { public static GUIStyle guistyle = null; public static GUIStyle guistyle2 = null; public static GUIStyle guistyle3 = null; private static int wIdx = 0; public const float WindowWidth = 400f; public const float WindowHeight = 400f; public static bool[] Show = new bool[2]; public static Rect[] Rect = (Rect[])(object)new Rect[2] { new Rect(0f, 0f, 400f, 400f), new Rect(0f, 0f, 400f, 400f) }; private static float[] lastCheckWindowLeft = new float[2] { float.MinValue, float.MinValue }; private static float[] lastCheckWindowTop = new float[2] { float.MinValue, float.MinValue }; public static string TempMinEnergyPer; public static string TempMaxSpeed; public static string TempWarpMinRangeAU; public static string TempSpeedToWarp; public static void OnGUI() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) wIdx = CruiseAssistMainUI.wIdx; Rect[wIdx] = GUILayout.Window(99031292, Rect[wIdx], new WindowFunction(WindowFunction), "AutoPilot - Config", CruiseAssistMainUI.WindowStyle, Array.Empty<GUILayoutOption>()); float num = CruiseAssistMainUI.Scale / 100f; if ((float)Screen.width / num < ((Rect)(ref Rect[wIdx])).xMax) { ((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num - ((Rect)(ref Rect[wIdx])).width; } if (((Rect)(ref Rect[wIdx])).x < 0f) { ((Rect)(ref Rect[wIdx])).x = 0f; } if ((float)Screen.height / num < ((Rect)(ref Rect[wIdx])).yMax) { ((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num - ((Rect)(ref Rect[wIdx])).height; } if (((Rect)(ref Rect[wIdx])).y < 0f) { ((Rect)(ref Rect[wIdx])).y = 0f; } if (lastCheckWindowLeft[wIdx] != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft[wIdx] || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop[wIdx])) { AutoPilotMainUI.NextCheckGameTick = GameMain.gameTick + 300; } lastCheckWindowLeft[wIdx] = ((Rect)(ref Rect[wIdx])).x; lastCheckWindowTop[wIdx] = ((Rect)(ref Rect[wIdx])).y; } public static void WindowFunction(int windowId) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) //IL_0431: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_044d: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); guistyle = (GUIStyle)(((object)guistyle) ?? ((object)new GUIStyle(GUI.skin.label))); guistyle.fontSize = 12; guistyle.fixedHeight = 20f; guistyle.alignment = (TextAnchor)3; guistyle2 = (GUIStyle)(((object)guistyle2) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseTextFieldStyle))); guistyle2.fontSize = 12; guistyle2.fixedWidth = 60f; guistyle.fixedHeight = 20f; guistyle2.alignment = (TextAnchor)5; GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); guistyle.fixedWidth = 240f; GUILayout.Label(Localization.Translate("Min Energy Percent (0-100 default:20)"), guistyle, Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); string instr = GUILayout.TextField(TempMinEnergyPer, guistyle2, Array.Empty<GUILayoutOption>()); SetValue(ref TempMinEnergyPer, instr, 0, 100, ref AutoPilotPlugin.Conf.MinEnergyPer); guistyle.fixedWidth = 20f; GUILayout.Label("%", guistyle, Array.Empty<GUILayoutOption>()); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); guistyle.fixedWidth = 240f; GUILayout.Label(Localization.Translate("Max Speed (0-2000 default:2000)"), guistyle, Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); string instr2 = GUILayout.TextField(TempMaxSpeed, guistyle2, Array.Empty<GUILayoutOption>()); SetValue(ref TempMaxSpeed, instr2, 0, 2000, ref AutoPilotPlugin.Conf.MaxSpeed); guistyle.fixedWidth = 20f; GUILayout.Label("m/s", guistyle, Array.Empty<GUILayoutOption>()); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); guistyle.fixedWidth = 240f; GUILayout.Label(Localization.Translate("Warp Min Range (0-60 default:2)"), guistyle, Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); string instr3 = GUILayout.TextArea(TempWarpMinRangeAU, guistyle2, Array.Empty<GUILayoutOption>()); SetValue(ref TempWarpMinRangeAU, instr3, 0, 60, ref AutoPilotPlugin.Conf.WarpMinRangeAU); guistyle.fixedWidth = 20f; GUILayout.Label("AU", guistyle, Array.Empty<GUILayoutOption>()); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); guistyle.fixedWidth = 240f; GUILayout.Label(Localization.Translate("Speed to warp (0-2000 default:400)"), guistyle, Array.Empty<GUILayoutOption>()); GUILayout.FlexibleSpace(); string instr4 = GUILayout.TextArea(TempSpeedToWarp, guistyle2, Array.Empty<GUILayoutOption>()); SetValue(ref TempSpeedToWarp, instr4, 0, 2000, ref AutoPilotPlugin.Conf.SpeedToWarp); guistyle.fixedWidth = 20f; GUILayout.Label("m/s", guistyle, Array.Empty<GUILayoutOption>()); GUILayout.EndHorizontal(); guistyle3 = (GUIStyle)(((object)guistyle3) ?? ((object)new GUIStyle(CruiseAssistMainUI.BaseToggleStyle))); guistyle3.fixedHeight = 20f; guistyle3.fontSize = 12; guistyle3.alignment = (TextAnchor)6; GUI.changed = false; AutoPilotPlugin.Conf.LocalWarpFlag = GUILayout.Toggle(AutoPilotPlugin.Conf.LocalWarpFlag, Localization.Translate("Warp to planet in local system."), guistyle3, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); AutoPilotMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; AutoPilotPlugin.Conf.AutoStartFlag = GUILayout.Toggle(AutoPilotPlugin.Conf.AutoStartFlag, Localization.Translate("Start AutoPilot when set target planet."), guistyle3, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); AutoPilotMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUI.changed = false; AutoPilotPlugin.Conf.MainWindowJoinFlag = GUILayout.Toggle(AutoPilotPlugin.Conf.MainWindowJoinFlag, Localization.Translate("Join AutoPilot window to CruiseAssist window."), guistyle3, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); AutoPilotMainUI.NextCheckGameTick = GameMain.gameTick + 300; } GUILayout.EndVertical(); if (GUI.Button(new Rect(((Rect)(ref Rect[wIdx])).width - 16f, 1f, 16f, 16f), "", CruiseAssistMainUI.CloseButtonStyle)) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); Show[wIdx] = false; } GUI.DragWindow(); } private static bool SetValue(ref string temp, string instr, int min, int max, ref int value) { if (string.IsNullOrEmpty(instr)) { temp = string.Empty; return false; } if (int.TryParse(instr, out var result)) { if (result < min) { result = min; } else if (max < result) { result = max; } value = result; temp = value.ToString(); return true; } return false; } } internal class AutoPilotDebugUI { public static bool Show = false; public static Rect Rect = new Rect(0f, 0f, 400f, 400f); private static float lastCheckWindowLeft = float.MinValue; private static float lastCheckWindowTop = float.MinValue; private static Vector2 scrollPos = Vector2.zero; public static void OnGUI() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) GUIStyle val = new GUIStyle(GUI.skin.window); val.fontSize = 11; Rect = GUILayout.Window(99031293, Rect, new WindowFunction(WindowFunction), "AutoPilot - Debug", val, Array.Empty<GUILayoutOption>()); _ = CruiseAssistMainUI.Scale / 100f; if ((float)Screen.width < ((Rect)(ref Rect)).xMax) { ((Rect)(ref Rect)).x = (float)Screen.width - ((Rect)(ref Rect)).width; } if (((Rect)(ref Rect)).x < 0f) { ((Rect)(ref Rect)).x = 0f; } if ((float)Screen.height < ((Rect)(ref Rect)).yMax) { ((Rect)(ref Rect)).y = (float)Screen.height - ((Rect)(ref Rect)).height; } if (((Rect)(ref Rect)).y < 0f) { ((Rect)(ref Rect)).y = 0f; } if (lastCheckWindowLeft != float.MinValue && (((Rect)(ref Rect)).x != lastCheckWindowLeft || ((Rect)(ref Rect)).y != lastCheckWindowTop)) { AutoPilotMainUI.NextCheckGameTick = GameMain.gameTick + 300; } lastCheckWindowLeft = ((Rect)(ref Rect)).x; lastCheckWindowTop = ((Rect)(ref Rect)).y; if (AutoPilotMainUI.NextCheckGameTick <= GameMain.gameTick) { ConfigManager.CheckConfig(ConfigManager.Step.STATE); } } public static void WindowFunction(int windowId) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_0022: 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_0031: 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_0061: 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_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: 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_00b8: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0143: 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_014a: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Unknown result type (might be due to invalid IL or missing references) GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUIStyle val = new GUIStyle(GUI.skin.label); val.fontSize = 12; scrollPos = GUILayout.BeginScrollView(scrollPos, Array.Empty<GUILayoutOption>()); GUILayout.Label($"GameMain.mainPlayer.uPosition={GameMain.mainPlayer.uPosition}", val, Array.Empty<GUILayoutOption>()); if (GameMain.localPlanet != null && CruiseAssistPlugin.TargetUPos != VectorLF3.zero) { Player mainPlayer = GameMain.mainPlayer; VectorLF3 targetUPos = CruiseAssistPlugin.TargetUPos; VectorLF3 val2 = targetUPos - mainPlayer.uPosition; double magnitude = ((VectorLF3)(ref val2)).magnitude; val2 = targetUPos - GameMain.localPlanet.uPosition; double magnitude2 = ((VectorLF3)(ref val2)).magnitude; VectorLF3 val3 = mainPlayer.uPosition - GameMain.localPlanet.uPosition; VectorLF3 val4 = CruiseAssistPlugin.TargetUPos - GameMain.localPlanet.uPosition; GUILayout.Label("range1=" + RangeToString(magnitude), val, Array.Empty<GUILayoutOption>()); GUILayout.Label("range2=" + RangeToString(magnitude2), val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"range1>range2={magnitude > magnitude2}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"angle={Vector3.Angle(VectorLF3.op_Implicit(val3), VectorLF3.op_Implicit(val4))}", val, Array.Empty<GUILayoutOption>()); } Mecha mecha = GameMain.mainPlayer.mecha; GUILayout.Label($"mecha.coreEnergy={mecha.coreEnergy}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"mecha.coreEnergyCap={mecha.coreEnergyCap}", val, Array.Empty<GUILayoutOption>()); double num = mecha.coreEnergy / mecha.coreEnergyCap * 100.0; GUILayout.Label($"energyPer={num}", val, Array.Empty<GUILayoutOption>()); double magnitude3 = ((VectorLF3)(ref GameMain.mainPlayer.controller.actionSail.visual_uvel)).magnitude; GUILayout.Label("spped=" + RangeToString(magnitude3), val, Array.Empty<GUILayoutOption>()); EMovementState movementStateInFrame = GameMain.mainPlayer.controller.movementStateInFrame; GUILayout.Label($"movementStateInFrame={movementStateInFrame}", val, Array.Empty<GUILayoutOption>()); GUILayout.Label($"safeToGo={AutoPilotPlugin.safeToGo}", val, Array.Empty<GUILayoutOption>()); GUIStyle val5 = new GUIStyle(GUI.skin.toggle); val5.fixedHeight = 20f; val5.fontSize = 12; val5.alignment = (TextAnchor)6; GUI.changed = false; AutoPilotPlugin.Conf.IgnoreGravityFlag = GUILayout.Toggle(AutoPilotPlugin.Conf.IgnoreGravityFlag, "Ignore gravity.", val5, Array.Empty<GUILayoutOption>()); if (GUI.changed) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUI.DragWindow(); } public static string RangeToString(double range) { if (range < 10000.0) { return (int)(range + 0.5) + "m "; } if (range < 600000.0) { return (range / 40000.0).ToString("0.00") + "AU"; } return (range / 2400000.0).ToString("0.00") + "Ly"; } } internal class AutoPilotExtension : CruiseAssistExtensionAPI { public bool CheckActive() { return AutoPilotPlugin.State == AutoPilotState.ACTIVE; } public void CheckConfig(string step) { if (Enum.TryParse<ConfigManager.Step>(step, out var result)) { ConfigManager.CheckConfig(result); } } public void SetTargetAstroId(int astroId) { LogManager.LogInfo("Trying set auto start."); AutoPilotPlugin.State = ((!AutoPilotPlugin.Conf.AutoStartFlag) ? AutoPilotState.INACTIVE : AutoPilotState.ACTIVE); AutoPilotPlugin.InputSailSpeedUp = false; } public bool OperateWalk(PlayerMove_Walk __instance) { return OperateLocomotion(((PlayerAction)__instance).player, isFlying: false); } public bool OperateDrift(PlayerMove_Drift __instance) { return OperateLocomotion(((PlayerAction)__instance).player, isFlying: false); } public bool OperateFly(PlayerMove_Fly __instance) { return OperateLocomotion(((PlayerAction)__instance).player, isFlying: true); } public bool OperateSail(PlayerMove_Sail __instance) { UpdateSafetyStatus(((PlayerAction)__instance).player); if (AutoPilotPlugin.State == AutoPilotState.INACTIVE) { return false; } Player player = ((PlayerAction)__instance).player; Mecha mecha = player.mecha; UpdatePlayerSailState(player, mecha); if (player.warping) { AutoPilotPlugin.warped = true; return false; } if (AutoPilotPlugin.EnergyPer < (double)AutoPilotPlugin.Conf.MinEnergyPer) { return false; } HandleGravity(player); HandleSpeedUp(); if (GameMain.localPlanet == null && AutoPilotPlugin.safeToGo) { HandleWarp(player, mecha); return false; } return HandlePlanetProximity(player); } public void SetInactive() { AutoPilotPlugin.State = AutoPilotState.INACTIVE; AutoPilotPlugin.InputSailSpeedUp = false; AutoPilotPlugin.warped = false; } public void CancelOperate() { SetInactive(); } public void OnGUI() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) float scale = CruiseAssistMainUI.Scale / 100f; AutoPilotMainUI.OnGUI(); if (AutoPilotConfigUI.Show[CruiseAssistMainUI.wIdx]) { AutoPilotConfigUI.OnGUI(); } if (AutoPilotDebugUI.Show) { AutoPilotDebugUI.OnGUI(); } bool flag = ResetInputOnMouseActivity(AutoPilotMainUI.Rect[CruiseAssistMainUI.wIdx], scale); if (!flag && AutoPilotConfigUI.Show[CruiseAssistMainUI.wIdx]) { flag = ResetInputOnMouseActivity(AutoPilotConfigUI.Rect[CruiseAssistMainUI.wIdx], scale); } if (!flag && AutoPilotDebugUI.Show) { flag = ResetInputOnMouseActivity(AutoPilotDebugUI.Rect, scale); } } private bool OperateLocomotion(Player player, bool isFlying) { if (AutoPilotPlugin.State == AutoPilotState.INACTIVE) { return false; } UpdatePlayerLocomotionState(player); if (isFlying) { player.controller.input0.y += 1f; player.controller.input1.y += 1f; } else { player.controller.input0.z = 1f; } return true; } private void UpdatePlayerLocomotionState(Player player) { Mecha mecha = player.mecha; AutoPilotPlugin.EnergyPer = mecha.coreEnergy / mecha.coreEnergyCap * 100.0; AutoPilotPlugin.Speed = ((VectorLF3)(ref player.controller.actionSail.visual_uvel)).magnitude; AutoPilotPlugin.WarperCount = mecha.warpStorage.GetItemCount(1210); AutoPilotPlugin.LeavePlanet = true; AutoPilotPlugin.SpeedUp = false; AutoPilotPlugin.InputSailSpeedUp = false; HandleGravity(player); } private void UpdatePlayerSailState(Player player, Mecha mecha) { AutoPilotPlugin.EnergyPer = mecha.coreEnergy / mecha.coreEnergyCap * 100.0; AutoPilotPlugin.Speed = ((VectorLF3)(ref player.controller.actionSail.visual_uvel)).magnitude; AutoPilotPlugin.WarperCount = mecha.warpStorage.GetItemCount(1210); AutoPilotPlugin.LeavePlanet = false; AutoPilotPlugin.SpeedUp = false; AutoPilotPlugin.InputSailSpeedUp = false; } private void UpdateSafetyStatus(Player player) { //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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_0039: 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_0084: 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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) if (AutoPilotPlugin.lastVisitedPlanet == null || GameMain.localStar == null) { AutoPilotPlugin.safeToGo = true; return; } VectorLF3 uPosition = player.uPosition; VectorLF3 targetUPos = CruiseAssistPlugin.TargetUPos; VectorLF3 val = AutoPilotPlugin.lastVisitedPlanet.uPosition - uPosition; VectorLF3 val2 = targetUPos - uPosition; double num = VectorLF3.Dot(val, val2); double magnitude = ((VectorLF3)(ref val2)).magnitude; if (num < 0.0 || magnitude == 0.0) { AutoPilotPlugin.safeToGo = true; return; } double num2 = Math.Abs(num) / magnitude; if (magnitude < num2) { AutoPilotPlugin.safeToGo = true; return; } VectorLF3 val3 = ((VectorLF3)(ref val2)).normalized * num2 - val; AutoPilotPlugin.safeToGo = ((VectorLF3)(ref val3)).magnitude > (double)AutoPilotPlugin.lastVisitedPlanet.realRadius + 400.0; } private void HandleGravity(Player player) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_0027: Unknown result type (might be due to invalid IL or missing references) if (AutoPilotPlugin.Conf.IgnoreGravityFlag) { player.controller.universalGravity = VectorLF3.zero; player.controller.localGravity = VectorLF3.op_Implicit(VectorLF3.zero); } } private void HandleSpeedUp() { if (AutoPilotPlugin.Speed < (double)AutoPilotPlugin.Conf.MaxSpeed) { AutoPilotPlugin.InputSailSpeedUp = true; AutoPilotPlugin.SpeedUp = true; } } private void HandleWarp(Player player, Mecha mecha) { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) if (AutoPilotPlugin.Conf.LocalWarpFlag || GameMain.localStar == null || (CruiseAssistPlugin.TargetStar != null && CruiseAssistPlugin.TargetStar.id != GameMain.localStar.id) || CruiseAssistPlugin.TargetEnemyId != 0) { bool num = (double)AutoPilotPlugin.Conf.WarpMinRangeAU * 40000.0 <= CruiseAssistPlugin.TargetRange; bool flag = (double)AutoPilotPlugin.Conf.SpeedToWarp <= AutoPilotPlugin.Speed; bool flag2 = AutoPilotPlugin.WarperCount >= 1; bool flag3 = mecha.coreEnergy > mecha.warpStartPowerPerSpeed * (double)mecha.maxWarpSpeed; if (num && flag && flag2 && flag3 && !AutoPilotPlugin.warped && mecha.UseWarper()) { player.warpCommand = true; AutoPilotPlugin.warped = true; VFAudio.Create("warp-begin", player.transform, Vector3.zero, true, 0, -1, -1L); } } } private bool HandlePlanetProximity(Player player) { //IL_001b: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_006f: 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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_00b1: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: 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_0101: 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_0108: Unknown result type (might be due to invalid IL or missing references) if (GameMain.localPlanet != null) { AutoPilotPlugin.lastVisitedPlanet = GameMain.localPlanet; } if (AutoPilotPlugin.lastVisitedPlanet == null) { return false; } VectorLF3 val = player.uPosition - AutoPilotPlugin.lastVisitedPlanet.uPosition; double magnitude = ((VectorLF3)(ref val)).magnitude; if (AutoPilotPlugin.safeToGo && (GameMain.localPlanet == null || magnitude > (double)AutoPilotPlugin.lastVisitedPlanet.realRadius + 400.0)) { return false; } AutoPilotPlugin.LeavePlanet = true; VectorLF3 normalized = ((VectorLF3)(ref val)).normalized; float num = Vector3.Angle(VectorLF3.op_Implicit(player.uVelocity), VectorLF3.op_Implicit(normalized)); float num2 = 1.6f / Mathf.Max(10f, num); VectorLF3 val2 = normalized * Math.Max(AutoPilotPlugin.Speed, 200.0); VectorLF3 val3 = VectorLF3.op_Implicit(Vector3.Slerp(VectorLF3.op_Implicit(player.uVelocity), VectorLF3.op_Implicit(val2), num2)) - player.uVelocity; player.controller.actionSail.UseSailEnergy(ref val3, 1.5); player.uVelocity += val3; return true; } private bool ResetInputOnMouseActivity(Rect windowRect, float scale) { //IL_0027: 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_0077: Unknown result type (might be due to invalid IL or missing references) float num = ((Rect)(ref windowRect)).xMin * scale; float num2 = ((Rect)(ref windowRect)).xMax * scale; float num3 = ((Rect)(ref windowRect)).yMin * scale; float num4 = ((Rect)(ref windowRect)).yMax * scale; float x = Input.mousePosition.x; float num5 = (float)Screen.height - Input.mousePosition.y; if (num <= x && x <= num2 && num3 <= num5 && num5 <= num4) { bool num6 = Input.GetMouseButton(0) || Input.GetMouseButton(1) || Input.GetMouseButton(2); bool flag = Input.mouseScrollDelta.y != 0f; if (num6 || flag) { Input.ResetInputAxes(); return true; } } return false; } } internal class AutoPilotMainUI { public static GUIStyle statusLabelStyle = null; public static GUIStyle mainStatusLabelStyle = null; public static GUIStyle buttonStyle = null; private static int wIdx = 0; public const float WindowWidthFull = 398f; public const float WindowHeightFull = 150f; public const float WindowWidthMini = 288f; public const float WindowHeightMini = 70f; public static Rect[] Rect = (Rect[])(object)new Rect[2] { new Rect(0f, 0f, 398f, 150f), new Rect(0f, 0f, 398f, 150f) }; private static readonly float[] lastCheckWindowLeft = new float[2] { float.MinValue, float.MinValue }; private static readonly float[] lastCheckWindowTop = new float[2] { float.MinValue, float.MinValue }; public static long NextCheckGameTick = long.MaxValue; public static void OnGUI() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_00c7: 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_00e8: Expected O, but got Unknown //IL_00e3: 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) wIdx = CruiseAssistMainUI.wIdx; CruiseAssistMainUIViewMode viewMode = CruiseAssistMainUI.ViewMode; if ((int)viewMode != 0) { if ((int)viewMode == 1) { ((Rect)(ref Rect[wIdx])).width = ((Rect)(ref CruiseAssistMainUI.Rect[wIdx])).width; ((Rect)(ref Rect[wIdx])).height = 70f; } } else { ((Rect)(ref Rect[wIdx])).width = ((Rect)(ref CruiseAssistMainUI.Rect[wIdx])).width; ((Rect)(ref Rect[wIdx])).height = 150f; } GUIStyle windowStyle = CruiseAssistMainUI.WindowStyle; windowStyle.fontSize = 11; Rect[wIdx] = GUILayout.Window(99031291, Rect[wIdx], new WindowFunction(WindowFunction), "AutoPilot", windowStyle, Array.Empty<GUILayoutOption>()); float num = CruiseAssistMainUI.Scale / 100f; if (AutoPilotPlugin.Conf.MainWindowJoinFlag) { ((Rect)(ref Rect[wIdx])).x = ((Rect)(ref CruiseAssistMainUI.Rect[CruiseAssistMainUI.wIdx])).x; ((Rect)(ref Rect[wIdx])).y = ((Rect)(ref CruiseAssistMainUI.Rect[CruiseAssistMainUI.wIdx])).yMax; } if ((float)Screen.width / num < ((Rect)(ref Rect[wIdx])).xMax) { ((Rect)(ref Rect[wIdx])).x = (float)Screen.width / num - ((Rect)(ref Rect[wIdx])).width; } if (((Rect)(ref Rect[wIdx])).x < 0f) { ((Rect)(ref Rect[wIdx])).x = 0f; } if ((float)Screen.height / num < ((Rect)(ref Rect[wIdx])).yMax) { ((Rect)(ref Rect[wIdx])).y = (float)Screen.height / num - ((Rect)(ref Rect[wIdx])).height; } if (((Rect)(ref Rect[wIdx])).y < 0f) { ((Rect)(ref Rect[wIdx])).y = 0f; } if (lastCheckWindowLeft[wIdx] != float.MinValue && (((Rect)(ref Rect[wIdx])).x != lastCheckWindowLeft[wIdx] || ((Rect)(ref Rect[wIdx])).y != lastCheckWindowTop[wIdx])) { NextCheckGameTick = GameMain.gameTick + 300; } lastCheckWindowLeft[wIdx] = ((Rect)(ref Rect[wIdx])).x; lastCheckWindowTop[wIdx] = ((Rect)(ref Rect[wIdx])).y; if (NextCheckGameTick <= GameMain.gameTick) { ConfigManager.CheckConfig(ConfigManager.Step.STATE); } } public static void WindowFunction(int windowId) { //IL_000a: 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_02ca: 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_02e0: 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_02f4: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0330: 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_0063: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_035f: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_037a: 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_038e: Expected O, but got Unknown //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_0442: 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_0498: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0277: 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) GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); if ((int)CruiseAssistMainUI.ViewMode == 0) { GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (statusLabelStyle == null) { statusLabelStyle = new GUIStyle(GUI.skin.label) { fontSize = 12 }; } GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); string text; if (AutoPilotPlugin.State == AutoPilotState.INACTIVE) { text = "---"; statusLabelStyle.normal.textColor = Color.white; } else if ((double)AutoPilotPlugin.Conf.MinEnergyPer < AutoPilotPlugin.EnergyPer) { text = "OK"; statusLabelStyle.normal.textColor = Color.cyan; } else { text = "NG"; statusLabelStyle.normal.textColor = Color.red; } GUILayout.Label("Energy : " + text, statusLabelStyle, Array.Empty<GUILayoutOption>()); string text2 = ((AutoPilotPlugin.State == AutoPilotState.INACTIVE || CruiseAssistPlugin.TargetStar == null || GameMain.mainPlayer.warping) ? "---" : ((!AutoPilotPlugin.Conf.LocalWarpFlag && GameMain.localStar != null && CruiseAssistPlugin.TargetStar.id == GameMain.localStar.id) ? "---" : ((CruiseAssistPlugin.TargetRange < (double)(AutoPilotPlugin.Conf.WarpMinRangeAU * 40000)) ? "---" : ((AutoPilotPlugin.WarperCount >= 1) ? "OK" : "NG")))); if (!(text2 == "OK")) { if (text2 == "NG") { statusLabelStyle.normal.textColor = Color.red; } else { statusLabelStyle.normal.textColor = Color.white; } } else { statusLabelStyle.normal.textColor = Color.cyan; } GUILayout.Label("Warper : " + text2, statusLabelStyle, Array.Empty<GUILayoutOption>()); GUILayout.EndVertical(); GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); string text3 = ((AutoPilotPlugin.State == AutoPilotState.INACTIVE) ? "---" : (AutoPilotPlugin.LeavePlanet ? "ON" : "OFF")); statusLabelStyle.normal.textColor = ((text3 == "ON") ? Color.cyan : Color.white); GUILayout.Label("Leave Planet : " + text3, statusLabelStyle, Array.Empty<GUILayoutOption>()); string text4 = ((AutoPilotPlugin.State == AutoPilotState.INACTIVE) ? "---" : (AutoPilotPlugin.SpeedUp ? "ON" : "OFF")); statusLabelStyle.normal.textColor = ((text4 == "ON") ? Color.cyan : Color.white); GUILayout.Label("Speed UP : " + text4, statusLabelStyle, Array.Empty<GUILayoutOption>()); GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); } GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>()); if (mainStatusLabelStyle == null) { mainStatusLabelStyle = new GUIStyle(GUI.skin.label) { fixedWidth = 160f, fixedHeight = 32f, fontSize = 14, alignment = (TextAnchor)3 }; } if (AutoPilotPlugin.State == AutoPilotState.INACTIVE) { mainStatusLabelStyle.normal.textColor = Color.white; GUILayout.Label("Auto Pilot Inactive.", mainStatusLabelStyle, Array.Empty<GUILayoutOption>()); } else { mainStatusLabelStyle.normal.textColor = Color.cyan; GUILayout.Label("Auto Pilot Active.", mainStatusLabelStyle, Array.Empty<GUILayoutOption>()); } GUILayout.FlexibleSpace(); if (buttonStyle == null) { buttonStyle = new GUIStyle(CruiseAssistMainUI.BaseButtonStyle) { fixedWidth = 50f, fixedHeight = 18f, fontSize = 11, alignment = (TextAnchor)4 }; } GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Config", buttonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); AutoPilotConfigUI.Show[wIdx] = !AutoPilotConfigUI.Show[wIdx]; if (AutoPilotConfigUI.Show[wIdx]) { AutoPilotConfigUI.TempMinEnergyPer = AutoPilotPlugin.Conf.MinEnergyPer.ToString(); AutoPilotConfigUI.TempMaxSpeed = AutoPilotPlugin.Conf.MaxSpeed.ToString(); AutoPilotConfigUI.TempWarpMinRangeAU = AutoPilotPlugin.Conf.WarpMinRangeAU.ToString(); AutoPilotConfigUI.TempSpeedToWarp = AutoPilotPlugin.Conf.SpeedToWarp.ToString(); } } if (GUILayout.Button("Start", buttonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); AutoPilotPlugin.State = AutoPilotState.ACTIVE; } GUILayout.EndVertical(); GUILayout.BeginVertical(Array.Empty<GUILayoutOption>()); GUILayout.Button("-", buttonStyle, Array.Empty<GUILayoutOption>()); if (GUILayout.Button("Stop", buttonStyle, Array.Empty<GUILayoutOption>())) { VFAudio.Create("ui-click-0", (Transform)null, Vector3.zero, true, 0, -1, -1L); AutoPilotPlugin.State = AutoPilotState.INACTIVE; } GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUI.DragWindow(); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("nord.AutoPilot", "Autopilot-N", "1.3.1")] public class AutoPilotPlugin : BaseUnityPlugin { public class Conf { public static int MinEnergyPer = 20; public static int MaxSpeed = 2000; public static int WarpMinRangeAU = 2; public static int SpeedToWarp = 400; public static bool LocalWarpFlag = false; public static bool AutoStartFlag = true; public static bool IgnoreGravityFlag = true; public static bool MainWindowJoinFlag = true; } public const string ModGuid = "nord.AutoPilot"; public const string ModName = "Autopilot-N"; public const string ModVersion = "1.3.1"; public static double EnergyPer = 0.0; public static double Speed = 0.0; public static int WarperCount = 0; public static bool LeavePlanet = false; public static bool SpeedUp = false; public static AutoPilotState State = AutoPilotState.INACTIVE; public static bool InputSailSpeedUp = false; private Harmony harmony; public static bool safeToGo = false; public static PlanetData lastVisitedPlanet = null; public static bool warped = false; public void Awake() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown LogManager.Logger = ((BaseUnityPlugin)this).Logger; new AutoPilotConfigManager(((BaseUnityPlugin)this).Config); ConfigManager.CheckConfig(ConfigManager.Step.AWAKE); harmony = new Harmony("nord.AutoPilot.Patch"); harmony.PatchAll(typeof(Patch_VFInput)); CruiseAssistPlugin.RegistExtension((CruiseAssistExtensionAPI)(object)new AutoPilotExtension()); } public void OnDestroy() { CruiseAssistPlugin.UnregistExtension(typeof(AutoPilotExtension)); harmony.UnpatchSelf(); } } public enum AutoPilotState { ACTIVE, INACTIVE } internal abstract class ConfigManager { public enum Step { AWAKE, GAME_MAIN_BEGIN, STATE } private static ConfigManager instance; private static Dictionary<ConfigDefinition, string> orphanedEntries; public static ConfigFile Config { get; private set; } protected ConfigManager(ConfigFile config) { instance = this; Config = config; Config.SaveOnConfigSet = false; } public static void CheckConfig(Step step) { instance.CheckConfigImplements(step); } protected abstract void CheckConfigImplements(Step step); public static ConfigEntry<T> Bind<T>(ConfigDefinition configDefinition, T defaultValue, ConfigDescription configDescription = null) { return Config.Bind<T>(configDefinition, defaultValue, configDescription); } public static ConfigEntry<T> Bind<T>(string section, string key, T defaultValue, ConfigDescription configDescription = null) { return Config.Bind<T>(section, key, defaultValue, configDescription); } public static ConfigEntry<T> Bind<T>(string section, string key, T defaultValue, string description) { return Config.Bind<T>(section, key, defaultValue, description); } public static ConfigEntry<T> GetEntry<T>(ConfigDefinition configDefinition) { try { return (ConfigEntry<T>)(object)Config[configDefinition]; } catch (KeyNotFoundException ex) { LogManager.LogError($"{ex.GetType()}: configDefinition={configDefinition}"); throw; } } public static ConfigEntry<T> GetEntry<T>(string section, string key) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return GetEntry<T>(new ConfigDefinition(section, key)); } public static T GetValue<T>(ConfigDefinition configDefinition) { return GetEntry<T>(configDefinition).Value; } public static T GetValue<T>(string section, string key) { return GetEntry<T>(section, key).Value; } public static bool ContainsKey(ConfigDefinition configDefinition) { return Config.ContainsKey(configDefinition); } public static bool ContainsKey(string section, string key) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown return Config.ContainsKey(new ConfigDefinition(section, key)); } public static bool UpdateEntry<T>(string section, string key, T value) where T : IComparable { ConfigEntry<T> entry = GetEntry<T>(section, key); if (entry.Value.CompareTo(value) == 0) { return false; } entry.Value = value; return true; } public static bool RemoveEntry(ConfigDefinition key) { return Config.Remove(key); } public static Dictionary<ConfigDefinition, string> GetOrphanedEntries() { if (orphanedEntries == null) { orphanedEntries = Traverse.Create((object)Config).Property<Dictionary<ConfigDefinition, string>>("OrphanedEntries", (object[])null).Value; } return orphanedEntries; } public static void Migration<T>(string newSection, string newKey, T defaultValue, string oldSection, string oldKey) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Expected O, but got Unknown GetOrphanedEntries(); ConfigDefinition key = new ConfigDefinition(oldSection, oldKey); if (orphanedEntries.TryGetValue(key, out var value)) { ((ConfigEntryBase)Bind(newSection, newKey, defaultValue)).SetSerializedValue(value); orphanedEntries.Remove(key); LogManager.LogInfo("migration " + oldSection + "." + oldKey + "(" + value + ") => " + newSection + "." + newKey); } } public static void Save(bool clearOrphanedEntries = false) { if (clearOrphanedEntries) { GetOrphanedEntries().Clear(); } Config.Save(); LogManager.LogInfo("save config."); } public static void Clear() { Config.Clear(); } public static void Reload() { Config.Reload(); } } internal class EnumUtils { public static bool TryParse<TEnum>(string value, out TEnum result) where TEnum : struct { if (value == null || !Enum.IsDefined(typeof(TEnum), value)) { result = (TEnum)Enum.GetValues(typeof(TEnum)).GetValue(0); return false; } result = (TEnum)Enum.Parse(typeof(TEnum), value); return true; } } internal static class LogManager { public static ManualLogSource Logger { private get; set; } public static void LogInfo(object data) { Logger.LogInfo(data); } public static void LogInfo(MethodBase method) { Logger.LogInfo((object)(method.DeclaringType.Name + "." + method.Name)); } public static void LogInfo(MethodBase method, object data) { Logger.LogInfo((object)(method.DeclaringType.Name + "." + method.Name + ": " + data)); } public static void LogError(object data) { Logger.LogError(data); } public static void LogError(MethodBase method, object data) { Logger.LogError((object)(method.DeclaringType.Name + "." + method.Name + ": " + data)); } } [HarmonyPatch(typeof(VFInput))] internal class Patch_VFInput { [HarmonyPatch(/*Could not decode attribute arguments.*/)] [HarmonyPostfix] public static void SailSpeedUp_Postfix(ref bool __result) { if (AutoPilotPlugin.State != AutoPilotState.INACTIVE && AutoPilotPlugin.InputSailSpeedUp) { __result = true; } } }