diff --git a/CheatEnabler/CheatEnabler.cs b/CheatEnabler/CheatEnabler.cs index af97075..de8545f 100644 --- a/CheatEnabler/CheatEnabler.cs +++ b/CheatEnabler/CheatEnabler.cs @@ -53,8 +53,6 @@ public class CheatEnabler : BaseUnityPlugin "Boost geothermal power"); FactoryPatch.WindTurbinesPowerGlobalCoverageEnabled = Config.Bind("Build", "PowerGlobalCoverage", false, "Global power coverage"); - FactoryPatch.GreaterPowerUsageInLogisticsEnabled = Config.Bind("Build", "GreaterPowerUsageInLogistics", false, - "Increase maximum power usage in Logistic Stations and Advanced Mining Machines"); FactoryPatch.ControlPanelRemoteLogisticsEnabled = Config.Bind("Build", "ControlPanelRemoteLogistics", false, "Retrieve/Place items from/to remote planets on logistics control panel"); ResourcePatch.InfiniteResourceEnabled = Config.Bind("Planet", "AlwaysInfiniteResource", false, diff --git a/CheatEnabler/Patches/FactoryPatch.cs b/CheatEnabler/Patches/FactoryPatch.cs index 87f59f1..033981e 100644 --- a/CheatEnabler/Patches/FactoryPatch.cs +++ b/CheatEnabler/Patches/FactoryPatch.cs @@ -30,7 +30,6 @@ public class FactoryPatch : PatchImpl public static ConfigEntry BoostFuelPowerEnabled; public static ConfigEntry BoostGeothermalPowerEnabled; public static ConfigEntry WindTurbinesPowerGlobalCoverageEnabled; - public static ConfigEntry GreaterPowerUsageInLogisticsEnabled; public static ConfigEntry ControlPanelRemoteLogisticsEnabled; private static PressKeyBind _noConditionKey; @@ -76,7 +75,6 @@ public class FactoryPatch : PatchImpl BoostFuelPowerEnabled.SettingChanged += (_, _) => BoostFuelPower.Enable(BoostFuelPowerEnabled.Value); BoostGeothermalPowerEnabled.SettingChanged += (_, _) => BoostGeothermalPower.Enable(BoostGeothermalPowerEnabled.Value); WindTurbinesPowerGlobalCoverageEnabled.SettingChanged += (_, _) => WindTurbinesPowerGlobalCoverage.Enable(WindTurbinesPowerGlobalCoverageEnabled.Value); - GreaterPowerUsageInLogisticsEnabled.SettingChanged += (_, _) => GreaterPowerUsageInLogistics.Enable(GreaterPowerUsageInLogisticsEnabled.Value); ControlPanelRemoteLogisticsEnabled.SettingChanged += (_, _) => ControlPanelRemoteLogistics.Enable(ControlPanelRemoteLogisticsEnabled.Value); } @@ -92,7 +90,6 @@ public class FactoryPatch : PatchImpl BoostSolarPower.Enable(BoostSolarPowerEnabled.Value); BoostFuelPower.Enable(BoostFuelPowerEnabled.Value); BoostGeothermalPower.Enable(BoostGeothermalPowerEnabled.Value); - GreaterPowerUsageInLogistics.Enable(GreaterPowerUsageInLogisticsEnabled.Value); ControlPanelRemoteLogistics.Enable(ControlPanelRemoteLogisticsEnabled.Value); Enable(true); CargoTrafficPatch.Enable(true); @@ -116,7 +113,6 @@ public class FactoryPatch : PatchImpl BoostFuelPower.Enable(false); BoostGeothermalPower.Enable(false); WindTurbinesPowerGlobalCoverage.Enable(false); - GreaterPowerUsageInLogistics.Enable(false); ControlPanelRemoteLogistics.Enable(false); } @@ -1681,156 +1677,6 @@ public class FactoryPatch : PatchImpl } } - private class GreaterPowerUsageInLogistics : PatchImpl - { - protected override void OnEnable() - { - var window = UIRoot.instance?.uiGame?.stationWindow; - if (window == null) return; - window._Close(); - window.maxMiningSpeedSlider.maxValue = 27f; - } - - protected override void OnDisable() - { - var window = UIRoot.instance?.uiGame?.stationWindow; - if (window == null) return; - window._Close(); - window.maxMiningSpeedSlider.maxValue = 20f; - } - - [HarmonyTranspiler] - [HarmonyPatch(typeof(UIStationWindow), nameof(UIStationWindow.OnStationIdChange))] - private static IEnumerable UIStationWindow_OnStationIdChange_Transpiler(IEnumerable instructions, ILGenerator generator) - { - var matcher = new CodeMatcher(instructions, generator); - matcher.Start().Insert( - new CodeInstruction(OpCodes.Ldarg_0), - Transpilers.EmitDelegate((UIStationWindow window) => - { - window.maxMiningSpeedSlider.maxValue = 27f; - }) - ).MatchForward(false, - new CodeMatch(OpCodes.Ldarg_0), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.maxChargePowerSlider))), - new CodeMatch(ci => ci.IsLdloc()), - new CodeMatch(ci => ci.opcode == OpCodes.Ldc_I4 && ci.OperandIs(0xC350)), - new CodeMatch(OpCodes.Conv_I8) - ); - var pos = matcher.Pos + 1; - matcher.Advance(5).MatchForward(false, - new CodeMatch(OpCodes.Conv_R4), - new CodeMatch(OpCodes.Callvirt, AccessTools.PropertySetter(typeof(Slider), nameof(Slider.value))) - ); - var pos2 = matcher.Pos + 2; - matcher.Start().Advance(pos); - var ldvar = matcher.InstructionAt(1).Clone(); - var locWorkEnergyPerTick = matcher.InstructionAt(-2).operand; - matcher.RemoveInstructions(pos2 - pos).InsertAndAdvance( - ldvar, - new CodeInstruction(OpCodes.Ldloc_S, locWorkEnergyPerTick), - Transpilers.EmitDelegate((UIStationWindow window, long maxWorkEnergy, long workEnergyPerTick) => - { - var maxSliderValue = maxWorkEnergy / 50000L; - window.maxChargePowerSlider.maxValue = maxSliderValue + 9; - window.maxChargePowerSlider.minValue = maxWorkEnergy / 500000L; - if (workEnergyPerTick <= maxWorkEnergy) - window.maxChargePowerSlider.Set(workEnergyPerTick / 50000L, false); - else - window.maxChargePowerSlider.Set(maxSliderValue + (workEnergyPerTick - 1) / maxWorkEnergy + 1, false); - }) - ); - - matcher.MatchForward(false, - new CodeMatch(OpCodes.Ldarg_0), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.maxMiningSpeedSlider))), - new CodeMatch(OpCodes.Ldarg_0), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.factorySystem))), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(FactorySystem), nameof(FactorySystem.minerPool))), - new CodeMatch(ci => ci.IsLdloc()), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(StationComponent), nameof(StationComponent.minerId))), - new CodeMatch(OpCodes.Ldelema, typeof(MinerComponent)), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(MinerComponent), nameof(MinerComponent.speed))) - ); - pos = matcher.Pos + 9; - matcher.Advance(5).MatchForward(false, - new CodeMatch(OpCodes.Conv_R4), - new CodeMatch(OpCodes.Callvirt, AccessTools.PropertySetter(typeof(Slider), nameof(Slider.value))) - ); - pos2 = matcher.Pos; - matcher.Start().Advance(pos).RemoveInstructions(pos2 - pos).Insert( - Transpilers.EmitDelegate((int speed) => - { - if (speed <= 30000) - return (speed - 10000) / 1000; - return (speed - 30000) / 10000 + 20; - }) - ); - return matcher.InstructionEnumeration(); - } - - [HarmonyTranspiler] - [HarmonyPatch(typeof(UIStationWindow), nameof(UIStationWindow.OnMaxMiningSpeedChange))] - private static IEnumerable UIStationWindow_OnMaxMiningSpeedChange_Transpiler(IEnumerable instructions, ILGenerator generator) - { - var matcher = new CodeMatcher(instructions, generator); - matcher.MatchForward(false, - new CodeMatch(ci => ci.opcode == OpCodes.Ldc_I4 && ci.OperandIs(10000)), - new CodeMatch(OpCodes.Ldarg_1) - ); - var pos = matcher.Pos; - matcher.MatchForward(false, - new CodeMatch(OpCodes.Stloc_1) - ); - var pos2 = matcher.Pos; - matcher.Start().Advance(pos); - var labels = matcher.Labels; - matcher.RemoveInstructions(pos2 - pos); - matcher.Insert( - new CodeInstruction(OpCodes.Ldarg_1).WithLabels(labels), - Transpilers.EmitDelegate((float value) => - { - var intval = (int)(value + 0.5f); - if (intval <= 20) - return intval * 1000 + 10000; - return (intval - 20) * 10000 + 30000; - }) - ); - return matcher.InstructionEnumeration(); - } - - [HarmonyTranspiler] - [HarmonyPatch(typeof(UIStationWindow), nameof(UIStationWindow.OnMaxChargePowerSliderValueChange))] - private static IEnumerable UIStationWindow_OnMaxChargePowerSliderValueChange_Transpiler(IEnumerable instructions, ILGenerator generator) - { - var matcher = new CodeMatcher(instructions, generator); - matcher.MatchForward(false, - new CodeMatch(OpCodes.Ldarg_0), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.factory))), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(PlanetFactory), nameof(PlanetFactory.powerSystem))), - new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(PowerSystem), nameof(PowerSystem.consumerPool))) - ); - var labels = matcher.Labels; - matcher.Labels = null; - matcher.Insert( - new CodeInstruction(OpCodes.Ldarg_0).WithLabels(labels), - new CodeInstruction(OpCodes.Ldarg_1), - Transpilers.EmitDelegate((UIStationWindow window, float value) => - { - float prevMax = window.workEnergyPrefab * 5L / 50000L; - if (value <= prevMax) - { - return value; - } - - return prevMax * (value - prevMax + 1); - }), - new CodeInstruction(OpCodes.Starg_S, 1) - ); - return matcher.InstructionEnumeration(); - } - } - private class ControlPanelRemoteLogistics : PatchImpl { [HarmonyTranspiler] diff --git a/CheatEnabler/UIConfigWindow.cs b/CheatEnabler/UIConfigWindow.cs index 3d6d1ca..3d39ad2 100644 --- a/CheatEnabler/UIConfigWindow.cs +++ b/CheatEnabler/UIConfigWindow.cs @@ -57,8 +57,6 @@ public static class UIConfigWindow I18N.Add("Boost fuel power 2", "(x20,000 for deuteron, x10,000 for antimatter)", "(氘核燃料棒x20,000,反物质燃料棒x10,000)"); I18N.Add("Wind Turbines do global power coverage", "Wind Turbines do global power coverage", "风力涡轮机供电覆盖全球"); I18N.Add("Boost geothermal power", "Boost geothermal power(x50,000)", "提升地热发电(x50,000)"); - I18N.Add("Increase maximum power usage in Logistic Stations and Advanced Mining Machines", "Increase maximum power usage in Logistic Stations and Advanced Mining Machines", - "提升物流塔和大型采矿机的最大功耗"); I18N.Add("Retrieve/Place items from/to remote planets on logistics control panel", "Retrieve/Place items from/to remote planets on logistics control panel", "在物流总控面板上可以从非本地行星取放物品"); I18N.Add("Infinite Natural Resources", "Infinite natural resources", "自然资源采集不消耗"); I18N.Add("Fast Mining", "Fast mining", "高速采集"); @@ -205,8 +203,6 @@ public static class UIConfigWindow y += 6f; var tip2 = wnd.AddTipsButton2(x + cb5.Width + 5f, y, tab2, "Belt signal alt format", "Belt signal alt format tips", "belt-signal-alt-format-tips"); x = 0f; - y += 30f; - wnd.AddCheckBox(x, y, tab2, FactoryPatch.GreaterPowerUsageInLogisticsEnabled, "Increase maximum power usage in Logistic Stations and Advanced Mining Machines"); y += 36f; wnd.AddCheckBox(x, y, tab2, FactoryPatch.ControlPanelRemoteLogisticsEnabled, "Retrieve/Place items from/to remote planets on logistics control panel"); { diff --git a/UXAssist/Patches/LogisticsPatch.cs b/UXAssist/Patches/LogisticsPatch.cs index f2d6185..4e71767 100644 --- a/UXAssist/Patches/LogisticsPatch.cs +++ b/UXAssist/Patches/LogisticsPatch.cs @@ -48,6 +48,7 @@ public static class LogisticsPatch public static ConfigEntry LogisticsCapacityTweaksEnabled; public static ConfigEntry AllowOverflowInLogisticsEnabled; + public static ConfigEntry GreaterPowerUsageInLogisticsEnabled; public static ConfigEntry LogisticsConstrolPanelImprovementEnabled; public static ConfigEntry RealtimeLogisticsInfoPanelEnabled; public static ConfigEntry RealtimeLogisticsInfoPanelBarsEnabled; @@ -59,6 +60,7 @@ public static class LogisticsPatch SetDefaultRemoteLogicToStorage.SettingChanged += (_, _) => AutoConfigLogisticsSetDefaultRemoteLogicToStorage.Enable(SetDefaultRemoteLogicToStorage.Value); LogisticsCapacityTweaksEnabled.SettingChanged += (_, _) => LogisticsCapacityTweaks.Enable(LogisticsCapacityTweaksEnabled.Value); AllowOverflowInLogisticsEnabled.SettingChanged += (_, _) => AllowOverflowInLogistics.Enable(AllowOverflowInLogisticsEnabled.Value); + GreaterPowerUsageInLogisticsEnabled.SettingChanged += (_, _) => GreaterPowerUsageInLogistics.Enable(GreaterPowerUsageInLogisticsEnabled.Value); LogisticsConstrolPanelImprovementEnabled.SettingChanged += (_, _) => LogisticsConstrolPanelImprovement.Enable(LogisticsConstrolPanelImprovementEnabled.Value); RealtimeLogisticsInfoPanelEnabled.SettingChanged += (_, _) => RealtimeLogisticsInfoPanel.Enable(RealtimeLogisticsInfoPanelEnabled.Value); RealtimeLogisticsInfoPanelBarsEnabled.SettingChanged += (_, _) => RealtimeLogisticsInfoPanel.EnableBars(RealtimeLogisticsInfoPanelBarsEnabled.Value); @@ -70,6 +72,7 @@ public static class LogisticsPatch AutoConfigLogisticsSetDefaultRemoteLogicToStorage.Enable(SetDefaultRemoteLogicToStorage.Value); LogisticsCapacityTweaks.Enable(LogisticsCapacityTweaksEnabled.Value); AllowOverflowInLogistics.Enable(AllowOverflowInLogisticsEnabled.Value); + GreaterPowerUsageInLogistics.Enable(GreaterPowerUsageInLogisticsEnabled.Value); LogisticsConstrolPanelImprovement.Enable(LogisticsConstrolPanelImprovementEnabled.Value); RealtimeLogisticsInfoPanel.Enable(RealtimeLogisticsInfoPanelEnabled.Value); RealtimeLogisticsInfoPanel.EnableBars(RealtimeLogisticsInfoPanelBarsEnabled.Value); @@ -89,6 +92,7 @@ public static class LogisticsPatch AutoConfigLogisticsSetDefaultRemoteLogicToStorage.Enable(false); LogisticsCapacityTweaks.Enable(false); AllowOverflowInLogistics.Enable(false); + GreaterPowerUsageInLogistics.Enable(false); LogisticsConstrolPanelImprovement.Enable(false); RealtimeLogisticsInfoPanel.Enable(false); } @@ -780,6 +784,156 @@ public static class LogisticsPatch } } + private class GreaterPowerUsageInLogistics : PatchImpl + { + protected override void OnEnable() + { + var window = UIRoot.instance?.uiGame?.stationWindow; + if (window == null) return; + window._Close(); + window.maxMiningSpeedSlider.maxValue = 27f; + } + + protected override void OnDisable() + { + var window = UIRoot.instance?.uiGame?.stationWindow; + if (window == null) return; + window._Close(); + window.maxMiningSpeedSlider.maxValue = 20f; + } + + [HarmonyTranspiler] + [HarmonyPatch(typeof(UIStationWindow), nameof(UIStationWindow.OnStationIdChange))] + private static IEnumerable UIStationWindow_OnStationIdChange_Transpiler(IEnumerable instructions, ILGenerator generator) + { + var matcher = new CodeMatcher(instructions, generator); + matcher.Start().Insert( + new CodeInstruction(OpCodes.Ldarg_0), + Transpilers.EmitDelegate((UIStationWindow window) => + { + window.maxMiningSpeedSlider.maxValue = 27f; + }) + ).MatchForward(false, + new CodeMatch(OpCodes.Ldarg_0), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.maxChargePowerSlider))), + new CodeMatch(ci => ci.IsLdloc()), + new CodeMatch(ci => ci.opcode == OpCodes.Ldc_I4 && ci.OperandIs(0xC350)), + new CodeMatch(OpCodes.Conv_I8) + ); + var pos = matcher.Pos + 1; + matcher.Advance(5).MatchForward(false, + new CodeMatch(OpCodes.Conv_R4), + new CodeMatch(OpCodes.Callvirt, AccessTools.PropertySetter(typeof(Slider), nameof(Slider.value))) + ); + var pos2 = matcher.Pos + 2; + matcher.Start().Advance(pos); + var ldvar = matcher.InstructionAt(1).Clone(); + var locWorkEnergyPerTick = matcher.InstructionAt(-2).operand; + matcher.RemoveInstructions(pos2 - pos).InsertAndAdvance( + ldvar, + new CodeInstruction(OpCodes.Ldloc_S, locWorkEnergyPerTick), + Transpilers.EmitDelegate((UIStationWindow window, long maxWorkEnergy, long workEnergyPerTick) => + { + var maxSliderValue = maxWorkEnergy / 50000L; + window.maxChargePowerSlider.maxValue = maxSliderValue + 9; + window.maxChargePowerSlider.minValue = maxWorkEnergy / 500000L; + if (workEnergyPerTick <= maxWorkEnergy) + window.maxChargePowerSlider.Set(workEnergyPerTick / 50000L, false); + else + window.maxChargePowerSlider.Set(maxSliderValue + (workEnergyPerTick - 1) / maxWorkEnergy + 1, false); + }) + ); + + matcher.MatchForward(false, + new CodeMatch(OpCodes.Ldarg_0), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.maxMiningSpeedSlider))), + new CodeMatch(OpCodes.Ldarg_0), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.factorySystem))), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(FactorySystem), nameof(FactorySystem.minerPool))), + new CodeMatch(ci => ci.IsLdloc()), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(StationComponent), nameof(StationComponent.minerId))), + new CodeMatch(OpCodes.Ldelema, typeof(MinerComponent)), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(MinerComponent), nameof(MinerComponent.speed))) + ); + pos = matcher.Pos + 9; + matcher.Advance(5).MatchForward(false, + new CodeMatch(OpCodes.Conv_R4), + new CodeMatch(OpCodes.Callvirt, AccessTools.PropertySetter(typeof(Slider), nameof(Slider.value))) + ); + pos2 = matcher.Pos; + matcher.Start().Advance(pos).RemoveInstructions(pos2 - pos).Insert( + Transpilers.EmitDelegate((int speed) => + { + if (speed <= 30000) + return (speed - 10000) / 1000; + return (speed - 30000) / 10000 + 20; + }) + ); + return matcher.InstructionEnumeration(); + } + + [HarmonyTranspiler] + [HarmonyPatch(typeof(UIStationWindow), nameof(UIStationWindow.OnMaxMiningSpeedChange))] + private static IEnumerable UIStationWindow_OnMaxMiningSpeedChange_Transpiler(IEnumerable instructions, ILGenerator generator) + { + var matcher = new CodeMatcher(instructions, generator); + matcher.MatchForward(false, + new CodeMatch(ci => ci.opcode == OpCodes.Ldc_I4 && ci.OperandIs(10000)), + new CodeMatch(OpCodes.Ldarg_1) + ); + var pos = matcher.Pos; + matcher.MatchForward(false, + new CodeMatch(OpCodes.Stloc_1) + ); + var pos2 = matcher.Pos; + matcher.Start().Advance(pos); + var labels = matcher.Labels; + matcher.RemoveInstructions(pos2 - pos); + matcher.Insert( + new CodeInstruction(OpCodes.Ldarg_1).WithLabels(labels), + Transpilers.EmitDelegate((float value) => + { + var intval = (int)(value + 0.5f); + if (intval <= 20) + return intval * 1000 + 10000; + return (intval - 20) * 10000 + 30000; + }) + ); + return matcher.InstructionEnumeration(); + } + + [HarmonyTranspiler] + [HarmonyPatch(typeof(UIStationWindow), nameof(UIStationWindow.OnMaxChargePowerSliderValueChange))] + private static IEnumerable UIStationWindow_OnMaxChargePowerSliderValueChange_Transpiler(IEnumerable instructions, ILGenerator generator) + { + var matcher = new CodeMatcher(instructions, generator); + matcher.MatchForward(false, + new CodeMatch(OpCodes.Ldarg_0), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(UIStationWindow), nameof(UIStationWindow.factory))), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(PlanetFactory), nameof(PlanetFactory.powerSystem))), + new CodeMatch(OpCodes.Ldfld, AccessTools.Field(typeof(PowerSystem), nameof(PowerSystem.consumerPool))) + ); + var labels = matcher.Labels; + matcher.Labels = null; + matcher.Insert( + new CodeInstruction(OpCodes.Ldarg_0).WithLabels(labels), + new CodeInstruction(OpCodes.Ldarg_1), + Transpilers.EmitDelegate((UIStationWindow window, float value) => + { + float prevMax = window.workEnergyPrefab * 5L / 50000L; + if (value <= prevMax) + { + return value; + } + + return prevMax * (value - prevMax + 1); + }), + new CodeInstruction(OpCodes.Starg_S, 1) + ); + return matcher.InstructionEnumeration(); + } + } + private class LogisticsConstrolPanelImprovement : PatchImpl { private static int ItemIdHintUnderMouse() diff --git a/UXAssist/UIConfigWindow.cs b/UXAssist/UIConfigWindow.cs index e541a49..a427d7a 100644 --- a/UXAssist/UIConfigWindow.cs +++ b/UXAssist/UIConfigWindow.cs @@ -105,6 +105,8 @@ public static class UIConfigWindow I18N.Add("Apply all config to planet tips", "Apply all settings of this category to all facilities of this type on the current planet", "将本分类的所有设置数值应用到当前行星上所有该类型物流设施"); I18N.Add("Allow overflow for Logistic Stations and Advanced Mining Machines", "Allow overflow for Logistic Stations and Advanced Mining Machines", "允许物流站和大型采矿机物品溢出"); + I18N.Add("Increase maximum power usage in Logistic Stations and Advanced Mining Machines", "Increase maximum power usage in Logistic Stations and Advanced Mining Machines", + "提升物流塔和大型采矿机的最大功耗"); I18N.Add("Enhance control for logistic storage capacities", "Enhance control for logistic storage capacities", "物流塔存储容量控制改进"); I18N.Add("Enhance control for logistic storage capacities tips", "Logistic storage capacity limits are not scaled on upgrading 'Logistics Carrier Capacity', if they are not set to maximum capacity or already greater than upgraded maximum capacity.\nUse arrow keys to adjust logistic storage capacities:\n \u2190/\u2192: -/+10 \u2193\u2191: -/+100", @@ -534,6 +536,8 @@ public static class UIConfigWindow wnd.AddTipsButton2(x + checkBoxForMeasureTextWidth.Width + 5f, y + 6f, tab3, "Enhance control for logistic storage capacities", "Enhance control for logistic storage capacities tips", "enhanced-logistic-capacities-tips"); y += 36f; wnd.AddCheckBox(x, y, tab3, LogisticsPatch.AllowOverflowInLogisticsEnabled, "Allow overflow for Logistic Stations and Advanced Mining Machines"); + y += 30f; + wnd.AddCheckBox(x, y, tab2, LogisticsPatch.GreaterPowerUsageInLogisticsEnabled, "Increase maximum power usage in Logistic Stations and Advanced Mining Machines"); y += 36f; checkBoxForMeasureTextWidth = wnd.AddCheckBox(x, y, tab3, LogisticsPatch.LogisticsConstrolPanelImprovementEnabled, "Logistics Control Panel Improvement"); wnd.AddTipsButton2(x + checkBoxForMeasureTextWidth.Width + 5f, y + 6f, tab3, "Logistics Control Panel Improvement", "Logistics Control Panel Improvement tips", "lcp-improvement-tips"); diff --git a/UXAssist/UXAssist.cs b/UXAssist/UXAssist.cs index 15bd4ea..c45d62f 100644 --- a/UXAssist/UXAssist.cs +++ b/UXAssist/UXAssist.cs @@ -198,6 +198,8 @@ public class UXAssist : BaseUnityPlugin, IModCanSave "Logistics capacity related tweaks"); LogisticsPatch.AllowOverflowInLogisticsEnabled = Config.Bind("Factory", "AllowOverflowInLogistics", false, "Allow overflow in logistic stations"); + LogisticsPatch.GreaterPowerUsageInLogisticsEnabled = Config.Bind("Build", "GreaterPowerUsageInLogistics", false, + "Increase maximum power usage in Logistic Stations and Advanced Mining Machines"); LogisticsPatch.LogisticsConstrolPanelImprovementEnabled = Config.Bind("Factory", "LogisticsConstrolPanelImprovement", false, "Logistics control panel improvement"); LogisticsPatch.RealtimeLogisticsInfoPanelEnabled = Config.Bind("Factory", "RealtimeLogisticsInfoPanel", false,