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

Work in progress

This commit is contained in:
2022-12-03 01:05:53 +08:00
parent d98f96fd94
commit cb85462a75

View File

@@ -1,5 +1,4 @@
using System; using BepInEx;
using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using HarmonyLib; using HarmonyLib;
using UnityEngine; using UnityEngine;
@@ -58,43 +57,36 @@ public class Patch : BaseUnityPlugin
Harmony.CreateAndPatchAll(typeof(BeltFix)); Harmony.CreateAndPatchAll(typeof(BeltFix));
} }
private static void BoostSorter(int id) [HarmonyPostfix, HarmonyPriority(Priority.Last), HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")]
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
{ {
var prefabDesc = LDB.items.Select(id).prefabDesc; // Belts
LDB.items.Select(2001).prefabDesc.beltSpeed = (int)beltSpeed[0];
LDB.items.Select(2002).prefabDesc.beltSpeed = (int)beltSpeed[1];
LDB.items.Select(2003).prefabDesc.beltSpeed = (int)beltSpeed[2];
foreach (var proto in LDB.items.dataArray)
{
var prefabDesc = proto.prefabDesc;
if (prefabDesc.isInserter) if (prefabDesc.isInserter)
{ {
prefabDesc.inserterSTT *= sorterSpeedMultiplier; prefabDesc.inserterSTT *= sorterSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= sorterPowerConsumptionMultiplier; prefabDesc.idleEnergyPerTick *= sorterPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= sorterPowerConsumptionMultiplier; prefabDesc.workEnergyPerTick *= sorterPowerConsumptionMultiplier;
} }
}
private static void BoostAssembler(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isAssembler) if (prefabDesc.isAssembler)
{ {
prefabDesc.assemblerSpeed *= assembleSpeedMultiplier; prefabDesc.assemblerSpeed *= assembleSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= assemblePowerConsumptionMultiplier; prefabDesc.idleEnergyPerTick *= assemblePowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= assemblePowerConsumptionMultiplier; prefabDesc.workEnergyPerTick *= assemblePowerConsumptionMultiplier;
} }
}
private static void BoostMiner(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.minerType != EMinerType.None) if (prefabDesc.minerType != EMinerType.None)
{ {
prefabDesc.minerPeriod /= minerSpeedMultiplier; prefabDesc.minerPeriod /= minerSpeedMultiplier;
prefabDesc.idleEnergyPerTick *= minerPowerConsumptionMultiplier; prefabDesc.idleEnergyPerTick *= minerPowerConsumptionMultiplier;
prefabDesc.workEnergyPerTick *= minerPowerConsumptionMultiplier; prefabDesc.workEnergyPerTick *= minerPowerConsumptionMultiplier;
} }
} if (prefabDesc.isPowerGen || prefabDesc.isPowerExchanger || prefabDesc.isAccumulator)
private static void BoostPower(int id)
{
var prefabDesc = LDB.items.Select(id).prefabDesc;
if (prefabDesc.isPowerGen || prefabDesc.isPowerExchanger)
{ {
prefabDesc.genEnergyPerTick *= powerGenerationMultiplier; prefabDesc.genEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.useFuelPerTick *= powerFuelConsumptionMultiplier; prefabDesc.useFuelPerTick *= powerFuelConsumptionMultiplier;
@@ -103,13 +95,6 @@ public class Patch : BaseUnityPlugin
prefabDesc.idleEnergyPerTick *= powerGenerationMultiplier; prefabDesc.idleEnergyPerTick *= powerGenerationMultiplier;
prefabDesc.workEnergyPerTick *= powerGenerationMultiplier; prefabDesc.workEnergyPerTick *= powerGenerationMultiplier;
} }
if (prefabDesc.isPowerNode)
{
prefabDesc.powerConnectDistance =
Mathf.Floor(prefabDesc.powerConnectDistance) * prefabDesc.powerConnectDistance + 0.5f;
prefabDesc.powerCoverRadius =
Mathf.Floor(prefabDesc.powerCoverRadius) * prefabDesc.powerConnectDistance + 0.5f;
}
if (prefabDesc.isPowerExchanger) if (prefabDesc.isPowerExchanger)
{ {
prefabDesc.exchangeEnergyPerTick *= powerFuelConsumptionMultiplier; prefabDesc.exchangeEnergyPerTick *= powerFuelConsumptionMultiplier;
@@ -121,60 +106,13 @@ public class Patch : BaseUnityPlugin
prefabDesc.outputEnergyPerTick *= powerGenerationMultiplier; prefabDesc.outputEnergyPerTick *= powerGenerationMultiplier;
} }
} }
} if (prefabDesc.isPowerNode)
[HarmonyPostfix, HarmonyPriority(Priority.Last), HarmonyPatch(typeof(VFPreload), "InvokeOnLoadWorkEnded")]
private static void VFPreload_InvokeOnLoadWorkEnded_Postfix()
{ {
// Belts prefabDesc.powerConnectDistance =
LDB.items.Select(2001).prefabDesc.beltSpeed = (int)beltSpeed[0]; Mathf.Floor(prefabDesc.powerConnectDistance) * prefabDesc.powerConnectDistance + 0.5f;
LDB.items.Select(2002).prefabDesc.beltSpeed = (int)beltSpeed[1]; prefabDesc.powerCoverRadius =
LDB.items.Select(2003).prefabDesc.beltSpeed = (int)beltSpeed[2]; Mathf.Floor(prefabDesc.powerCoverRadius) * prefabDesc.powerConnectDistance + 0.5f;
}
// Sorters }
BoostSorter(2011);
BoostSorter(2012);
BoostSorter(2013);
// Smelters
BoostAssembler(2302);
BoostAssembler(2315);
// Assemblers
BoostAssembler(2303);
BoostAssembler(2304);
BoostAssembler(2305);
// Chemical Plants
BoostAssembler(2309);
BoostAssembler(2317);
// Refiner
BoostAssembler(2308);
// Collider
BoostAssembler(2310);
// Mining Machine
BoostMiner(2301);
// Advanced Mining Machine
BoostMiner(2316);
// Water Pump
BoostMiner(2306);
// Oil Extractor
BoostMiner(2307);
// Thermal
BoostPower(2204);
// Fusion
BoostPower(2211);
// Artificial Star
BoostPower(2210);
// Wind Turbine
BoostPower(2203);
// Solar Panel
BoostPower(2205);
// Geothermal
BoostPower(2213);
// Energy Exchanger
BoostPower(2209);
// Ray Receiver
BoostPower(2208);
} }
} }