1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-09 15:33:31 +08:00
This commit is contained in:
2023-09-08 14:05:35 +08:00
parent 09dc6dbdcd
commit e88df0b7f4
4 changed files with 258 additions and 125 deletions

View File

@@ -19,17 +19,6 @@ public class CheatEnabler : BaseUnityPlugin
private static bool _configWinInitialized = false;
private static KeyboardShortcut _shortcut = KeyboardShortcut.Deserialize("H + LeftControl");
private static UIConfigWindow _configWin;
private static bool _sitiVeinsOnBirthPlanet = true;
private static bool _fireIceOnBirthPlanet = false;
private static bool _kimberliteOnBirthPlanet = false;
private static bool _fractalOnBirthPlanet = false;
private static bool _organicOnBirthPlanet = true;
private static bool _opticalOnBirthPlanet = false;
private static bool _spiniformOnBirthPlanet = false;
private static bool _unipolarOnBirthPlanet = false;
private static bool _flatBirthPlanet = true;
private static bool _highLuminosityBirthStar = true;
private static bool _terraformAnyway = false;
private static string _unlockTechToMaximumLevel = "";
private static readonly List<int> TechToUnlock = new();
@@ -47,32 +36,32 @@ public class CheatEnabler : BaseUnityPlugin
"always infinite natural resource");
ResourcePatch.FastEnabled = Config.Bind("Planet", "FastMining", false,
"super-fast mining speed");
_unlockTechToMaximumLevel = Config.Bind("General", "UnlockTechToMaxLevel", _unlockTechToMaximumLevel,
"Unlock listed tech to MaxLevel").Value;
WaterPumperPatch.Enabled = Config.Bind("Planet", "WaterPumpAnywhere", false,
"Can pump water anywhere (while water type is not None)");
_sitiVeinsOnBirthPlanet = Config.Bind("Birth", "SiTiVeinsOnBirthPlanet", _sitiVeinsOnBirthPlanet,
"Has Silicon/Titanium veins on birth planet").Value;
_fireIceOnBirthPlanet = Config.Bind("Birth", "FireIceOnBirthPlanet", _fireIceOnBirthPlanet,
"Fire ice on birth planet (You should enable Rare Veins first)").Value;
_kimberliteOnBirthPlanet = Config.Bind("Birth", "KimberliteOnBirthPlanet", _kimberliteOnBirthPlanet,
"Kimberlite on birth planet (You should enable Rare Veins first)").Value;
_fractalOnBirthPlanet = Config.Bind("Birth", "FractalOnBirthPlanet", _fractalOnBirthPlanet,
"Fractal silicon on birth planet (You should enable Rare Veins first)").Value;
_organicOnBirthPlanet = Config.Bind("Birth", "OrganicOnBirthPlanet", _organicOnBirthPlanet,
"Organic crystal on birth planet (You should enable Rare Veins first)").Value;
_opticalOnBirthPlanet = Config.Bind("Birth", "OpticalOnBirthPlanet", _opticalOnBirthPlanet,
"Optical grating crystal on birth planet (You should enable Rare Veins first)").Value;
_spiniformOnBirthPlanet = Config.Bind("Birth", "SpiniformOnBirthPlanet", _spiniformOnBirthPlanet,
"Spiniform stalagmite crystal on birth planet (You should enable Rare Veins first)").Value;
_unipolarOnBirthPlanet = Config.Bind("Birth", "UnipolarOnBirthPlanet", _unipolarOnBirthPlanet,
"Unipolar magnet on birth planet (You should enable Rare Veins first)").Value;
_flatBirthPlanet = Config.Bind("Birth", "FlatBirthPlanet", _flatBirthPlanet,
"Birth planet is solid flat (no water)").Value;
_highLuminosityBirthStar = Config.Bind("Birth", "HighLuminosityBirthStar", _highLuminosityBirthStar,
"Birth star has high luminosity").Value;
TerraformPatch.Enabled = Config.Bind("General", "TerraformAnyway", false,
TerraformPatch.Enabled = Config.Bind("Planet", "TerraformAnyway", false,
"Can do terraform without enough sands");
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");
_unlockTechToMaximumLevel = Config.Bind("General", "UnlockTechToMaxLevel", _unlockTechToMaximumLevel,
"Unlock listed tech to MaxLevel").Value;
I18N.Init();
I18N.Add("CheatEnabler Config", "CheatEnabler Config", "CheatEnabler设置");
@@ -85,7 +74,9 @@ public class CheatEnabler : BaseUnityPlugin
DevShortcuts.Init();
AbnormalDisabler.Init();
ResourcePatch.Init();
WaterPumperPatch.Init();
TerraformPatch.Init();
BirthPlanetPatch.Init();
foreach (var idstr in _unlockTechToMaximumLevel.Split(','))
{
if (int.TryParse(idstr, out var id))
@@ -93,26 +84,15 @@ public class CheatEnabler : BaseUnityPlugin
TechToUnlock.Add(id);
}
}
if (TechToUnlock.Count > 0)
{
Harmony.CreateAndPatchAll(typeof(UnlockTechOnGameStart));
}
WaterPumperPatch.Init();
if (_sitiVeinsOnBirthPlanet || _fireIceOnBirthPlanet || _kimberliteOnBirthPlanet || _fractalOnBirthPlanet ||
_organicOnBirthPlanet || _opticalOnBirthPlanet || _spiniformOnBirthPlanet || _unipolarOnBirthPlanet ||
_flatBirthPlanet || _highLuminosityBirthStar)
{
Harmony.CreateAndPatchAll(typeof(BirthPlanetCheat));
}
TerraformPatch.Init();
}
public void OnDestroy()
{
BirthPlanetPatch.Uninit();
TerraformPatch.Uninit();
WaterPumperPatch.Uninit();
ResourcePatch.Uninit();
@@ -293,78 +273,4 @@ public class CheatEnabler : BaseUnityPlugin
}
}
private class BirthPlanetCheat
{
[HarmonyPostfix, HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")]
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
{
var theme = LDB.themes.Select(1);
if (_flatBirthPlanet)
{
theme.Algos[0] = 2;
}
if (_sitiVeinsOnBirthPlanet)
{
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)
{
veins.Add(8);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (_kimberliteOnBirthPlanet)
{
veins.Add(9);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (_fractalOnBirthPlanet)
{
veins.Add(10);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (_organicOnBirthPlanet)
{
veins.Add(11);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (_opticalOnBirthPlanet)
{
veins.Add(12);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (_spiniformOnBirthPlanet)
{
veins.Add(13);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
if (_unipolarOnBirthPlanet)
{
veins.Add(14);
settings.AddRange(new[] { 1f, 1f, 0.5f, 1f });
}
theme.RareVeins = veins.ToArray();
theme.RareSettings = settings.ToArray();
if (_highLuminosityBirthStar)
{
StarGen.specifyBirthStarMass = 100f;
}
}
}
}