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); } }
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); } }
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; } } } }
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(); } }
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(); }
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"); }