diff --git a/CheatEnabler/CheatEnabler.cs b/CheatEnabler/CheatEnabler.cs index 1895bdb..4593ec9 100644 --- a/CheatEnabler/CheatEnabler.cs +++ b/CheatEnabler/CheatEnabler.cs @@ -28,6 +28,10 @@ public class CheatEnabler : BaseUnityPlugin "Belt signal generator"); FactoryPatch.BeltSignalNumberAltFormat = Config.Bind("Build", "BeltSignalNumberFormat", false, "Belt signal number format alternative format (AAAA=generation speed in minutes, B=proliferate points, C=stack count):\n AAAABC by default\n BCAAAA as alternative"); + FactoryPatch.BeltSignalCountGenEnabled = Config.Bind("Build", "BeltSignalCountGenerations", true, + "Belt signal count generations as production in statistics"); + FactoryPatch.BeltSignalCountRemEnabled = Config.Bind("Build", "BeltSignalCountRemovals", true, + "Belt signal count removals as comsumption in statistics"); FactoryPatch.BeltSignalCountRecipeEnabled = Config.Bind("Build", "BeltSignalCountRecipe", false, "Belt signal count all raws and intermediates in statistics"); FactoryPatch.RemovePowerSpaceLimitEnabled = Config.Bind("Build", "RemovePowerDistanceLimit", false, diff --git a/CheatEnabler/FactoryPatch.cs b/CheatEnabler/FactoryPatch.cs index c8c2853..a5dadec 100644 --- a/CheatEnabler/FactoryPatch.cs +++ b/CheatEnabler/FactoryPatch.cs @@ -17,6 +17,8 @@ public static class FactoryPatch public static ConfigEntry NoCollisionEnabled; public static ConfigEntry BeltSignalGeneratorEnabled; public static ConfigEntry BeltSignalNumberAltFormat; + public static ConfigEntry BeltSignalCountGenEnabled; + public static ConfigEntry BeltSignalCountRemEnabled; public static ConfigEntry BeltSignalCountRecipeEnabled; public static ConfigEntry RemovePowerSpaceLimitEnabled; public static ConfigEntry BoostWindPowerEnabled; @@ -837,7 +839,7 @@ public static class FactoryPatch int itemId; if ((itemId = cargoPath.TryPickItem(belt.segIndex + belt.segPivotOffset - 5, 12, out var stack, out _)) > 0) { - consumeRegister[itemId] += stack; + if (BeltSignalCountRemEnabled.Value) consumeRegister[itemId] += stack; } continue; @@ -894,7 +896,7 @@ public static class FactoryPatch var inc = beltSignal.Inc; if (!cargoPath.TryInsertItem(belt.segIndex + belt.segPivotOffset, signalId, stack, inc)) continue; if (hasSpeedLimit) beltSignal.Progress -= 3600; - productRegister[signalId] += stack; + if (BeltSignalCountGenEnabled.Value) productRegister[signalId] += stack; if (!countRecipe) continue; var sources = beltSignal.Sources; if (sources == null) continue; @@ -1275,5 +1277,4 @@ public static class FactoryPatch return matcher.InstructionEnumeration(); } } - } \ No newline at end of file diff --git a/CheatEnabler/README.md b/CheatEnabler/README.md index f2a9ba7..f843864 100644 --- a/CheatEnabler/README.md +++ b/CheatEnabler/README.md @@ -4,6 +4,10 @@ #### 添加一些作弊功能,同时屏蔽异常检测 ## Changlog +* 2.3.16 + + Add 2 options to `Belt signal item generation`: + - `Count generations as production in statistics` + - `Count removals as consumption in statistics` * 2.3.15 + New features: - `Instant teleport (like that in Sandbox mode)` @@ -15,10 +19,10 @@ * 2.3.13 + Fix a bug that shortcuts are not working and have display issue on settings window. * 2.3.12 - + Add a shortcut to toggle `No collision`(Alt+W by default), you can modify the shortcut on system settings window. + + Add a shortcut to toggle `No collision`, you can modify the shortcut on system settings window. + Add realtime tips when toggling `No condition build` and `No collision` with shortcuts. * 2.3.11 - + Add a shortcut to toggle `No condition build`(Alt+Q by default), you can modify the shortcut on system settings window. This depends on [UXAssist](https://dsp.thunderstore.io/package/soarqin/UXAssist) 1.0.15 or later. + + Add a shortcut to toggle `No condition build`, you can modify the shortcut on system settings window. This depends on [UXAssist](https://dsp.thunderstore.io/package/soarqin/UXAssist) 1.0.15 or later. * 2.3.10 + Fix following functions not working in new game updates: - `Pump Anywhere` @@ -113,6 +117,8 @@ + Build without condition + No collision + Belt signal item generation + - Count generations as production in statistics + - Count removals as consumption in statistics - Count all raws and intermediates in statistics - Belt signal alt format + Remove space limit between wind turbines and solar panels @@ -143,6 +149,10 @@ * [Multifunction_mod](https://github.com/blacksnipebiu/Multifunction_mod): Some cheat functions ## 更新日志 +* 2.3.16 + + 为`传送带信号物品生成`添加了两个选项: + - `统计信息里将生成计算为产物` + - `统计信息里将移除计算为消耗` * 2.3.15 + 新功能: - `快速传送(和沙盒模式一样)` @@ -252,6 +262,8 @@ + 无条件建造 + 无碰撞 + 传送带信号物品生成 + - 统计信息里将生成计算为产物 + - 统计信息里将移除计算为消耗 - 统计面板中计算所有原材料和中间产物 - 传送带信号替换格式 + 风力发电机和太阳能板无间距限制 diff --git a/CheatEnabler/UIConfigWindow.cs b/CheatEnabler/UIConfigWindow.cs index bdfda6f..22d5a19 100644 --- a/CheatEnabler/UIConfigWindow.cs +++ b/CheatEnabler/UIConfigWindow.cs @@ -36,6 +36,8 @@ public static class UIConfigWindow I18N.Add("Belt signal alt format tips", "Belt signal number format alternative format:\n AAAABC by default\n BCAAAA as alternative\nAAAA=generation speed in minutes, B=proliferate points, C=stack count", "传送带信号物品生成数量格式:\n 默认为AAAABC\n 勾选替换为BCAAAA\nAAAA=生成速度,B=增产点数,C=堆叠数量"); + I18N.Add("Count generations as production in statistics", "Count generations as production in statistics", "统计信息里将生成计算为产物"); + I18N.Add("Count removals as consumption in statistics", "Count removals as consumption in statistics", "统计信息里将移除计算为消耗"); I18N.Add("Count all raws and intermediates in statistics","Count all raw materials in statistics", "统计信息里计算所有原料和中间产物"); I18N.Add("Remove power space limit", "Remove space limit for winds and geothermals", "移除风力发电和地热发电的间距限制"); I18N.Add("Boost wind power", "Boost wind power(x100,000)", "提升风力发电(x100,000)"); @@ -97,11 +99,15 @@ public static class UIConfigWindow MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.NoCollisionEnabled, "No collision"); y += 36f; MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalGeneratorEnabled, "Belt signal generator"); - y += 26f; x += 26f; - var cb = MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalCountRecipeEnabled, "Count all raws and intermediates in statistics", 13); y += 26f; - var cb2 = MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalNumberAltFormat, "Belt signal alt format", 13); + var cb1 = MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalCountGenEnabled, "Count generations as production in statistics", 13); + y += 26f; + var cb2 = MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalCountRemEnabled, "Count removals as consumption in statistics", 13); + y += 26f; + var cb3 = MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalCountRecipeEnabled, "Count all raws and intermediates in statistics", 13); + y += 26f; + var cb4 = MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.BeltSignalNumberAltFormat, "Belt signal alt format", 13); x += 180f; y += 6f; var tip1 = MyWindow.AddTipsButton(x, y, tab2, "Belt signal alt format", "Belt signal alt format tips", "belt-signal-alt-format-tips"); @@ -188,8 +194,10 @@ public static class UIConfigWindow void OnBeltSignalChanged() { var on = FactoryPatch.BeltSignalGeneratorEnabled.Value; - cb.gameObject.SetActive(on); + cb1.gameObject.SetActive(on); cb2.gameObject.SetActive(on); + cb3.gameObject.SetActive(on); + cb4.gameObject.SetActive(on); tip1.gameObject.SetActive(on); } } diff --git a/UXAssist/FactoryPatch.cs b/UXAssist/FactoryPatch.cs index d3a8e8f..2a84ba8 100644 --- a/UXAssist/FactoryPatch.cs +++ b/UXAssist/FactoryPatch.cs @@ -3,9 +3,11 @@ using System.Collections.Generic; using System.Linq; using System.Reflection.Emit; using BepInEx.Configuration; +using CommonAPI.Systems; using HarmonyLib; using UnityEngine; using UnityEngine.EventSystems; +using UXAssist.Common; namespace UXAssist; @@ -23,11 +25,23 @@ public static class FactoryPatch public static ConfigEntry QuickBuildAndDismantleLabsEnabled; public static ConfigEntry ProtectVeinsFromExhaustionEnabled; public static ConfigEntry DoNotRenderEntitiesEnabled; + public static ConfigEntry DragBuildPowerPolesEnabled; + public static ConfigEntry AllowOverflowInLogisticsEnabled; + private static PressKeyBind _doNotRenderEntitiesKey; private static Harmony _factoryPatch; public static void Init() { + _doNotRenderEntitiesKey = KeyBindings.RegisterKeyBinding(new BuiltinKey + { + key = new CombineKey(0, 0, ECombineKeyAction.OnceClick, true), + conflictGroup = KeyBindConflict.MOVEMENT | KeyBindConflict.FLYING | KeyBindConflict.SAILING | KeyBindConflict.BUILD_MODE_1 | KeyBindConflict.KEYBOARD_KEYBIND, + name = "ToggleDoNotRenderEntities", + canOverride = true + } + ); + I18N.Add("KEYToggleDoNotRenderEntities", "Toggle Do Not Render Factory Entities", "切换不渲染工厂建筑实体"); UnlimitInteractiveEnabled.SettingChanged += (_, _) => UnlimitInteractive.Enable(UnlimitInteractiveEnabled.Value); RemoveSomeConditionEnabled.SettingChanged += (_, _) => RemoveSomeConditionBuild.Enable(RemoveSomeConditionEnabled.Value); NightLightEnabled.SettingChanged += (_, _) => NightLight.Enable(NightLightEnabled.Value); @@ -40,6 +54,8 @@ public static class FactoryPatch QuickBuildAndDismantleLabsEnabled.SettingChanged += (_, _) => QuickBuildAndDismantleLab.Enable(QuickBuildAndDismantleLabsEnabled.Value); ProtectVeinsFromExhaustionEnabled.SettingChanged += (_, _) => ProtectVeinsFromExhaustion.Enable(ProtectVeinsFromExhaustionEnabled.Value); DoNotRenderEntitiesEnabled.SettingChanged += (_, _) => DoNotRenderEntities.Enable(DoNotRenderEntitiesEnabled.Value); + DragBuildPowerPolesEnabled.SettingChanged += (_, _) => DragBuildPowerPoles.Enable(DragBuildPowerPolesEnabled.Value); + AllowOverflowInLogisticsEnabled.SettingChanged += (_, _) => AllowOverflowInLogistics.Enable(AllowOverflowInLogisticsEnabled.Value); UnlimitInteractive.Enable(UnlimitInteractiveEnabled.Value); RemoveSomeConditionBuild.Enable(RemoveSomeConditionEnabled.Value); NightLight.Enable(NightLightEnabled.Value); @@ -52,7 +68,8 @@ public static class FactoryPatch QuickBuildAndDismantleLab.Enable(QuickBuildAndDismantleLabsEnabled.Value); ProtectVeinsFromExhaustion.Enable(ProtectVeinsFromExhaustionEnabled.Value); DoNotRenderEntities.Enable(DoNotRenderEntitiesEnabled.Value); - DragBuildPowerPoles.Enable(true); + DragBuildPowerPoles.Enable(DragBuildPowerPolesEnabled.Value); + AllowOverflowInLogistics.Enable(AllowOverflowInLogisticsEnabled.Value); _factoryPatch ??= Harmony.CreateAndPatchAll(typeof(FactoryPatch)); } @@ -72,11 +89,18 @@ public static class FactoryPatch ProtectVeinsFromExhaustion.Enable(false); DoNotRenderEntities.Enable(false); DragBuildPowerPoles.Enable(false); + AllowOverflowInLogistics.Enable(false); _factoryPatch?.UnpatchSelf(); _factoryPatch = null; } + public static void OnUpdate() + { + if (_doNotRenderEntitiesKey.keyValue) + DoNotRenderEntitiesEnabled.Value = !DoNotRenderEntitiesEnabled.Value; + } + [HarmonyTranspiler] [HarmonyPatch(typeof(ConnGizmoGraph), MethodType.Constructor)] private static IEnumerable ConnGizmoGraph_Constructor_Transpiler(IEnumerable instructions, ILGenerator generator) @@ -871,19 +895,39 @@ public static class FactoryPatch int delta; if (UpdateKeyPressed(KeyCode.LeftArrow)) { - delta = -10; + if (VFInput.control) + delta = -100000; + else if (VFInput.alt) + delta = -1000; + else + delta = -10; } else if (UpdateKeyPressed(KeyCode.RightArrow)) { - delta = 10; + if (VFInput.control) + delta = 100000; + else if (VFInput.alt) + delta = 1000; + else + delta = 10; } else if (UpdateKeyPressed(KeyCode.DownArrow)) { - delta = -100; + if (VFInput.control) + delta = -1000000; + else if (VFInput.alt) + delta = -10000; + else + delta = -100; } else if (UpdateKeyPressed(KeyCode.UpArrow)) { - delta = 100; + if (VFInput.control) + delta = 1000000; + else if (VFInput.alt) + delta = 10000; + else + delta = 100; } else { @@ -906,20 +950,26 @@ public static class FactoryPatch } else { - var modelProto = LDB.models.Select(stationStorage.stationWindow.factory.entityPool[station.entityId].modelIndex); - var itemCountMax = 0; - if (modelProto != null) + int itemCountMax; + if (AllowOverflowInLogisticsEnabled.Value) { - itemCountMax = modelProto.prefabDesc.stationMaxItemCount; + itemCountMax = 1000000000; + } + else + { + var modelProto = LDB.models.Select(stationStorage.stationWindow.factory.entityPool[station.entityId].modelIndex); + itemCountMax = 0; + if (modelProto != null) + { + itemCountMax = modelProto.prefabDesc.stationMaxItemCount; + } + itemCountMax += station.isStellar ? GameMain.history.remoteStationExtraStorage : GameMain.history.localStationExtraStorage; } - - itemCountMax += station.isStellar ? GameMain.history.remoteStationExtraStorage : GameMain.history.localStationExtraStorage; if (newMax > itemCountMax) { newMax = itemCountMax; } } - storage.max = newMax; _skipNextEvent = oldMax / 100 != newMax / 100; break; @@ -1490,11 +1540,18 @@ public static class FactoryPatch [HarmonyPrefix] [HarmonyPatch(typeof(ObjectRenderer), nameof(ObjectRenderer.Render))] [HarmonyPatch(typeof(DynamicRenderer), nameof(DynamicRenderer.Render))] - private static bool ObjectRenderer_Render_Prefix(GPUInstancingManager __instance) + private static bool ObjectRenderer_Render_Prefix() { return false; } - + + [HarmonyPrefix] + [HarmonyPatch(typeof(LabRenderer), nameof(LabRenderer.Render))] + private static bool LabRenderer_Render_Prefix() + { + return false; + } + [HarmonyPostfix] [HarmonyPatch(typeof(GPUInstancingManager), nameof(GPUInstancingManager.Render))] private static void FactoryModel_DrawInstancedBatches_Postfix(GPUInstancingManager __instance) @@ -1523,6 +1580,8 @@ public static class FactoryPatch new CodeMatch(OpCodes.Ldarg_0) ).Advance(8).Insert( new CodeInstruction(OpCodes.Ldloc_S, 45), + new CodeInstruction(OpCodes.Ldloc_S, 47), + new CodeInstruction(OpCodes.Or), new CodeInstruction(OpCodes.Brfalse, branch1) ); return matcher.InstructionEnumeration(); @@ -1694,4 +1753,47 @@ public static class FactoryPatch return matcher.InstructionEnumeration(); } } + + private static class AllowOverflowInLogistics + { + private static Harmony _patch; + + public static void Enable(bool enable) + { + if (enable) + { + _patch ??= Harmony.CreateAndPatchAll(typeof(AllowOverflowInLogistics)); + return; + } + + _patch?.UnpatchSelf(); + _patch = null; + } + + // Do not check for overflow when try to send hand items into storages + [HarmonyTranspiler] + [HarmonyPatch(typeof(UIStationStorage), nameof(UIStationStorage.OnItemIconMouseDown))] + private static IEnumerable UIStationStorage_OnItemIconMouseDown_Transpiler(IEnumerable instructions, ILGenerator generator) + { + var matcher = new CodeMatcher(instructions, generator); + matcher.MatchForward(false, + new CodeMatch(OpCodes.Call, AccessTools.PropertyGetter(typeof(LDB), nameof(LDB.items))), + new CodeMatch(OpCodes.Ldarg_0) + ); + var pos = matcher.Pos; + matcher.MatchForward(false, + new CodeMatch(OpCodes.Ldloc_S), + new CodeMatch(OpCodes.Stloc_S) + ); + var inst = matcher.InstructionAt(1).Clone(); + var pos2 = matcher.Pos + 2; + matcher.Start().Advance(pos).RemoveInstructions(pos2 - pos) + .Insert( + new CodeInstruction(OpCodes.Ldloc_1), + new CodeInstruction(OpCodes.Callvirt, AccessTools.PropertyGetter(typeof(Player), nameof(Player.inhandItemCount))), + inst + ); + return matcher.InstructionEnumeration(); + } + } } \ No newline at end of file diff --git a/UXAssist/README.md b/UXAssist/README.md index c5a1d50..ab1dfca 100644 --- a/UXAssist/README.md +++ b/UXAssist/README.md @@ -4,6 +4,18 @@ #### 一些提升用户体验的功能和补丁 ## Changlog +* 1.0.24 + + Changes to `Do not render factory entities (except belts and sorters)` + - Add shortcut key in config panel to toggle this function + - Can click on both belts and sorters now + + New feature: `Drag building power poles in maximum connection range` + + New feature: `Allow overflow for Logistic Stations and Advanced Mining Machines` + - Allow overflow when trying to insert in-hand items + - Allow `Enhanced control for logistic storage limits` to exceed tech capacity limits + - Remove logistic strorage limit check on loading game + + New feature: `Increase maximum power usage in Logistic Stations and Advanced Mining Machines` + - Logistic Stations: Increased max charging power to 3GW(ILS) and 600MW(PLS) (10x of original) + - Advanced Mining Machines: Increased max mining speed to 1000% * 1.0.23 + New features: - `Do not render factory entities (except belts and sorters)` @@ -132,7 +144,14 @@ - When reach the protection value, veins/oils steeps will not be mined/extracted any longer. - Close this function to resume mining and pumping, usually when you have enough level on `Veins Utilization` - Do not render factory entities (except belts and sorters) - - This also makes players click though factory entities but belts + - This also makes players click though factory entities but belts and sorters + - Allow overflow for Logistic Stations and Advanced Mining Machines + - Allow overflow when trying to insert in-hand items + - Allow `Enhanced control for logistic storage limits` to exceed tech capacity limits + - Remove logistic strorage limit check on loading game + - Increase maximum power usage in Logistic Stations and Advanced Mining Machines + - Logistic Stations: Increased max charging power to 3GW(ILS) and 600MW(PLS) (10x of original) + - Advanced Mining Machines: Increased max mining speed to 1000% - Re-intialize planet (without reseting veins) - Quick dismantle all buildings (without drops) - Quick build Orbital Collectors @@ -169,6 +188,17 @@ * [CruiseAssist](https://dsp.thunderstore.io/package/tanu/CruiseAssist/) and its extension [AutoPilot](https://dsp.thunderstore.io/package/tanu/AutoPilot/): `Auto navigation on sailings` and `Auto-cruise` implementations ## 更新日志 +* 1.0.24 + + `不渲染工厂建筑实体(除了传送带和分拣器)`的改动 + - 在配置面板中添加了一个快捷键来切换此功能 + - 现在也可以点击到分拣器了 + + 新功能:`允许物流塔和大型采矿机物品溢出` + - 当尝试塞入手中物品时允许溢出 + - 允许`物流塔存储数量限制控制改进`超过科技容量限制 + - 在加载游戏时移除物流塔容量限制检查 + + 新功能:`提升物流塔和大型采矿机的最大功耗` + - 物流塔:将最大充电功率提高到3GW(星际物流塔)和600MW(行星物流塔)(原来的10倍) + - 大型采矿机:将最大采矿速度提高到1000% * 1.0.23 + 新功能: - `不渲染工厂建筑实体(除了传送带和分拣器)` @@ -298,6 +328,14 @@ - 当达到保护值时,矿脉和油井将不再被开采。 - 关闭此功能以恢复开采,一般是当你在`矿物利用`上有足够的等级时。 - 不渲染工厂建筑实体(除了传送带和分拣器) + - 这也使玩家可以点穿工厂实体直接点到传送带和分拣器 + - 允许物流塔和大型采矿机物品溢出 + - 当尝试塞入手中物品时允许溢出 + - 允许`物流塔存储数量限制控制改进`超过科技容量限制 + - 在加载游戏时移除物流塔容量限制检查 + - 提升物流塔和大型采矿机的最大功耗 + - 物流塔:将最大充电功率提高到3GW(星际物流塔)和600MW(行星物流塔)(原来的10倍) + - 大型采矿机:将最大采矿速度提高到1000% - 初始化本行星(不重置矿脉) - 快速拆除所有建筑(不掉落) - 快速建造轨道采集器 diff --git a/UXAssist/UIConfigWindow.cs b/UXAssist/UIConfigWindow.cs index ccbe197..0f21e1d 100644 --- a/UXAssist/UIConfigWindow.cs +++ b/UXAssist/UIConfigWindow.cs @@ -43,6 +43,8 @@ public static class UIConfigWindow I18N.Add("Protect veins from exhaustion", "Protect veins from exhaustion", "保护矿脉不会耗尽"); I18N.Add("Protect veins from exhaustion tips", "By default, the vein amount is protected at 100, and oil speed is protected at 1.0/s, you can set them yourself in config file.\nWhen reach the protection value, veins/oils steeps will not be mined/extracted any longer.\nClose this function to resume mining and pumping, usually when you have enough level on `Veins Utilization`", "默认矿脉数量保护于剩余100,采油速保护于速度1.0/s,你可以在配置文件中自行设置。\n当达到保护值时,矿脉和油井将不再被开采。\n关闭此功能以恢复开采,一般是当你在`矿物利用`上有足够的等级时。\n"); I18N.Add("Do not render factory entities", "Do not render factory entities (except belts and sorters)", "不渲染工厂建筑实体(除了传送带和分拣器)"); + I18N.Add("Drag building power poles in maximum connection range", "Drag building power poles in maximum connection range", "拖动建造电线杆时自动使用最大连接距离间隔"); + I18N.Add("Allow overflow for Logistic Stations and Advanced Mining Machines", "Allow overflow for Logistic Stations and Advanced Mining Machines", "允许物流站和大型采矿机物品溢出"); I18N.Add("Auto navigation on sailings", "Auto navigation on sailings", "宇宙航行时自动导航"); I18N.Add("Enable auto-cruise", "Enable auto-cruise", "启用自动巡航"); I18N.Add("Auto boost", "Auto boost", "自动加速"); @@ -120,6 +122,10 @@ public static class UIConfigWindow x = 0f; y += 30f; MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.DoNotRenderEntitiesEnabled, "Do not render factory entities"); + y += 36f; + MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.DragBuildPowerPolesEnabled, "Drag building power poles in maximum connection range"); + y += 36f; + MyCheckBox.CreateCheckBox(x, y, tab2, FactoryPatch.AllowOverflowInLogisticsEnabled, "Allow overflow for Logistic Stations and Advanced Mining Machines"); x = 400f; y = 10f; wnd.AddButton(x, y, tab2, "Initialize This Planet", 16, "button-init-planet", () => diff --git a/UXAssist/UXAssist.cs b/UXAssist/UXAssist.cs index 0ad96e0..77e4134 100644 --- a/UXAssist/UXAssist.cs +++ b/UXAssist/UXAssist.cs @@ -76,6 +76,10 @@ public class UXAssist : BaseUnityPlugin FactoryPatch.ProtectVeinsFromExhaustion.KeepOilSpeed = Config.Bind("Factory", "KeepOilSpeed", 1.0f, new ConfigDescription("Keep minimal oil speed (< 0.1 to disable)", new AcceptableValueRange(0.0f, 1.0f))).Value; FactoryPatch.DoNotRenderEntitiesEnabled = Config.Bind("Factory", "DoNotRenderEntities", false, "Do not render factory entities"); + FactoryPatch.DragBuildPowerPolesEnabled = Config.Bind("Factory", "DragBuildPowerPoles", false, + "Drag building power poles in maximum connection range"); + FactoryPatch.AllowOverflowInLogisticsEnabled = Config.Bind("Factory", "AllowOverflowInLogistics", false, + "Allow overflow in logistic stations"); PlanetFunctions.OrbitalCollectorMaxBuildCount = Config.Bind("Factory", "OCMaxBuildCount", 0, "Maximum Orbital Collectors to build once, set to 0 to build as many as possible"); PlayerPatch.EnhancedMechaForgeCountControlEnabled = Config.Bind("Player", "EnhancedMechaForgeCountControl", false, "Enhanced count control for hand-make, increases maximum of count to 1000, and you can hold Ctrl/Shift/Alt to change the count rapidly"); @@ -136,6 +140,7 @@ public class UXAssist : BaseUnityPlugin { ToggleConfigWindow(); } + FactoryPatch.OnUpdate(); PlayerPatch.OnUpdate(); } @@ -413,30 +418,4 @@ public class UXAssist : BaseUnityPlugin { return false; } - - // Do not check for overflow when try to send hand items into storages - [HarmonyTranspiler] - [HarmonyPatch(typeof(UIStationStorage), nameof(UIStationStorage.OnItemIconMouseDown))] - private static IEnumerable UIStationStorage_OnItemIconMouseDown_Transpiler(IEnumerable instructions, ILGenerator generator) - { - var matcher = new CodeMatcher(instructions, generator); - matcher.MatchForward(false, - new CodeMatch(OpCodes.Call, AccessTools.PropertyGetter(typeof(LDB), nameof(LDB.items))), - new CodeMatch(OpCodes.Ldarg_0) - ); - var pos = matcher.Pos; - matcher.MatchForward(false, - new CodeMatch(OpCodes.Ldloc_S), - new CodeMatch(OpCodes.Stloc_S) - ); - var inst = matcher.InstructionAt(1).Clone(); - var pos2 = matcher.Pos + 2; - matcher.Start().Advance(pos).RemoveInstructions(pos2 - pos) - .Insert( - new CodeInstruction(OpCodes.Ldloc_1), - new CodeInstruction(OpCodes.Callvirt, AccessTools.PropertyGetter(typeof(Player), nameof(Player.inhandItemCount))), - inst - ); - return matcher.InstructionEnumeration(); - } }