1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2026-02-04 19:42:17 +08:00

CheatEnabler v2.3.30

This commit is contained in:
2025-04-25 17:50:52 +08:00
parent 8362fcf546
commit 950bde3464
11 changed files with 103 additions and 83 deletions

View File

@@ -37,7 +37,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
OverclockSilo.Enable(OverclockSiloEnabled.Value);
Enable(true);
}
public static void Uninit()
{
Enable(false);
@@ -48,7 +48,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
OverclockEjector.Enable(false);
OverclockSilo.Enable(false);
}
[HarmonyTranspiler]
[HarmonyPatch(typeof(DysonNode), nameof(DysonNode.OrderConstructCp))]
private static IEnumerable<CodeInstruction> DysonNode_OrderConstructCp_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
@@ -88,7 +88,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
private static long _sailLifeTime;
private static DysonSailCache[][] _sailsCache;
private static int[] _sailsCacheLen, _sailsCacheCapacity;
private struct DysonSailCache
{
public DysonSail Sail;
@@ -136,7 +136,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
Array.Clear(_sailsCacheLen, 0, starCount);
Array.Clear(_sailsCacheCapacity, 0, starCount);
}
private static void SetSailsCacheCapacity(int index, int capacity)
{
var newCache = new DysonSailCache[capacity];
@@ -164,7 +164,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
UpdateSailLifeTime();
}
}
[HarmonyTranspiler]
[HarmonyPatch(typeof(EjectorComponent), nameof(EjectorComponent.InternalUpdate))]
private static IEnumerable<CodeInstruction> EjectorComponent_InternalUpdate_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
@@ -280,7 +280,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
}
}
}
private class SkipAbsorbPatch: PatchImpl<SkipAbsorbPatch>
{
protected override void OnEnable()
@@ -319,12 +319,12 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
new CodeInstruction(OpCodes.Ldc_I4_1),
new CodeInstruction(OpCodes.Add),
new CodeInstruction(OpCodes.Stind_I4),
// this.RemoveSolarSail(index);
new CodeInstruction(OpCodes.Ldarg_0).WithLabels(label1),
new CodeInstruction(OpCodes.Ldloc_1),
new CodeInstruction(OpCodes.Call, AccessTools.Method(typeof(DysonSwarm), nameof(DysonSwarm.RemoveSolarSail))),
// return false;
new CodeInstruction(OpCodes.Ldc_I4_1),
new CodeInstruction(OpCodes.Ret)
@@ -332,7 +332,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
return matcher.InstructionEnumeration();
}
}
private class QuickAbsorbPatch: PatchImpl<QuickAbsorbPatch>
{
protected override void OnEnable()
@@ -363,7 +363,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
/* Insert a RETURN before old absorption functions */
return matcher.InstructionEnumeration();
}
private static void DoAbsorb(DysonSphereLayer layer, long gameTick)
{
var nodeCount = layer.nodeCursor - 1;
@@ -383,7 +383,7 @@ public class DysonSpherePatch: PatchImpl<DysonSpherePatch>
}
}
}
private class EjectAnywayPatch: PatchImpl<EjectAnywayPatch>
{
[HarmonyTranspiler]

View File

@@ -122,7 +122,7 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
_beltIds ??= [..LDB.items.dataArray.Where(i => i.prefabDesc.isBelt).Select(i => i.ID)];
}
public static void OnUpdate()
public static void OnInputUpdate()
{
if (_noConditionKey.keyValue)
{
@@ -154,43 +154,32 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
public static void ArrivePlanet(PlanetFactory factory)
{
if (factory.prebuildCount <= 0) return;
var imm = ImmediateEnabled.Value;
var architect = ArchitectModeEnabled.Value;
if ((!imm && !architect) || GameMain.gameScenario == null) return;
var prebuilds = factory.prebuildPool;
var anyBelt = false;
if (imm)
{
var anyBelt = false;
var anyBuilt = false;
factory.BeginFlattenTerrain();
factory.cargoTraffic._batch_buffer_no_refresh = true;
}
for (var i = factory.prebuildCursor - 1; i > 0; i--)
{
if (prebuilds[i].id != i) continue;
if (prebuilds[i].itemRequired > 0)
PlanetFactory.batchBuild = true;
for (var i = factory.prebuildCursor - 1; i > 0; i--)
{
if (!architect) continue;
prebuilds[i].itemRequired = 0;
if (imm)
ref var pb = ref prebuilds[i];
if (pb.id != i || pb.isDestroyed) continue;
if (pb.itemRequired > 0)
{
anyBelt = anyBelt || _beltIds.Contains(prebuilds[i].protoId);
factory.BuildFinally(GameMain.mainPlayer, i, false);
if (!architect) continue;
pb.itemRequired = 0;
}
else
factory.AlterPrebuildModelState(i);
anyBelt = anyBelt || _beltIds.Contains(pb.protoId);
factory.BuildFinally(GameMain.mainPlayer, i, false);
anyBuilt = true;
}
else
{
if (imm)
{
anyBelt = anyBelt || _beltIds.Contains(prebuilds[i].protoId);
factory.BuildFinally(GameMain.mainPlayer, i, false);
}
}
}
if (imm)
{
PlanetFactory.batchBuild = false;
if (anyBelt)
{
factory.cargoTraffic.RefreshBeltBatchesBuffers();
@@ -198,6 +187,21 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
}
factory.cargoTraffic._batch_buffer_no_refresh = false;
factory.EndFlattenTerrain();
if (anyBuilt)
{
factory.planet.physics?.raycastLogic?.NotifyBatchObjectRemove();
factory.planet.audio?.SetPlanetAudioDirty();
}
}
else if (architect)
{
for (var i = factory.prebuildCursor - 1; i > 0; i--)
{
ref var pb = ref prebuilds[i];
if (pb.id != i || pb.isDestroyed || pb.itemRequired == 0) continue;
pb.itemRequired = 0;
factory.AlterPrebuildModelState(i);
}
}
}
@@ -214,6 +218,7 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
private static void GameMain_Begin_Postfix_For_ImmBuild()
{
if (DSPGame.IsMenuDemo) return;
var factory = GameMain.mainPlayer?.factory;
if (factory != null)
{
@@ -752,6 +757,7 @@ public class FactoryPatch: PatchImpl<FactoryPatch>
private static void GameMain_Begin_Postfix()
{
if (DSPGame.IsMenuDemo) return;
if (BeltSignalGeneratorEnabled.Value) InitSignalBelts();
InitItemSources();
}