private void NewGameThenStart() { // Create new progression. playerProgress = new PlayerProgress(); // Create or replace old save. SaveLoadManager.SavePlayerProgress(playerProgress, saveSlotSelected); LoadWorldMap(); }
/// <summary> /// Store the current level progress and save it. /// </summary> /// <param name="feathersCollected"></param> /// <param name="itemsFound"></param> public void SaveLevelProgress(int feathersCollected, bool[] itemsFound, bool treasureFound) { // Debug. if (playerProgress == null) { return; } LevelProgress levelProgress = null; // Save found. Update for the best values. if (playerProgress.worldProgress[currentWorldIndex].finishedLevels.TryGetValue(currentLevelIndex, out levelProgress)) { levelProgress.feathersCollected = Mathf.Max(feathersCollected, levelProgress.feathersCollected); } // level finished for the first time, create and add new entry with the corect amount of exits and feathers collected. else { levelProgress = new LevelProgress(levelMgr.data.exitCount, feathersCollected); playerProgress.worldProgress[currentWorldIndex].finishedLevels.Add(currentLevelIndex, levelProgress); } // Update items : for (int i = 0; i < levelProgress.specialItemsFound.Length; i++) { // Don't update item if already found. if (levelProgress.specialItemsFound[i]) { continue; } // Update if item has been found. if (itemsFound[i]) { levelProgress.specialItemsFound[i] = true; // Sunflower seed obtained. if (i == 3) { playerProgress.worldProgress[currentWorldIndex].sunFlowerSeedCollected++; } } } // Update treasure if exist and hasn't already save. if (treasureFound && !levelProgress.treasureFound) { levelProgress.treasureFound = treasureFound; playerProgress.treasuresFound.Add(currentWorldIndex + "-" + currentLevelIndex, true); } // Update exit taken. levelProgress.exits[levelMgr.ExitTaken] = true; // Cumulate stats. playerProgress.deathCount += levelMgr.DeathCount; playerProgress.timePlayed += levelMgr.Timer; // TODO save best time on a specific level. // Save. SaveLoadManager.SavePlayerProgress(playerProgress, saveSlotSelected); }