void UpdateState() { switch (currentState) { case LevelStates.Introduction: { break; } case LevelStates.TestSpawn: { break; } case LevelStates.Phasing: { //If we dont have a current phase, then we will assign it one from the list! if (!currentPhase) { currentPhase = Instantiate(PhaseTypes[currentPhaseIndex]) as BasePhase; //Check which phase we are on. // if(currentPhaseIndex == 5) if (currentPhase.TransitionLevel) { //GameObjectTracker.instance.vWorld.GotoHeavyRoom(); GameObjectTracker.instance.vWorld.GotoNextRoom(); return; } } //If we have finished the phase if (currentPhase.IsComplted()) { EntityFactory.CannonTypes completedCannon = EntityFactory.CannonTypes.Empty; //Find out what cannon we are using and set the phase. if (PandoraBox.Bot_01.IsCannonAttached()) { completedCannon = PandoraBox.Bot_01.GetCannon().CannonTypeInfo; } //Handle timing and rewards //gameRewards.DisplayFruit(currentPhaseIndex,currentPhase.GetPhaseTime()); GameObjectTracker.GetGOT()._PlayerData.PunchPhaseTime(currentPhase.GetPhaseTime(), completedCannon); BreathlessStats.AddStatistics(currentPhase.Data.PhaseStatistics); //Stop the music fo the current phase. //currentPhase.StopMusic(); //Increment the phase index. currentPhaseIndex++; //Delete the current phase. Destroy(currentPhase.gameObject); } break; } case LevelStates.Dead: { //Update the timer. localTimer += Time.deltaTime; if (localTimer > 0.5f) { //Go to game over state. currentState = LevelStates.GameOver; //Go back to regular motion. //PandoraBox.SetSlowMotion(false); //Reset the local timer. localTimer = 0.0f; //Set to the game over timer; PandoraBox.Camera_01.SetGameOver(true); //Tell the HUD to activate Game Over //PandoraBox.OnScreenControls.ActivateGameOver(); ActivityManager.Instance.PushActivity(ActivityManager.ManagerActivities.GameOver); //Play the game over music. //AudioPlayer.GetPlayer().PlayAudioClip(GameOverMusic); AudioPlayer.GetPlayer().PlaySound(GameOverIntro); //Set the timer for gameover music //musictimer = Time.time; //Lets apply the earnings of the phases here. GameObjectTracker.GetGOT()._PlayerData.SaveAllData(); } break; } case LevelStates.GameOver: { //Update the timer to go into review mode. localTimer += Time.deltaTime; if (localTimer > 0.3f) { PandoraBox.SetSlowMotion(false); currentState = LevelStates.Review; } break; } case LevelStates.Review: { //W do nothing here yet. // if(!audio.isPlaying) // { // audio.clip = GameReviewMusic; // audio.loop = true; // audio.Play(); // // //GameReviewMusic. // } //If enough time has passed since the time stamp. if ((Time.time - musictimer) > GameOverMusic.length) { AudioPlayer.GetPlayer().PlayAudioClip(GameReviewMusic); } break; } default: { print("There is no Game State"); return; } } }
// Update is called once per frame void Update() { if (!started && ActivityManager.Instance != null) { ActivityManager.Instance.PushActivity(ActivityManager.ManagerActivities.Begin); started = true; } // if(!started && opentimer > 2.0f) // { // if(ToyBox.GetPandora()) // { // ToyBox.GetPandora().TimePaused = false; // ToyBox.GetPandora().SceneBallStack.NumberBalls = 30; // started = true; // // //Display the Hud // ActivityManager.Instance.DrawCurtain(); // // curtainOpen = true; // ActivityManager.Instance.ToggleHud(true); // } // // } // // opentimer += Time.fixedDeltaTime; //State machine update. UpdateState(); //we check if we are not in the game over state so we only execute this code once. if (!gameover) { //We always check see if the command center is destroyed. then we give a game over. if (PandoraBox.CommandCenter_01.IsDestroyed()) { //Change the current state to game over state and start the timer. currentState = LevelStates.Dead; localTimer = 0.0f; //Set local bool gameover = true; //Stop the current phase stat and add to the gamerun stat. currentPhase.Data.PhaseStatistics.StopTimer(); //GameObjectTracker.GetGOT().gameRunStatistics.AddStatistics(currentPhase.Data.PhaseStatistics); BreathlessStats.AddStatistics(currentPhase.Data.PhaseStatistics); //Stop the timer for the game statistics and pass in teh locally tracked stats. GameObjectTracker.GetGOT().StopGame(BreathlessStats); //Stop the music for the effect when the command center is destroyed! currentPhase.StopMusic(); //Play the game over music. AudioPlayer.GetPlayer().PlayAudioClip(GameOverMusic); musictimer = Time.time; //Set the game to slow motion when we are dead. PandoraBox.SetSlowMotion(true); //Set the death camera PandoraBox.Camera_01.SetDie(PandoraBox.CommandCenter_01.GetDeathObject(), true); //Clear the phases and stuff.. Clear(); } } }