Implement custom autosave

Because the built in one goes only as low as 10 min
I want 10 second
This commit is contained in:
2024-10-19 22:24:26 +02:00
parent 259446cfbe
commit b786897b9f
2 changed files with 19 additions and 2 deletions

View File

@@ -28,7 +28,7 @@ namespace CykaOfIndustry {
public static ConfigEntry<float> dumpDelayMultiplier;
public static ConfigEntry<float> transportSpeedMultiplier;
public static ConfigEntry<float> shipyardCargoMultiplier;
public static ConfigEntry<int> autosaveInterval;
public static ConfigEntry<bool> debugMode;
public void Awake() {
@@ -65,7 +65,8 @@ namespace CykaOfIndustry {
new ConfigDescription("Transport Speed Multiplier"));
shipyardCargoMultiplier = Config.Bind("General", "Shipyard Cargo Multiplier", 1f,
new ConfigDescription("Shipyard Cargo Multiplier"));
autosaveInterval = Config.Bind("General", "Autosave Interval", 1,
new ConfigDescription("Autosave Interval in minutes"));
debugMode = Config.Bind("General", "Debug Mode", false, new ConfigDescription("Debug Mode"));
// shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch();

View File

@@ -21,6 +21,7 @@ using Mafi.Core.Population;
using Mafi.Core.Ports.Io;
using Mafi.Core.Products;
using Mafi.Core.Prototypes;
using Mafi.Core.SaveGame;
using Mafi.Core.Terrain;
using Mafi.Core.Vehicles.Excavators;
using Mafi.Core.World.Entities;
@@ -504,6 +505,21 @@ namespace CykaOfIndustry {
Traverse.Create(__instance).Field("CargoCapacity").SetValue(new Quantity(
(int)(__instance.CargoCapacity.Value * Main.shipyardCargoMultiplier.Value)));
}
[HarmonyPostfix]
[HarmonyPatch(typeof(SaveManager), "isTimeForAutoSave")]
static void autosaveInterval(ref bool __result, SaveManager __instance) {
if (Main.autosaveInterval.Value <= 0) {
__result = false;
return;
}
var trav = Traverse.Create(__instance);
var lastSaveTime = trav.Field("m_lastSaveTime").GetValue<long>();
var num = (Environment.TickCount - lastSaveTime).Abs() / 1000L;
if (Main.debugMode.Value)
Console.WriteLine("IndustrialCyka: Autosave interval: {0}", num);
__result = num > Main.autosaveInterval.Value;
}
}
[HarmonyPatch(typeof(Excavator), "MineMixedAt")]