1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-08 22:13:30 +08:00

Compare commits

..

3 Commits

Author SHA1 Message Date
2dbf017a5e update LogisticMiner to be compatible with latest game update 2025-10-29 15:27:53 +08:00
3c7744047c update Game dll 2025-10-29 15:27:23 +08:00
a9959a2f07 try to fix a strange issue 2025-10-29 15:27:13 +08:00
7 changed files with 36 additions and 27 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -15,11 +15,11 @@ public class LogisticMiner : BaseUnityPlugin
private static long _oreEnergyConsume = 2000000; private static long _oreEnergyConsume = 2000000;
private static long _oilEnergyConsume = 3600000; private static long _oilEnergyConsume = 3600000;
private static long _waterEnergyConsume = 20000000; private static long _waterEnergyConsume = 2000000;
private static int _waterSpeed = 100; private static int _waterSpeed = 10;
private static int _miningScale; private static int _miningScale;
private static int _fuelIlsSlot = 3; private static int _fuelIlsSlot = 3;
private static int _fuelPlsSlot = 2; private static int _fuelPlsSlot = 3;
private static float _frame; private static float _frame;
private static float _miningCostRateByTech; private static float _miningCostRateByTech;
@@ -31,8 +31,8 @@ public class LogisticMiner : BaseUnityPlugin
private static uint _miningCostBarrierOil; private static uint _miningCostBarrierOil;
private static uint _seed = (uint)Random.Range(int.MinValue, int.MaxValue); private static uint _seed = (uint)Random.Range(int.MinValue, int.MaxValue);
private static readonly Dictionary<int, VeinCacheData> PlanetVeinCacheData = new(); private static readonly Dictionary<int, VeinCacheData> PlanetVeinCacheData = [];
private static readonly Dictionary<int, (long, bool)> Fuels = new(); private static readonly Dictionary<int, (long, bool)> Fuels = [];
private bool _cfgEnabled = true; private bool _cfgEnabled = true;
@@ -52,11 +52,11 @@ public class LogisticMiner : BaseUnityPlugin
.Value; .Value;
_fuelIlsSlot = Config.Bind("General", "ILSFuelSlot", _fuelIlsSlot + 1, _fuelIlsSlot = Config.Bind("General", "ILSFuelSlot", _fuelIlsSlot + 1,
new ConfigDescription("Fuel slot for ILS, set to 0 to disable", new ConfigDescription("Fuel slot for ILS, set to 0 to disable",
new AcceptableValueRange<int>(0, 5), Array.Empty<object>())) new AcceptableValueRange<int>(0, 5), []))
.Value - 1; .Value - 1;
_fuelPlsSlot = Config.Bind("General", "PLSFuelSlot", _fuelPlsSlot + 1, _fuelPlsSlot = Config.Bind("General", "PLSFuelSlot", _fuelPlsSlot + 1,
new ConfigDescription("Fuel slot for PLS, set to 0 to disable", new ConfigDescription("Fuel slot for PLS, set to 0 to disable",
new AcceptableValueRange<int>(0, 4), Array.Empty<object>())) new AcceptableValueRange<int>(0, 4), []))
.Value - 1; .Value - 1;
if (!_cfgEnabled) return; if (!_cfgEnabled) return;
@@ -98,8 +98,8 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(DSPGame), "StartGame", typeof(GameDesc))] [HarmonyPatch(typeof(DSPGame), nameof(DSPGame.StartGame), typeof(GameDesc))]
[HarmonyPatch(typeof(DSPGame), "StartGame", typeof(string))] [HarmonyPatch(typeof(DSPGame), nameof(DSPGame.StartGame), typeof(string))]
private static void OnGameStart() private static void OnGameStart()
{ {
Logger.LogInfo("Game Start"); Logger.LogInfo("Game Start");
@@ -119,7 +119,7 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(GameMain), "Start")] [HarmonyPatch(typeof(GameMain), nameof(GameMain.Start))]
private static void OnGameLoaded() private static void OnGameLoaded()
{ {
_frame = 0f; _frame = 0f;
@@ -130,7 +130,7 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(GameHistoryData), "UnlockTechFunction")] [HarmonyPatch(typeof(GameHistoryData), nameof(GameHistoryData.UnlockTechFunction))]
private static void OnUnlockTech(int func) private static void OnUnlockTech(int func)
{ {
switch (func) switch (func)
@@ -145,7 +145,7 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(GameData), "GameTick")] [HarmonyPatch(typeof(GameLogic), nameof(GameLogic.OnFactoryFrameBegin))]
private static void FrameTick() private static void FrameTick()
{ {
var main = GameMain.instance; var main = GameMain.instance;
@@ -165,7 +165,7 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(GameHistoryData), "UnlockRecipe")] [HarmonyPatch(typeof(GameHistoryData), nameof(GameHistoryData.UnlockRecipe))]
private static void OnUnlockRecipe(int recipeId) private static void OnUnlockRecipe(int recipeId)
{ {
if (recipeId == 119) if (recipeId == 119)
@@ -175,9 +175,9 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(PlanetFactory), "Init")] [HarmonyPatch(typeof(PlanetFactory), nameof(PlanetFactory.Init))]
[HarmonyPatch(typeof(PlanetFactory), "RecalculateVeinGroup")] [HarmonyPatch(typeof(PlanetFactory), nameof(PlanetFactory.RecalculateVeinGroup))]
[HarmonyPatch(typeof(PlanetFactory), "RecalculateAllVeinGroups")] [HarmonyPatch(typeof(PlanetFactory), nameof(PlanetFactory.RecalculateAllVeinGroups))]
private static void NeedRecalcVeins(PlanetFactory __instance) private static void NeedRecalcVeins(PlanetFactory __instance)
{ {
RecalcVeins(__instance); RecalcVeins(__instance);
@@ -204,7 +204,7 @@ public class LogisticMiner : BaseUnityPlugin
} }
[HarmonyPostfix] [HarmonyPostfix]
[HarmonyPatch(typeof(FactorySystem), "CheckBeforeGameTick")] [HarmonyPatch(typeof(GameLogic), nameof(GameLogic.FactoryBeforeGameTick))]
private static void FactorySystemLogisticMiner(FactorySystem __instance) private static void FactorySystemLogisticMiner(FactorySystem __instance)
{ {
if (_miningSpeedScaleLong <= 0) if (_miningSpeedScaleLong <= 0)
@@ -231,7 +231,7 @@ public class LogisticMiner : BaseUnityPlugin
var factoryProductionStat = var factoryProductionStat =
GameMain.statistics.production.factoryStatPool[__instance.factory.index]; GameMain.statistics.production.factoryStatPool[__instance.factory.index];
var productRegister = factoryProductionStat?.productRegister; var productRegister = factoryProductionStat?.productRegister;
PerformanceMonitor.BeginSample(ECpuWorkEntry.Miner); DeepProfiler.BeginSample(DPEntry.Miner);
do do
{ {
for (var j = 1; j < planetTransport.stationCursor; j++) for (var j = 1; j < planetTransport.stationCursor; j++)
@@ -334,7 +334,7 @@ public class LogisticMiner : BaseUnityPlugin
vcd.FrameNext += _miningFrames; vcd.FrameNext += _miningFrames;
} while (vcd.FrameNext <= _frame); } while (vcd.FrameNext <= _frame);
PerformanceMonitor.EndSample(ECpuWorkEntry.Miner); DeepProfiler.EndSample(DPEntry.Miner);
} }
} }
@@ -353,9 +353,9 @@ public class LogisticMiner : BaseUnityPlugin
public void GenVeins(PlanetFactory factory) public void GenVeins(PlanetFactory factory)
{ {
_veins = new Dictionary<int, List<int>>(); _veins = [];
var veinPool = factory.veinPool; var veinPool = factory.veinPool;
var vg = new Dictionary<int, HashSet<int>>(); Dictionary<int, HashSet<int>> vg = [];
for (var i = 0; i < veinPool.Length; i++) for (var i = 0; i < veinPool.Length; i++)
{ {
if (veinPool[i].amount <= 0 || veinPool[i].type == EVeinType.None) continue; if (veinPool[i].amount <= 0 || veinPool[i].type == EVeinType.None) continue;

View File

@@ -6,7 +6,7 @@
<AssemblyName>LogisticMiner</AssemblyName> <AssemblyName>LogisticMiner</AssemblyName>
<BepInExPluginGuid>org.soardev.logisticminer</BepInExPluginGuid> <BepInExPluginGuid>org.soardev.logisticminer</BepInExPluginGuid>
<Description>DSP MOD - LogisticMiner</Description> <Description>DSP MOD - LogisticMiner</Description>
<Version>0.1.0</Version> <Version>0.2.0</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<RestoreAdditionalProjectSources>https://nuget.bepinex.dev/v3/index.json</RestoreAdditionalProjectSources> <RestoreAdditionalProjectSources>https://nuget.bepinex.dev/v3/index.json</RestoreAdditionalProjectSources>
@@ -15,10 +15,19 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="BepInEx.Core" Version="5.*" /> <PackageReference Include="BepInEx.Core" Version="5.*" />
<PackageReference Include="BepInEx.PluginInfoProps" Version="1.*" /> <PackageReference Include="BepInEx.PluginInfoProps" Version="1.*" />
<PackageReference Include="DysonSphereProgram.GameLibs" Version="0.10.32.*-r.*" /> <!-- <PackageReference Include="DysonSphereProgram.GameLibs" Version="0.10.32.*-r.*" /> -->
<PackageReference Include="UnityEngine.Modules" Version="2018.4.12" IncludeAssets="compile" /> <PackageReference Include="UnityEngine.Modules" Version="2018.4.12" IncludeAssets="compile" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp">
<HintPath>..\AssemblyFromGame\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI">
<HintPath>..\AssemblyFromGame\UnityEngine.UI.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'"> <ItemGroup Condition="'$(TargetFramework.TrimEnd(`0123456789`))' == 'net'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="all" /> <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="all" />
</ItemGroup> </ItemGroup>

View File

@@ -27,7 +27,7 @@
reaches Advanced Mining Machine, otherwise 100. reaches Advanced Mining Machine, otherwise 100.
* 100/s for water by default. * 100/s for water by default.
* Energy costs: 1MW/vein-group & 10MW/water-slot & 1.8MW/oil-seep(configurable) * Energy costs: 1MW/vein-group & 10MW/water-slot & 1.8MW/oil-seep(configurable)
* Fuels burning slot. Default: 4th for ILS, 3rd for PLS. Set to 0 to disable it. * Fuels burning slot. Default: 4th for ILS, 4th for PLS. Set to 0 to disable it.
## 使用说明 ## 使用说明
@@ -47,4 +47,4 @@
倍率可以设置为0(默认)此时倍率会随科技解锁而变化默认是100%解锁高级采矿机后变为300%。 倍率可以设置为0(默认)此时倍率会随科技解锁而变化默认是100%解锁高级采矿机后变为300%。
* 水的采集速度默认为100/s。 * 水的采集速度默认为100/s。
* 能耗:每矿物组 1MW单格水 10MW每油井 1.8MW。 * 能耗:每矿物组 1MW单格水 10MW每油井 1.8MW。
* 燃料格位置。默认星际物流塔第4格行星内物流塔第3格。设为0则关闭燃料补充能量功能。 * 燃料格位置。默认星际物流塔第4格行星内物流塔第4格。设为0则关闭燃料补充能量功能。

View File

@@ -1,6 +1,6 @@
{ {
"name": "LogisticMiner", "name": "LogisticMiner",
"version_number": "0.1.0", "version_number": "0.2.0",
"website_url": "https://github.com/soarqin/DSP_Mods/tree/master/LogisticMiner", "website_url": "https://github.com/soarqin/DSP_Mods/tree/master/LogisticMiner",
"description": "Logistic Storages can mine all ores/water on current planet / 物流塔可以采集当前星球的全部矿产(以及水)", "description": "Logistic Storages can mine all ores/water on current planet / 物流塔可以采集当前星球的全部矿产(以及水)",
"dependencies": [ "dependencies": [

View File

@@ -1069,10 +1069,10 @@ public static class LogisticsPatch
var localPlanet = GameMain.data?.localPlanet; var localPlanet = GameMain.data?.localPlanet;
if (localPlanet == null || !localPlanet.factoryLoaded) if (localPlanet == null || !localPlanet.factoryLoaded)
{ {
_stationTipsRoot.SetActive(false);
if (_lastPlanetId == 0) return; if (_lastPlanetId == 0) return;
RecycleStationTips(); RecycleStationTips();
_lastPlanetId = 0; _lastPlanetId = 0;
_stationTipsRoot.SetActive(false);
return; return;
} }