// Save this garden to a garden save file public void SaveGarden() { try { // 0: Get file path string saveFilePath = GetFilePath(gardenName, gardenId); // 1: Create save instance GardenSave save = CreateGardenSave(); // 2: Save file and close file stream BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(saveFilePath); bf.Serialize(file, save); Debug.Log("Garden " + gardenName + " saved to " + saveFilePath); file.Close(); // 2b: Save file as most recent file path FileStream rFile = File.Create(recentSaveFilePath); bf.Serialize(rFile, saveFilePath); Debug.Log("Recent garden's path saved to " + gardenName + " saved to " + recentSaveFilePath); rFile.Close(); // 3: Ending save // Post save operations if necessary } catch (System.Exception e) { Debug.LogError(e); } }
// Sets this garden from a garden save representation public void SetGardenFromSave(GardenSave save) { gardenName = save.gardenName; gardenId = save.gardenId; gardenBoard.SetVoxelMap(save.voxelMap); gardenLoaded = true; currentGardenText.text = "Current Garden: " + GetGardenTitle(); }
// Creates a garden save representation of this garden private GardenSave CreateGardenSave() { GardenSave save = new GardenSave(); save.gardenName = gardenName; save.gardenId = gardenId; save.voxelMap = gardenBoard.GetVoxelMap(); return(save); }
public void DeleteGarden(GardenSave save) { garden.DeleteGarden(save); UpdateSwapFiles(); if (!garden.Loaded()) { SwapToNew(); } }
// Get a list of all garden save files public List <GardenSave> GetAllGardenSaves() { DirectoryInfo info = new DirectoryInfo(Application.persistentDataPath); FileInfo[] files = info.GetFiles("garden_*.garden"); List <GardenSave> saves = new List <GardenSave>(); foreach (FileInfo fileInfo in files) { if (File.Exists(fileInfo.FullName)) { try { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(fileInfo.FullName, FileMode.Open); GardenSave save = (GardenSave)bf.Deserialize(file); file.Close(); saves.Add(save); } catch (System.Exception e) { Debug.LogError(e); } } } return(saves); }
// Load the garden from the most recent file, or create an empty garden public void TryInitialLoad() { // Try to find recent save file path if (File.Exists(recentSaveFilePath)) { try { BinaryFormatter bf = new BinaryFormatter(); FileStream rFile = File.Open(recentSaveFilePath, FileMode.Open); string saveFilePath = (string)bf.Deserialize(rFile); rFile.Close(); // Try to load recent save file if (File.Exists(saveFilePath)) { FileStream file = File.Open(saveFilePath, FileMode.Open); GardenSave save = (GardenSave)bf.Deserialize(file); file.Close(); SetGardenFromSave(save); return; } } catch (System.Exception e) { Debug.LogError(e); } } // If no recent file, try to find another file, and load the first List <GardenSave> saves = GetAllGardenSaves(); foreach (GardenSave save in saves) { SetGardenFromSave(save); return; } // If no garden files at all gardenLoaded = false; }
// Delete garden save file given garden save public void DeleteGarden(GardenSave save) { string filePath = GetFilePath(save.gardenName, save.gardenId); Debug.Log("Garden " + save.gardenName + " deleted from " + filePath); File.Delete(filePath); // Deleted current garden if (save.gardenName == gardenName && save.gardenId == gardenId) { // Try to load next List <GardenSave> saves = GetAllGardenSaves(); foreach (GardenSave fileSave in saves) { SetGardenFromSave(fileSave); return; } // Cant load next, no garden gardenLoaded = false; // also clear garden } }
public void SwapGarden(GardenSave save) { garden.SetGardenFromSave(save); UpdateSwapFiles(); SwapToMain(); }