Ejemplo n.º 1
0
    // 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); }
    }
Ejemplo n.º 2
0
 // 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();
 }
Ejemplo n.º 3
0
    // 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);
    }
Ejemplo n.º 4
0
    public void DeleteGarden(GardenSave save)
    {
        garden.DeleteGarden(save);
        UpdateSwapFiles();

        if (!garden.Loaded())
        {
            SwapToNew();
        }
    }
Ejemplo n.º 5
0
    // 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);
    }
Ejemplo n.º 6
0
    // 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;
    }
Ejemplo n.º 7
0
    // 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
        }
    }
Ejemplo n.º 8
0
 public void SwapGarden(GardenSave save)
 {
     garden.SetGardenFromSave(save);
     UpdateSwapFiles();
     SwapToMain();
 }