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

OCBatchBuild v1.1.0

This commit is contained in:
2022-10-18 02:54:26 +08:00
parent 4dcb8dcfac
commit 8f5f9b09e4
4 changed files with 22 additions and 6 deletions

View File

@@ -5,7 +5,7 @@
<AssemblyName>OCBatchBuild</AssemblyName> <AssemblyName>OCBatchBuild</AssemblyName>
<BepInExPluginGuid>org.soardev.ocbatchbuild</BepInExPluginGuid> <BepInExPluginGuid>org.soardev.ocbatchbuild</BepInExPluginGuid>
<Description>DSP MOD - OCBatchBuild</Description> <Description>DSP MOD - OCBatchBuild</Description>
<Version>1.0.0</Version> <Version>1.1.0</Version>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
</PropertyGroup> </PropertyGroup>

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using BepInEx; using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using HarmonyLib; using HarmonyLib;
@@ -14,6 +15,7 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin
private bool _cfgEnabled = true; private bool _cfgEnabled = true;
private static int _maxBuildCount; private static int _maxBuildCount;
private static bool _instantBuild = false;
private void Awake() 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 ConfigDescription("Maximum Orbital Collectors to build once, set to 0 to build as many as possible",
new AcceptableValueRange<int>(0, 40), new {})) new AcceptableValueRange<int>(0, 40), new {}))
.Value; .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)); Harmony.CreateAndPatchAll(typeof(OrbitalCollectorBatchBuild));
} }
@@ -45,6 +48,8 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin
var pos2 = buildPreview.lpos2; var pos2 = buildPreview.lpos2;
var itemId = buildPreview.item.ID; var itemId = buildPreview.item.ID;
var countToBuild = _maxBuildCount - 1; var countToBuild = _maxBuildCount - 1;
var prebuilds = new List<int> {-buildPreview.objId};
var player = __instance.player;
for (var i = 0; i < 39 && countToBuild != 0; i++) for (var i = 0; i < 39 && countToBuild != 0; i++)
{ {
/* rotate for 1/40 on sphere */ /* rotate for 1/40 on sphere */
@@ -62,7 +67,6 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin
} }
if (collide) continue; if (collide) continue;
var player = __instance.player;
if (player.inhandItemId == itemId && player.inhandItemCount > 0) if (player.inhandItemId == itemId && player.inhandItemCount > 0)
{ {
player.UseHandItems(1, out var _); player.UseHandItems(1, out var _);
@@ -92,8 +96,14 @@ public class OrbitalCollectorBatchBuild : BaseUnityPlugin
{ {
prebuild.parameters[j] = buildPreview.parameters[j]; prebuild.parameters[j] = buildPreview.parameters[j];
} }
factory.AddPrebuildDataWithComponents(prebuild); prebuilds.Add(factory.AddPrebuildDataWithComponents(prebuild));
countToBuild--; countToBuild--;
} }
if (!_instantBuild) return;
foreach (var id in prebuilds)
{
factory.BuildFinally(player, id);
}
} }
} }

View File

@@ -3,12 +3,18 @@
#### Batch build Orbital Collectors #### Batch build Orbital Collectors
#### 轨道采集器快速批量建造 #### 轨道采集器快速批量建造
## Updates
### 1.1.0
* Add `InstantBuild` to config
## Usage ## Usage
* Build any orbital collector on a Gas Giant to trigger building all placable orbital collectors. * 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. * 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.
## 使用说明 ## 使用说明
* 在气态星球上建造任何一个轨道采集器触发所有可建造采集器的放置。 * 在气态星球上建造任何一个轨道采集器触发所有可建造采集器的放置。
* 可以在设置文件中配置一次批量建造的最大轨道采集器数量。 * 可以在设置文件中配置一次批量建造的最大轨道采集器数量。
* 提示:轨道采集器会处于待建造状态,你仍然需要绕行气态行星一圈以完成建造。这个机制是为了尽可能减少对原有游戏逻辑的破坏。 * 提示:轨道采集器会处于待建造状态,你仍然需要绕行气态行星一圈以完成建造。这个机制是为了尽可能减少对原有游戏逻辑的破坏。
在配置文件里设置`InstantBuild``true`可以使采集器的建造立即完成。

View File

@@ -1,6 +1,6 @@
{ {
"name": "OrbitalCollectorBatchBuild", "name": "OrbitalCollectorBatchBuild",
"version_number": "1.0.0", "version_number": "1.1.0",
"website_url": "https://github.com/soarqin/DSP_Mods/tree/master/OCBatchBuild", "website_url": "https://github.com/soarqin/DSP_Mods/tree/master/OCBatchBuild",
"description": "Batch build Orbital Collectors / 轨道采集器快速批量建造", "description": "Batch build Orbital Collectors / 轨道采集器快速批量建造",
"dependencies": [ "dependencies": [