1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-10 06:43:27 +08:00
This commit is contained in:
2023-10-08 22:55:12 +08:00
parent 74c3c57f13
commit 9d601e1cbc
2 changed files with 23 additions and 11 deletions

View File

@@ -584,7 +584,7 @@ public static class FactoryPatch
} }
} }
private static class BeltSignalGenerator public static class BeltSignalGenerator
{ {
private static Harmony _beltSignalPatch; private static Harmony _beltSignalPatch;
private static Dictionary<int, BeltSignal>[] _signalBelts; private static Dictionary<int, BeltSignal>[] _signalBelts;
@@ -826,6 +826,11 @@ public static class FactoryPatch
GetSignalBelts(factory)?.Remove(beltId); GetSignalBelts(factory)?.Remove(beltId);
} }
public static void RemovePlanetSignalBelts(int factory)
{
GetSignalBelts(factory)?.Clear();
}
private static void RemoveSignalBeltPortalEnd(int factory, int beltId) private static void RemoveSignalBeltPortalEnd(int factory, int beltId)
{ {
var v = ((long)factory << 32) | (uint)beltId; var v = ((long)factory << 32) | (uint)beltId;
@@ -843,6 +848,16 @@ public static class FactoryPatch
InitItemSources(); InitItemSources();
} }
[HarmonyPostfix]
[HarmonyPatch(typeof(PlanetFactory), nameof(PlanetFactory.Init))]
private static void PlanetFactory_Init_Postfix(PlanetFactory __instance)
{
if (BeltSignalGeneratorEnabled.Value)
{
RemovePlanetSignalBelts(__instance.index);
}
}
[HarmonyPrefix] [HarmonyPrefix]
[HarmonyPatch(typeof(CargoTraffic), nameof(CargoTraffic.RemoveBeltComponent))] [HarmonyPatch(typeof(CargoTraffic), nameof(CargoTraffic.RemoveBeltComponent))]
public static void CargoTraffic_RemoveBeltComponent_Prefix(int id) public static void CargoTraffic_RemoveBeltComponent_Prefix(int id)
@@ -963,6 +978,7 @@ public static class FactoryPatch
var productRegister = factoryProductionStat.productRegister; var productRegister = factoryProductionStat.productRegister;
var consumeRegister = factoryProductionStat.consumeRegister; var consumeRegister = factoryProductionStat.consumeRegister;
var countRecipe = BeltSignalCountRecipeEnabled.Value; var countRecipe = BeltSignalCountRecipeEnabled.Value;
var cargoTraffic = factory.cargoTraffic;
foreach (var pair in belts) foreach (var pair in belts)
{ {
var beltSignal = pair.Value; var beltSignal = pair.Value;
@@ -972,7 +988,6 @@ public static class FactoryPatch
case 404: case 404:
{ {
var beltId = pair.Key; var beltId = pair.Key;
var cargoTraffic = factory.cargoTraffic;
ref var belt = ref cargoTraffic.beltPool[beltId]; ref var belt = ref cargoTraffic.beltPool[beltId];
var cargoPath = cargoTraffic.GetCargoPath(belt.segPathId); var cargoPath = cargoTraffic.GetCargoPath(belt.segPathId);
int itemId; int itemId;
@@ -986,7 +1001,6 @@ public static class FactoryPatch
case 600: case 600:
{ {
if (!_portalTo.TryGetValue(beltSignal.SpeedLimit, out var set)) continue; if (!_portalTo.TryGetValue(beltSignal.SpeedLimit, out var set)) continue;
var cargoTraffic = factory.cargoTraffic;
var beltId = pair.Key; var beltId = pair.Key;
ref var belt = ref cargoTraffic.beltPool[beltId]; ref var belt = ref cargoTraffic.beltPool[beltId];
var cargoPath = cargoTraffic.GetCargoPath(belt.segPathId); var cargoPath = cargoTraffic.GetCargoPath(belt.segPathId);
@@ -1019,7 +1033,6 @@ public static class FactoryPatch
} }
var beltId = pair.Key; var beltId = pair.Key;
var cargoTraffic = factory.cargoTraffic;
ref var belt = ref cargoTraffic.beltPool[beltId]; ref var belt = ref cargoTraffic.beltPool[beltId];
var stack = beltSignal.Stack; var stack = beltSignal.Stack;
var inc = beltSignal.Inc; var inc = beltSignal.Inc;

View File

@@ -195,13 +195,8 @@ public static class PlanetFunctions
factory.blockContainer.RemoveMiniBlock(ed.mmblockId); factory.blockContainer.RemoveMiniBlock(ed.mmblockId);
} }
if (ed.audioId != 0) if (ed.audioId == 0) continue;
{ planet.audio?.RemoveAudioData(ed.audioId);
if (planet.audio != null)
{
planet.audio.RemoveAudioData(ed.audioId);
}
}
} }
var stationPool = factory.transport?.stationPool; var stationPool = factory.transport?.stationPool;
@@ -264,6 +259,10 @@ public static class PlanetFunctions
factory.transport = new PlanetTransport(GameMain.data, planet); factory.transport = new PlanetTransport(GameMain.data, planet);
factory.transport.Init(); factory.transport.Init();
factory.digitalSystem = new DigitalSystem(planet); factory.digitalSystem = new DigitalSystem(planet);
if (FactoryPatch.BeltSignalGeneratorEnabled.Value)
{
FactoryPatch.BeltSignalGenerator.RemovePlanetSignalBelts(factory.index);
}
//GameMain.data.statistics.production.CreateFactoryStat(index); //GameMain.data.statistics.production.CreateFactoryStat(index);
planet.LoadFactory(); planet.LoadFactory();
while (!planet.factoryLoaded) while (!planet.factoryLoaded)