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

work in progress

This commit is contained in:
2023-10-14 22:35:47 +08:00
parent 31b992c7a2
commit 7fae7cc66e
14 changed files with 308 additions and 293 deletions

View File

@@ -1,175 +0,0 @@
using System.Collections.Generic;
using BepInEx.Configuration;
using HarmonyLib;
namespace CheatEnabler;
public static class BirthPlanetPatch
{
public static ConfigEntry<bool> SitiVeinsOnBirthPlanet;
public static ConfigEntry<bool> FireIceOnBirthPlanet;
public static ConfigEntry<bool> KimberliteOnBirthPlanet;
public static ConfigEntry<bool> FractalOnBirthPlanet;
public static ConfigEntry<bool> OrganicOnBirthPlanet;
public static ConfigEntry<bool> OpticalOnBirthPlanet;
public static ConfigEntry<bool> SpiniformOnBirthPlanet;
public static ConfigEntry<bool> UnipolarOnBirthPlanet;
public static ConfigEntry<bool> FlatBirthPlanet;
public static ConfigEntry<bool> HighLuminosityBirthStar;
private static BackupData _backupData;
private static bool _initialized;
private static Harmony _patch;
private struct BackupData
{
public void FromTheme(ThemeProto theme)
{
_algos = theme.Algos.Clone() as int[];
_veinSpot = theme.VeinSpot.Clone() as int[];
_veinCount = theme.VeinCount.Clone() as float[];
_veinOpacity = theme.VeinOpacity.Clone() as float[];
_rareVeins = theme.RareVeins.Clone() as int[];
_rareSettings = theme.RareSettings.Clone() as float[];
_specifyBirthStarMass = StarGen.specifyBirthStarMass;
_specifyBirthStarAge = StarGen.specifyBirthStarAge;
_inited = true;
}
public void ToTheme(ThemeProto theme)
{
if (!_inited) return;
theme.Algos = _algos.Clone() as int[];
theme.VeinSpot = _veinSpot.Clone() as int[];
theme.VeinCount = _veinCount.Clone() as float[];
theme.VeinOpacity = _veinOpacity.Clone() as float[];
theme.RareVeins = _rareVeins.Clone() as int[];
theme.RareSettings = _rareSettings.Clone() as float[];
StarGen.specifyBirthStarMass = _specifyBirthStarMass;
StarGen.specifyBirthStarAge = _specifyBirthStarAge;
}
private bool _inited;
private int[] _algos;
private int[] _veinSpot;
private float[] _veinCount;
private float[] _veinOpacity;
private int[] _rareVeins;
private float[] _rareSettings;
private float _specifyBirthStarMass;
private float _specifyBirthStarAge;
}
public static void Init()
{
SitiVeinsOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
FireIceOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
KimberliteOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
FractalOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
OrganicOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
OpticalOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
SpiniformOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
UnipolarOnBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
FlatBirthPlanet.SettingChanged += (_, _) => PatchBirthThemeData();
HighLuminosityBirthStar.SettingChanged += (_, _) => PatchBirthThemeData();
PatchBirthThemeData();
_patch ??= Harmony.CreateAndPatchAll(typeof(BirthPlanetPatch));
}
public static void Uninit()
{
_patch?.UnpatchSelf();
_patch = null;
}
[HarmonyPostfix, HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")]
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
{
PatchBirthThemeData();
}
private static void PatchBirthThemeData()
{
var theme = LDB.themes.Select(1);
if (!_initialized)
{
_backupData.FromTheme(theme);
}
else
{
_backupData.ToTheme(theme);
}
if (FlatBirthPlanet.Value)
{
theme.Algos[0] = 2;
}
if (SitiVeinsOnBirthPlanet.Value)
{
theme.VeinSpot[2] = 2;
theme.VeinSpot[3] = 2;
theme.VeinCount[2] = 0.7f;
theme.VeinCount[3] = 0.7f;
theme.VeinOpacity[2] = 1f;
theme.VeinOpacity[3] = 1f;
}
List<int> veins = new();
List<float> settings = new();
if (FireIceOnBirthPlanet.Value)
{
veins.Add(8);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (KimberliteOnBirthPlanet.Value)
{
veins.Add(9);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (FractalOnBirthPlanet.Value)
{
veins.Add(10);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (OrganicOnBirthPlanet.Value)
{
veins.Add(11);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (OpticalOnBirthPlanet.Value)
{
veins.Add(12);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (SpiniformOnBirthPlanet.Value)
{
veins.Add(13);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (UnipolarOnBirthPlanet.Value)
{
veins.Add(14);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (veins.Count > 0)
{
theme.RareVeins = veins.ToArray();
theme.RareSettings = settings.ToArray();
}
if (HighLuminosityBirthStar.Value)
{
StarGen.specifyBirthStarMass = 53.81f;
StarGen.specifyBirthStarAge = 0.01f;
}
_initialized = true;
}
}

View File

@@ -60,26 +60,6 @@ public class CheatEnabler : BaseUnityPlugin
"Overclock ejector");
DysonSpherePatch.OverclockSiloEnabled = Config.Bind("DysonSphere", "OverclockSilo", false,
"Overclock silo");
BirthPlanetPatch.SitiVeinsOnBirthPlanet = Config.Bind("Birth", "SiTiVeinsOnBirthPlanet", false,
"Silicon/Titanium on birth planet");
BirthPlanetPatch.FireIceOnBirthPlanet = Config.Bind("Birth", "FireIceOnBirthPlanet", false,
"Fire ice on birth planet");
BirthPlanetPatch.KimberliteOnBirthPlanet = Config.Bind("Birth", "KimberliteOnBirthPlanet", false,
"Kimberlite on birth planet");
BirthPlanetPatch.FractalOnBirthPlanet = Config.Bind("Birth", "FractalOnBirthPlanet", false,
"Fractal silicon on birth planet");
BirthPlanetPatch.OrganicOnBirthPlanet = Config.Bind("Birth", "OrganicOnBirthPlanet", false,
"Organic crystal on birth planet");
BirthPlanetPatch.OpticalOnBirthPlanet = Config.Bind("Birth", "OpticalOnBirthPlanet", false,
"Optical grating crystal on birth planet");
BirthPlanetPatch.SpiniformOnBirthPlanet = Config.Bind("Birth", "SpiniformOnBirthPlanet", false,
"Spiniform stalagmite crystal on birth planet");
BirthPlanetPatch.UnipolarOnBirthPlanet = Config.Bind("Birth", "UnipolarOnBirthPlanet", false,
"Unipolar magnet on birth planet");
BirthPlanetPatch.FlatBirthPlanet = Config.Bind("Birth", "FlatBirthPlanet", false,
"Birth planet is solid flat (no water at all)");
BirthPlanetPatch.HighLuminosityBirthStar = Config.Bind("Birth", "HighLuminosityBirthStar", false,
"Birth star has high luminosity");
UIConfigWindow.Init();
@@ -90,12 +70,10 @@ public class CheatEnabler : BaseUnityPlugin
ResourcePatch.Init();
PlanetPatch.Init();
DysonSpherePatch.Init();
BirthPlanetPatch.Init();
}
private void OnDestroy()
{
BirthPlanetPatch.Uninit();
DysonSpherePatch.Uninit();
PlanetPatch.Uninit();
ResourcePatch.Uninit();

View File

@@ -6,6 +6,7 @@
## Changlog
* 2.3.2
+ Birth star options moved to [UniverseGenTweaks](https://dsp.thunderstore.io/package/soarqin/UniverseGenTweaks/)
+ `Fast Mining` ensures full output of oil extractors now.
+ Crash fix for some options
* 2.3.1
+ Add UXAssist to dependencies in manifest.
@@ -84,10 +85,6 @@
+ Skip absorption period
+ Quick absorb
+ Eject anyway
+ Birth star:
+ Rare resources on birth planet
+ Solid flat on birth planet
+ High luminosity for birth star
## Notes
* Please upgrade `BepInEx` 5.4.21 or later if using with [BlueprintTweaks](https://dsp.thunderstore.io/package/kremnev8/BlueprintTweaks/) to avoid possible conflicts.
@@ -102,6 +99,7 @@
## 更新日志
* 2.3.2
+ 母星系的选项移动到了[UniverseGenTweaks](https://dsp.thunderstore.io/package/soarqin/UniverseGenTweaks/)
+ `高速采集`现在可以保证油井的最大产出
+ 修复了一些选项可能导致崩溃的问题
* 2.3.1
+ 在manifest中添加UXAssist到依赖
@@ -180,10 +178,6 @@
+ 跳过吸收阶段
+ 快速吸收
+ 全球弹射
+ 母星系:
+ 母星有稀有资源
+ 母星是纯平的
+ 母星系恒星高亮
## 注意事项
* 如果和[BlueprintTweaks](https://dsp.thunderstore.io/package/kremnev8/BlueprintTweaks/)一起使用,请升级`BepInEx`到5.4.21或更高版本,以避免可能的冲突。

View File

@@ -107,7 +107,7 @@ public static class ResourcePatch
).Repeat(codeMatcher =>
codeMatcher.RemoveInstruction().InsertAndAdvance(
new CodeInstruction(OpCodes.Pop),
new CodeInstruction(OpCodes.Ldc_R4, 720f)
new CodeInstruction(OpCodes.Ldc_R4, 2400f)
)
);
return matcher.InstructionEnumeration();

View File

@@ -183,30 +183,6 @@ public static class UIConfigWindow
MyCheckBox.CreateCheckBox(x, y, tab4, DysonSpherePatch.OverclockEjectorEnabled, "Overclock Ejectors");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab4, DysonSpherePatch.OverclockSiloEnabled, "Overclock Silos");
var tab5 = wnd.AddTab(_windowTrans, "Birth");
x = 0f;
y = 10f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.SitiVeinsOnBirthPlanet, "Silicon/Titanium on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.FireIceOnBirthPlanet, "Fire ice on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.KimberliteOnBirthPlanet, "Kimberlite on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.FractalOnBirthPlanet, "Fractal silicon on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.OrganicOnBirthPlanet, "Organic crystal on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.OpticalOnBirthPlanet, "Optical grating crystal on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.SpiniformOnBirthPlanet, "Spiniform stalagmite crystal on birth planet");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.UnipolarOnBirthPlanet, "Unipolar magnet on birth planet");
x = 300f;
y = 10f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.FlatBirthPlanet, "Birth planet is solid flat (no water at all)");
y += 36f;
MyCheckBox.CreateCheckBox(x, y, tab5, BirthPlanetPatch.HighLuminosityBirthStar, "Birth star has high luminosity");
return;
void OnBeltSignalChanged()