Пример #1
0
 private static bool SaveSim(WorldGenSettings settings, Data data, Action <OfflineWorldGen.ErrorInfo> error_cb)
 {
     try
     {
         Manager.Clear();
         SimSaveFileStructure simSaveFileStructure = new SimSaveFileStructure();
         for (int i = 0; i < data.overworldCells.Count; i++)
         {
             simSaveFileStructure.worldDetail.overworldCells.Add(new WorldDetailSave.OverworldCell(SettingsCache.GetCachedSubWorld(data.overworldCells[i].node.type).zoneType, data.overworldCells[i]));
         }
         simSaveFileStructure.worldDetail.globalWorldSeed       = data.globalWorldSeed;
         simSaveFileStructure.worldDetail.globalWorldLayoutSeed = data.globalWorldLayoutSeed;
         simSaveFileStructure.worldDetail.globalTerrainSeed     = data.globalTerrainSeed;
         simSaveFileStructure.worldDetail.globalNoiseSeed       = data.globalNoiseSeed;
         simSaveFileStructure.WidthInCells  = Grid.WidthInCells;
         simSaveFileStructure.HeightInCells = Grid.HeightInCells;
         using (MemoryStream memoryStream = new MemoryStream())
         {
             using (BinaryWriter writer = new BinaryWriter(memoryStream))
             {
                 Sim.Save(writer);
             }
             simSaveFileStructure.Sim = memoryStream.ToArray();
         }
         using (MemoryStream memoryStream2 = new MemoryStream())
         {
             using (BinaryWriter writer2 = new BinaryWriter(memoryStream2))
             {
                 try
                 {
                     Serializer.Serialize(simSaveFileStructure, writer2);
                 }
                 catch (Exception ex)
                 {
                     DebugUtil.LogErrorArgs("Couldn't serialize", ex.Message, ex.StackTrace);
                 }
             }
             using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(WorldGen.SIM_SAVE_FILENAME, FileMode.Create)))
             {
                 Manager.SerializeDirectory(binaryWriter);
                 binaryWriter.Write(memoryStream2.ToArray());
             }
         }
         return(true);
     }
     catch (Exception ex2)
     {
         error_cb(new OfflineWorldGen.ErrorInfo
         {
             errorDesc = string.Format(UI.FRONTEND.SUPPORTWARNINGS.SAVE_DIRECTORY_READ_ONLY, WorldGen.SIM_SAVE_FILENAME),
             exception = ex2
         });
         DebugUtil.LogErrorArgs("Couldn't write", ex2.Message, ex2.StackTrace);
         return(false);
     }
 }