diff --git a/OCBatchBuild/OCBatchBuild.csproj b/OCBatchBuild/OCBatchBuild.csproj index 20751a7..4d937fb 100644 --- a/OCBatchBuild/OCBatchBuild.csproj +++ b/OCBatchBuild/OCBatchBuild.csproj @@ -5,7 +5,7 @@ OCBatchBuild org.soardev.ocbatchbuild DSP MOD - OCBatchBuild - 1.0.0 + 1.1.0 true latest diff --git a/OCBatchBuild/OrbitalCollectorBatchBuild.cs b/OCBatchBuild/OrbitalCollectorBatchBuild.cs index 1025562..03684c4 100644 --- a/OCBatchBuild/OrbitalCollectorBatchBuild.cs +++ b/OCBatchBuild/OrbitalCollectorBatchBuild.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using BepInEx; using BepInEx.Configuration; using HarmonyLib; @@ -14,6 +15,7 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin private bool _cfgEnabled = true; private static int _maxBuildCount; + private static bool _instantBuild = false; private void Awake() { @@ -22,6 +24,7 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin new ConfigDescription("Maximum Orbital Collectors to build once, set to 0 to build as many as possible", new AcceptableValueRange(0, 40), new {})) .Value; + _instantBuild = Config.Bind("General", "InstantBuild", _instantBuild, "Enable to make Orbital Collectors built instantly. This is thought to be game logic breaking.").Value; Harmony.CreateAndPatchAll(typeof(OrbitalCollectorBatchBuild)); } @@ -45,6 +48,8 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin var pos2 = buildPreview.lpos2; var itemId = buildPreview.item.ID; var countToBuild = _maxBuildCount - 1; + var prebuilds = new List {-buildPreview.objId}; + var player = __instance.player; for (var i = 0; i < 39 && countToBuild != 0; i++) { /* rotate for 1/40 on sphere */ @@ -62,7 +67,6 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin } if (collide) continue; - var player = __instance.player; if (player.inhandItemId == itemId && player.inhandItemCount > 0) { player.UseHandItems(1, out var _); @@ -92,8 +96,14 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin { prebuild.parameters[j] = buildPreview.parameters[j]; } - factory.AddPrebuildDataWithComponents(prebuild); + prebuilds.Add(factory.AddPrebuildDataWithComponents(prebuild)); countToBuild--; } + + if (!_instantBuild) return; + foreach (var id in prebuilds) + { + factory.BuildFinally(player, id); + } } } \ No newline at end of file diff --git a/OCBatchBuild/README.md b/OCBatchBuild/README.md index 94be401..2d8e89e 100644 --- a/OCBatchBuild/README.md +++ b/OCBatchBuild/README.md @@ -3,12 +3,18 @@ #### Batch build Orbital Collectors #### 轨道采集器快速批量建造 +## Updates +### 1.1.0 +* Add `InstantBuild` to config + ## Usage * Build any orbital collector on a Gas Giant to trigger building all placable orbital collectors. * Can set maximum orbital collectors to build once in config. -* Note: They are placed as prebuilt status, you still need to fly around the Gas Giant to complete building. This is designed not to break much game logic. +* Note: Collectors are placed as prebuilt status, you still need to fly around the Gas Giant to complete building. This is designed not to break much game logic. + You can set `InstantBuild` to `true` in config to make them built instantly. ## 使用说明 * 在气态星球上建造任何一个轨道采集器触发所有可建造采集器的放置。 * 可以在设置文件中配置一次批量建造的最大轨道采集器数量。 -* 提示:轨道采集器会处于待建造状态,你仍然需要绕行气态行星一圈以完成建造。这个机制是为了尽可能减少对原有游戏逻辑的破坏。 \ No newline at end of file +* 提示:轨道采集器会处于待建造状态,你仍然需要绕行气态行星一圈以完成建造。这个机制是为了尽可能减少对原有游戏逻辑的破坏。 + 在配置文件里设置`InstantBuild`为`true`可以使采集器的建造立即完成。 \ No newline at end of file diff --git a/OCBatchBuild/package/manifest.json b/OCBatchBuild/package/manifest.json index b746624..9265396 100644 --- a/OCBatchBuild/package/manifest.json +++ b/OCBatchBuild/package/manifest.json @@ -1,6 +1,6 @@ { "name": "OrbitalCollectorBatchBuild", - "version_number": "1.0.0", + "version_number": "1.1.0", "website_url": "https://github.com/soarqin/DSP_Mods/tree/master/OCBatchBuild", "description": "Batch build Orbital Collectors / 轨道采集器快速批量建造", "dependencies": [