// Update is called once per frame private void Update() { //todo change stuff later to an observer pattern PlayerController playerController = m_player.GetComponent <PlayerController>(); CameraController cameraController = m_camera.GetComponent <CameraController>(); //check if the back button has been pressed if (Input.GetKeyDown(KeyCode.Escape)) { MemoryCard.LoadMenu(); } //has the player beaten the level / fallen outside the level / still playing if (playerController.isFinished()) { //remove player control because he has beaten the level p_levelControl.GetComponent <LevelTilt>().m_playerHasControl = false; //update the highscore if the player was faster if (p_timeInSeconds < p_bestTimeInSeconds || p_bestTimeInSeconds == 0) { MemoryCard.SaveHighscore(new Highscore(MemoryCard.GetScene(), p_timeInSeconds)); m_bestTime.text = p_timeInSeconds.ToString("f2"); } //start cameranimation once player is out of bounds if (playerController.isOutOfBounds()) { p_lookAtPosition.transform.position = new Vector3(m_endCamera, 0, 0); m_camera.GetComponent <CameraController>().m_lookAt = p_lookAtPosition.transform; m_camera.GetComponent <CameraController>().m_smoothTime = p_cameraSmoothTime * 4; if (m_camera.transform.position.x > m_endCamera / 2) { MemoryCard.LoadNextLevel(); } } } else if (playerController.isOutOfBounds()) { ResetLevel(); playerController.setOutOfBounds(false); } else { //start the timer once the player has control if (p_levelControl.GetComponent <LevelTilt>().m_playerHasControl) { p_timeInSeconds += Time.deltaTime; m_currentTime.text = p_timeInSeconds.ToString("f2"); } } }