public void SetData(SaveMetadata sf)
    {
        this.saveFile           = sf;
        this.txtSaveTime.text   = string.Format("Last Saved: {0}", sf.SaveTime);
        this.txtTimePlayed.text = string.Format("Time Played: {0:d2}:{1:d2}:{2:d2}", sf.TimePlayed.Hours, sf.TimePlayed.Minutes, sf.TimePlayed.Seconds);
        this.txtLocation.text   = string.Format("Location: {0}", sf.Location);
        this.txtNumSaves.text   = string.Format("# Saves: {0}", sf.NumberOfSaves);
        this.txtPlayerName.text = string.Format("Name: {0}", sf.PlayerName);
        this.txtLevel.text      = string.Format("Level: {0}", sf.PlayerLevel);
        this.txtHP.text         = string.Format("HP: {0}/{1}", sf.PlayerHP, sf.PlayerMaxHP);
        this.btnSave.SetActive(this.canSave);
        this.btnLoad.SetActive(true);
        this.btnDelete.SetActive(true);

        Texture2D texture = this.LoadScreenshot(sf.Index);

        if (texture != null)
        {
            this.imgScreenshot.gameObject.SetActive(true);
            this.DestroySprite();
            this.imgScreenshot.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
        }
        else
        {
            this.imgScreenshot.gameObject.SetActive(false);
        }
    }
Exemple #2
0
        public static SaveMetadata GetSaveMetadata(BinaryFormatter formatter = null)
        {
            if (Application.platform == RuntimePlatform.WebGLPlayer)
            {
                Debug.LogError("Platform not supported: " + Application.platform.ToString());
                return(null);
            }
            else
            {
                if (!Directory.Exists(SAVE_DIR))
                {
                    Directory.CreateDirectory(SAVE_DIR);
                }

                SaveMetadata saveMetadata = new SaveMetadata();

                string path = SAVE_DIR + "save_metadata" + SAVEMETADATA_FILE_EXT;
                if (File.Exists(path))
                {
                    if (formatter == null)
                    {
                        formatter = BinaryFormat.Formatter;
                    }

                    FileStream stream = new FileStream(path, FileMode.Open);
                    saveMetadata = formatter.Deserialize(stream) as SaveMetadata;
                    stream.Close();
                }

                return(saveMetadata);
            }
        }
Exemple #3
0
 internal void SetData(SaveMetadata sf)
 {
     this.saveFile         = sf;
     this.txtSaveTime.text = sf.SaveTime.ToString();
     this.txtLevel.text    = string.Format("Lvl:{0}", sf.PlayerLevel);
     this.txtLocation.text = sf.Location;
 }
 public void AddOrReplaceMetadata(SaveMetadata data)
 {
     if (data != null)
     {
         if (data.Index == 0)
         {
             if (this.metadata.Count > 0)
             {
                 data.Index = this.metadata.Max(x => x.Index) + 1;
             }
             else
             {
                 data.Index = 1;
             }
             this.metadata.Add(data);
         }
         else
         {
             SaveMetadata existingdata = this.metadata.FirstOrDefault(x => x.Index == data.Index);
             if (existingdata != null)
             {
                 existingdata.Location      = data.Location;
                 existingdata.NumberOfSaves = data.NumberOfSaves;
                 existingdata.SaveTime      = data.SaveTime;
                 existingdata.TimePlayed    = data.TimePlayed;
             }
         }
     }
 }
Exemple #5
0
        public static void Delete(string name, BinaryFormatter formatter = null)
        {
            string saveDataPath = SAVE_DIR + name + SAVE_FILE_EXT;

            if (File.Exists(saveDataPath))
            {
                string saveMetadataPath = SAVE_DIR + "save_metadata" + SAVEMETADATA_FILE_EXT;
                if (File.Exists(saveMetadataPath))
                {
                    if (formatter == null)
                    {
                        formatter = BinaryFormat.Formatter;
                    }
                    FileStream   stream       = new FileStream(saveMetadataPath, FileMode.Open);
                    SaveMetadata saveMetadata = formatter.Deserialize(stream) as SaveMetadata;
                    stream.Close();

                    if (saveMetadata.fileNames.Contains(name))
                    {
                        saveMetadata.fileNames.Remove(name);
                    }

                    if (saveMetadata.lastSave.Equals(name))
                    {
                        saveMetadata.lastSave = null;
                    }

                    FileStream stream2 = new FileStream(saveMetadataPath, FileMode.Create);
                    formatter.Serialize(stream2, saveMetadata);
                    stream2.Close();
                }

                File.Delete(saveDataPath);
            }
        }
 public void Delete(SaveMetadata meta)
 {
     if (this.metadata.Contains(meta))
     {
         this.metadata.Remove(meta);
         this.SaveMetadata();
     }
 }
Exemple #7
0
        GameObject ConstructSingleLoadGameOption(SaveMetadata meta)
        {
            var rootGameobject = Instantiate(SaveGameSelectionPrefab);
            var controller     = rootGameobject.GetComponent <SaveGameSelectionController>();

            controller.metadata = meta;
            controller.Start();
            return(rootGameobject);
        }
 // updating the metadata when saving from a loaded save.
 private void UpdateMetadataFromCurrent(SaveMetadata meta)
 {
     meta.Location    = this.AccessedSavePoint.LocationName;
     meta.TimePlayed += DateTime.Now - Player.Instance.LoadedSaveData.SaveTime;
     meta.SaveTime    = DateTime.Now;
     meta.PlayerHP    = Player.Instance.HP;
     meta.PlayerLevel = Player.Instance.Level;
     meta.PlayerMaxHP = Player.Instance.MaxHP;
     meta.PlayerName  = Player.Instance.CharacterName;
 }
    public void OnNewSaveFile()
    {
        SaveFile     saveFile = this.CreateFileFromCurrent();
        SaveMetadata saveMeta = this.CreateMetadataFromCurrent();

        this.saveIndexManager.AddOrReplaceMetadata(saveMeta);
        this.saveManager.Save(saveFile, saveMeta.Index);
        this.saveIndexManager.SaveMetadata();
        this.RenameScreenshot(saveMeta.Index);
        ScreenManager.Instance.CloseSaveScreen();
    }
Exemple #10
0
        public static void Save <T>(T saveData, BinaryFormatter formatter = null) where T : SaveData
        {
            if (Application.platform == RuntimePlatform.WebGLPlayer)
            {
                Debug.LogError("Platform not supported: " + Application.platform.ToString());
                return;
            }
            else
            {
                if (!Directory.Exists(SAVE_DIR))
                {
                    Directory.CreateDirectory(SAVE_DIR);
                }

                string savePath = SAVE_DIR + saveData.fileName + SAVE_FILE_EXT;

                if (formatter == null)
                {
                    formatter = BinaryFormat.Formatter;
                }

                FileStream stream = new FileStream(savePath, FileMode.Create);
                formatter.Serialize(stream, saveData);
                stream.Close();

                string saveMetadataPath = SAVE_DIR + "save_metadata" + SAVEMETADATA_FILE_EXT;

                SaveMetadata saveMetadata;
                if (File.Exists(saveMetadataPath))
                {
                    FileStream stream2 = new FileStream(saveMetadataPath, FileMode.Open);
                    saveMetadata = formatter.Deserialize(stream2) as SaveMetadata;
                    stream2.Close();
                }
                else
                {
                    saveMetadata = new SaveMetadata();
                    FileStream stream3 = new FileStream(saveMetadataPath, FileMode.Create);
                    formatter.Serialize(stream3, saveMetadata);
                    stream3.Close();
                }

                if (!saveMetadata.fileNames.Contains(saveData.fileName))
                {
                    saveMetadata.fileNames.Add(saveData.fileName);
                }

                saveMetadata.lastSave = saveData.fileName;

                FileStream stream4 = new FileStream(saveMetadataPath, FileMode.Create);
                formatter.Serialize(stream4, saveMetadata);
                stream4.Close();
            }
        }
    private void DetailController_Save(SaveMetadata saveMeta)
    {
        SaveFile saveFile = CreateFileFromCurrent();

        this.saveManager.Save(saveFile, saveMeta.Index);
        this.UpdateMetadataFromCurrent(saveMeta);
        saveMeta.NumberOfSaves++;
        this.saveIndexManager.SaveMetadata();
        this.RenameScreenshot(saveMeta.Index);
        ScreenManager.Instance.CloseSaveScreen();
        HUDManager.Instance.ShowNotification("Game Saved");
    }
 public void Clear()
 {
     this.saveFile           = null;
     this.txtSaveTime.text   = "";
     this.txtTimePlayed.text = "";
     this.txtLocation.text   = "";
     this.txtNumSaves.text   = "";
     this.txtPlayerName.text = "";
     this.txtLevel.text      = "";
     this.txtHP.text         = "";
     this.btnSave.SetActive(false);
     this.btnLoad.SetActive(false);
     this.btnDelete.SetActive(false);
     this.DestroySprite();
     this.imgScreenshot.gameObject.SetActive(false);
 }
 private void DetailController_Delete(SaveMetadata saveMeta)
 {
     if (this.saveManager.DeleteFile(saveMeta.Index))
     {
         this.saveIndexManager.Delete(saveMeta);
         foreach (Transform t in this.saveListPanel.transform)
         {
             SaveListItemController slic = t.GetComponent <SaveListItemController>();
             if (slic != null && slic.SaveFile == saveMeta)
             {
                 GameObject.Destroy(t.gameObject);
                 break;
             }
         }
         this.detailController.Clear();
     }
     this.StartCoroutine(this.WaitAndSelectFirst());
 }
    private void LoadFromSave(SaveMetadata meta)
    {
        SaveFile saveFile = this.saveManager.Load(meta.Index);

        Player.Instance.LoadedSaveData = meta;
        Player.Instance.MovementController.SetForward(saveFile.PlayerData.Forward);
        Player.Instance.transform.position = saveFile.PlayerData.Position;
        Player.Instance.HP            = meta.PlayerHP;
        Player.Instance.Level         = meta.PlayerLevel;
        Player.Instance.MaxHP         = meta.PlayerMaxHP;
        Player.Instance.CharacterName = meta.PlayerName;

        if (saveFile.PlayerData.Inventory != null)
        {
            Player.Instance.Inventory = saveFile.PlayerData.Inventory;
        }
        if (saveFile.PlayerData.Spells != null)
        {
            Player.Instance.Inventory = saveFile.PlayerData.Spells;
        }
    }
        public async Task SaveAsync()
        {
            working           = true;
            this.savePosition = resolveSavePos(this.saveFile.id);
            var saveSize = ceras.Serialize <SaveFile>(this.saveFile, ref saveBuffer);
            var saveFile = File.OpenWrite(Path.Combine(savePosition, SavefileFilename));
            await saveFile.WriteAsync(saveBuffer, 0, saveSize);

            saveFile.Close();

            SaveMetadata metadata = this.saveFile.Metadata;

            metadata.saveTime = DateTime.Now;
            var metaSize = ceras.Serialize <SaveMetadata>(metadata, ref saveBuffer);
            var metaFile = File.OpenWrite(Path.Combine(savePosition, MetadataFilename));
            await metaFile.WriteAsync(saveBuffer, 0, metaSize);

            metaFile.Close();

            Debug.Log($"Successfully saved SaveFile#{this.saveFile.id}. Save file size {saveSize}, metadata file size {metaSize}.");

            working = false;
        }
 private void DetailController_Load(SaveMetadata saveMeta)
 {
     this.LoadFromSave(saveMeta);
     ScreenManager.Instance.CloseSaveScreen();
     HUDManager.Instance.ShowNotification("Game Loaded");
 }