private void Start() { bool anyLevelsCompleted = PlayerData .GetCompletionDatasWithType(LevelType.Enumerated) .Any(x => x.Completed); bool allLevelsCompleted = PlayerData .GetCompletionDatasWithType(LevelType.Enumerated) .All(x => x.Completed); LevelID firstIncompleteLevel = GetFirstIncompleteLevel(); // If all levels are completed then unlock free play mode if (allLevelsCompleted && !PlayerData.FreePlayUnlocked) { // Unlock free play mode PlayerData.FreePlayUnlocked = true; PlayerData.Save(); // Display a tutorial for free play tutorialManager.OpenTutorials(new TutorialData[] { freePlayTutorial }, true); } // Play button plays the first incomplete level, or goes to level selector if all are completed playButton.onClick.AddListener(() => { if (firstIncompleteLevel.IsValid) { GameplayManager.PlayLevel(firstIncompleteLevel); } else { LevelSelector.SelectLevelsWithType(LevelType.Enumerated); } }); // Level select button selects levels only if some have been completed levelSelectButton.interactable = anyLevelsCompleted; if (anyLevelsCompleted) { levelSelectButton.onClick.AddListener(() => LevelSelector.SelectLevelsWithType(LevelType.Enumerated)); } // Free play only unlocked if all levels are completed freePlayButton.interactable = allLevelsCompleted; if (allLevelsCompleted) { freePlayButton.onClick.AddListener(() => LevelSelector.SelectLevelsWithType(LevelType.FreePlay)); } // When delete data is confirmed, reload this scene deleteDataButton.OnConfirm.AddListener(() => SceneManager.LoadScene(SceneManager.GetActiveScene().name)); }