diff --git a/TerraformingShared/SaveLoad/SaveLoadExtensions.cs b/TerraformingShared/SaveLoad/SaveLoadExtensions.cs new file mode 100644 index 0000000..114f343 --- /dev/null +++ b/TerraformingShared/SaveLoad/SaveLoadExtensions.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace TerraformingShared.SaveLoad +{ + static class SaveLoadExtensions + { + public const string IndicationFileName = ".saved"; + } +} diff --git a/TerraformingShared/SaveLoad/SaveLoadManagerPatches.cs b/TerraformingShared/SaveLoad/SaveLoadManagerPatches.cs index 653b773..ab995ef 100644 --- a/TerraformingShared/SaveLoad/SaveLoadManagerPatches.cs +++ b/TerraformingShared/SaveLoad/SaveLoadManagerPatches.cs @@ -2,16 +2,18 @@ using System; using System.Collections; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Reflection; using System.Text; using Terraforming.WorldStreaming; +using TerraformingShared.SaveLoad; using UnityEngine; namespace Terraforming.SaveLoad.SaveLoadManagerPatches { [HarmonyPatch(typeof(SaveLoadManager))] - [HarmonyPatch("SaveToTemporaryStorageAsync")] + [HarmonyPatch(nameof(SaveLoadManager.SaveToTemporaryStorageAsync))] [HarmonyPatch(new Type[] { typeof(IOut), typeof(Texture2D) })] static class SaveToTemporaryStorageAsyncPatch { @@ -34,10 +36,25 @@ static IEnumerator PostfixAsync(SaveLoadManager saveLoadManager, IEnumerator ori } octreesStreamer.WriteBatchOctrees(); + WriteOctreesIndicationFile(); + LargeWorldStreamer.main.frozen = false; saveLoadManager.isSaving = false; yield break; } + + private static void WriteOctreesIndicationFile() + { + var saveFilePath = LargeWorldStreamer.main.tmpPathPrefix; + var compiledOctreesPath = Path.Combine(saveFilePath, BatchOctreesStreamerExtensions.CompiledOctreesDirName); + var indicationFilePath = Path.Combine(compiledOctreesPath, SaveLoadExtensions.IndicationFileName); + + if (!File.Exists(indicationFilePath)) + { + Directory.CreateDirectory(compiledOctreesPath); + File.WriteAllBytes(indicationFilePath, new byte[0]); + } + } } } diff --git a/TerraformingShared/SaveLoad/UserStoragePCPatches.cs b/TerraformingShared/SaveLoad/UserStoragePCPatches.cs index eacb493..8a8257f 100644 --- a/TerraformingShared/SaveLoad/UserStoragePCPatches.cs +++ b/TerraformingShared/SaveLoad/UserStoragePCPatches.cs @@ -16,112 +16,6 @@ namespace TerraformingShared.SaveLoad [HarmonyPatch(typeof(UserStoragePC))] static class UserStoragePCPatches { - [HarmonyPatch(nameof(UserStoragePC.UpgradeSaveData))] - [HarmonyTranspiler] - static IEnumerable RemoveDeletingOctrees(IEnumerable instructions, ILGenerator generator, MethodBase originalMethod) - { - var codeMatcherCursor = new CodeMatcher(instructions); - - Action[] patchers = - { - AssignEmptyArrayToOctreesLocal - }; - - try - { - foreach (var patcher in patchers) - { - patcher.Invoke(codeMatcherCursor, generator); - } - } - catch (Exception ex) - { - Logger.Error(ex.ToString()); - - codeMatcherCursor.ReportFailure(originalMethod, Logger.Error); - - return instructions; - } - - return codeMatcherCursor.InstructionEnumeration(); - } - - private static void AssignEmptyArrayToOctreesLocal(CodeMatcher codeCursor, ILGenerator generator) - { - List