public static void TrySaveLevelData(int levelIndex, UInt32 newScore, bool won) { LevelsSavedData loadedLevelsSavedData = LoadLevelsSavedData();//new LevelsSavedData.SavedLevelData loadedLevelData = loadedLevelsSavedData.savedLevelsData[levelIndex]; if (loadedLevelData.state == LevelStates.UNTOUCHED) { loadedLevelData.score = newScore; loadedLevelData.state = (won ? LevelStates.WON_ON_FIRST_TRY : LevelStates.LOST_ON_FIRST_TRY); SaveLevelsData(loadedLevelsSavedData); Debug.Log("You " + (won? "won ":"lost ") + "on your first try!"); } else { UInt32 oldScore = loadedLevelData.score; if (oldScore < newScore) { loadedLevelData.score = newScore; Debug.Log(oldScore + " is smaller than " + newScore + ". Saving!"); SaveLevelsData(loadedLevelsSavedData); } else { Debug.Log(oldScore + " is not smaller than " + newScore + ". No need to save"); } } }
public static void SaveLevelsData(LevelsSavedData savedData) { string fileName = BuildLevelsSaveFileName(); if (!File.Exists(fileName)) { Directory.CreateDirectory(Path.GetDirectoryName(fileName)); } BinaryFormatter BF = new BinaryFormatter(); FileStream fileStream = File.Open(fileName, FileMode.OpenOrCreate); BF.Serialize(fileStream, savedData); Debug.Log("Saving to " + fileName); fileStream.Close(); }
public static LevelsSavedData LoadLevelsSavedData() { string fileName = BuildLevelsSaveFileName(); if (File.Exists(fileName)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream = File.Open(fileName, FileMode.Open); LevelsSavedData savedData = new LevelsSavedData(); savedData = (LevelsSavedData)binaryFormatter.Deserialize(fileStream); fileStream.Close(); Debug.Log("Loading from " + fileName); return(savedData); } else { return(new LevelsSavedData(LevelsManager.instance.NumberOfLevels));//TODO: Should not stay hardcoded... } // return null; }