private IEnumerator PostGame(bool passed) { gameState = GameState.PostGame; int endReason = EndReason.lose; //Determine why the level ended if (passed == true && objectives.AllObjectiveCompleted()) { endReason = EndReason.winner; } else if (passed == true && objectives.AnyObjectiveCompleted()) { endReason = EndReason.passed; } else if (exploded == true) { endReason = EndReason.explode; } else if (splash == true) { endReason = EndReason.drowned; } LevelEndInfo end = new LevelEndInfo(passed, endReason); end.level = LevelHandler.CurrentLevel; end.itemsSaved = getSavedCrates(); end.maxItems = getCrateAmount(); end.Reward = reward; end.levelTime = levelTimer; RubyScript ruby = GameObject.FindObjectOfType <RubyScript>(); if (ruby == null) { Debug.LogError("Ruby not found"); } else { end.rubyFound = ruby.found; end.sapphireFound = ruby.found && ruby.IsSapphire; } if (objectives == null) { Debug.LogError("Objectives not found"); } else if (passed == true) { end.obj1Passed = objectives.LevelObjective1(); end.obj2Passed = objectives.LevelObjective2(); end.obj3Passed = objectives.LevelObjective3(); } if (passed == true) { LevelHandler.CompleteLevel(end.level); FireworksController fw = GameObject.FindObjectOfType <FireworksController>(); if (!cheerOnce) { endCheer.PlaySound(); cheerOnce = true; } if (fw != null) { //fw.transform.position = GameObject.FindObjectOfType<Copter>().transform.position + Vector3.up * 3; fw.Launch(); } } if (!passed) { setResetButton(true); } float timer = resetCountdown; float deltaTime = Time.time; while (timer > 0) { timer -= (Time.time - deltaTime); deltaTime = Time.time; yield return(null); } if (SceneManager.GetActiveScene().name == "Tutorial00" && !passed) { GameManager.LoadLevel("IntroScreen"); } else { gameManager.loadMainMenu(true, end, 2); } }