Files
Magical-Jumping-Bean/Assets/Scripts/PauseMenu.cs
T

285 lines
8.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
using UnityEngine.EventSystems;
public class PauseMenu : MonoBehaviour
{
public static bool GameIsPaused = false;
public static bool GameIsOver = false;
public GameObject pauseMenuUI;
public GameObject gameOverUI;
public TextMeshProUGUI ScoreText;
public TextMeshProUGUI TimeText;
public TextMeshProUGUI LivesText;
public TextMeshProUGUI HighScoreText;
public TextMeshProUGUI HighTimeText;
public TextMeshProUGUI CongratsText;
public GameObject pauseFirstButton;
public GameObject gameOverFirstButton;
public AudioSource music;
private bool highscore = false;
private int gameOver = 0;
// Update is called once per frame
void Update()
{
if(SceneManager.GetActiveScene().name == "Floor Level")
{
ScoreText.text = "LEVEL: " + FloorLevel.escalation + "-" + FloorLevel.level;
LivesText.text = "LIVES: " + PlayerController.shownLives;
}
if(SceneManager.GetActiveScene().name == "Waypoint Race")
{
ScoreText.text = "LEVEL: " + (WaypointRace.size - 1) + "-" + WaypointRace.level;
TimeText.text = "TIME: " + Mathf.Round((WaypointRace.countdown + WaypointRace.completionTime) - Time.time);
}
if(SceneManager.GetActiveScene().name == "Infinity Runner")
{
ScoreText.text = "LEVEL: " + InfinityRunner.escalation + "-" + InfinityRunner.level;
LivesText.text = "LIVES: " + PlayerController.shownLives;
}
if(Input.GetButtonDown("Pause"))
{
if(GameIsPaused)
{
Resume();
} else {
Pause();
}
}
if(GameIsOver)
{
GameOver();
if(gameOver == 0)
{
EventSystem.current.SetSelectedGameObject(null);
EventSystem.current.SetSelectedGameObject(gameOverFirstButton);
}
gameOver++;
}
}
public void Resume()
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
pauseMenuUI.SetActive(false);
gameOverUI.SetActive(false);
Time.timeScale = 1f;
GameIsPaused = false;
GameIsOver = false;
music.Play();
}
void Pause()
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
pauseMenuUI.SetActive(true);
Time.timeScale = 0f;
GameIsPaused = true;
EventSystem.current.SetSelectedGameObject(null);
EventSystem.current.SetSelectedGameObject(pauseFirstButton);
music.Pause();
}
void GameOver()
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
gameOverUI.SetActive(true);
Time.timeScale = 0f;
GameIsPaused = true;
music.Pause();
if(FloorLevel.gameOver == true)
{
ScoreText.text = "LEVEL: " + FloorLevel.escalation + "-" + FloorLevel.level;
TimeText.text = "TIME: " + Mathf.Round(FloorLevel.fullTime);
if(FloorLevel.escalation > PlayerPrefs.GetInt("ObstacleHighFloor") ||
(FloorLevel.escalation == PlayerPrefs.GetInt("ObstacleHighFloor") &&
FloorLevel.level >= PlayerPrefs.GetInt("ObstacleHighLevel")))
{
if(FloorLevel.escalation > PlayerPrefs.GetInt("ObstacleHighFloor") ||
FloorLevel.level > PlayerPrefs.GetInt("ObstacleHighLevel") ||
(FloorLevel.level == PlayerPrefs.GetInt("ObstacleHighLevel") &&
Mathf.Round(FloorLevel.fullTime) < PlayerPrefs.GetFloat("ObstacleHighTime")))
{
PlayerPrefs.SetInt("ObstacleHighFloor", FloorLevel.escalation);
PlayerPrefs.SetInt("ObstacleHighLevel", FloorLevel.level);
PlayerPrefs.SetFloat("ObstacleHighTime", Mathf.Round(FloorLevel.fullTime));
highscore = true;
}
}
if(highscore)
{
CongratsText.text = "NEW" + "\n" + "HIGH SCORE!" + "\n" + "CONGRATS!";
} else {
CongratsText.text = "TRY AGAIN!";
}
HighScoreText.text = "HIGH SCORE: " + PlayerPrefs.GetInt("ObstacleHighFloor")
+ "-" + PlayerPrefs.GetInt("ObstacleHighLevel");
HighTimeText.text = "HIGH SCORE TIME: " + Mathf.Round(PlayerPrefs.GetFloat("ObstacleHighTime"));
} else if(WaypointRace.gameOver == true)
{
ScoreText.text = "LEVEL: " + (WaypointRace.size - 1) + "-" + WaypointRace.level;
TimeText.text = "TIME: " + Mathf.Round(WaypointRace.fullTime);
if((WaypointRace.size - 1) > PlayerPrefs.GetInt("WaypointHighSize") ||
((WaypointRace.size - 1) == PlayerPrefs.GetInt("WaypointHighSize") &&
WaypointRace.level >= PlayerPrefs.GetInt("WaypointHighFloor")))
{
if((WaypointRace.size - 1) > PlayerPrefs.GetInt("WaypointHighSize") ||
WaypointRace.level > PlayerPrefs.GetInt("WaypointHighFloor") ||
(WaypointRace.level == PlayerPrefs.GetInt("WaypointHighFloor") &&
Mathf.Round(WaypointRace.fullTime) < PlayerPrefs.GetFloat("WaypointHighTime")))
{
PlayerPrefs.SetInt("WaypointHighSize", (WaypointRace.size - 1));
PlayerPrefs.SetInt("WaypointHighFloor", WaypointRace.level);
PlayerPrefs.SetFloat("WaypointHighTime", Mathf.Round(WaypointRace.fullTime));
highscore = true;
}
}
if(highscore)
{
CongratsText.text = "NEW" + "\n" + "HIGH SCORE!" + "\n" + "CONGRATS!";
} else {
CongratsText.text = "TRY AGAIN!";
}
HighScoreText.text = "HIGH SCORE: " + PlayerPrefs.GetInt("WaypointHighSize")
+ "-" + PlayerPrefs.GetInt("WaypointHighFloor");
HighTimeText.text = "HIGH SCORE TIME: " + Mathf.Round(PlayerPrefs.GetFloat("WaypointHighTime"));
} else if(InfinityRunner.gameOver == true)
{
ScoreText.text = "LEVEL: " + InfinityRunner.escalation + "-" + InfinityRunner.level;
TimeText.text = "TIME: " + Mathf.Round(InfinityRunner.fullTime);
if(InfinityRunner.escalation > PlayerPrefs.GetInt("RunnerHighFloor") ||
(InfinityRunner.escalation == PlayerPrefs.GetInt("RunnerHighFloor") &&
InfinityRunner.level >= PlayerPrefs.GetInt("RunnerHighTime")))
{
if(InfinityRunner.escalation > PlayerPrefs.GetInt("RunnerHighFloor") ||
InfinityRunner.level > PlayerPrefs.GetInt("RunnerHighLevel") ||
(InfinityRunner.level == PlayerPrefs.GetInt("RunnerHighLevel") &&
Mathf.Round(InfinityRunner.fullTime) < PlayerPrefs.GetFloat("RunnerHighTime")))
{
PlayerPrefs.SetInt("RunnerHighFloor", InfinityRunner.escalation);
PlayerPrefs.SetInt("RunnerHighLevel", InfinityRunner.level);
PlayerPrefs.SetFloat("RunnerHighTime", Mathf.Round(InfinityRunner.fullTime));
highscore = true;
}
}
if(highscore)
{
CongratsText.text = "NEW" + "\n" + "HIGH SCORE!" + "\n" + "CONGRATS!";
} else {
CongratsText.text = "TRY AGAIN!";
}
HighScoreText.text = "HIGH SCORE: " + PlayerPrefs.GetInt("RunnerHighFloor")
+ "-" + PlayerPrefs.GetInt("RunnerHighLevel");
HighTimeText.text = "HIGH SCORE TIME: " + Mathf.Round(PlayerPrefs.GetFloat("RunnerHighTime"));
}
}
public void LoadHubWorld()
{
Time.timeScale = 1f;
GameIsPaused = false;
SceneManager.LoadScene("Hub World", LoadSceneMode.Single);
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
FloorLevel.gameOver = false;
WaypointRace.gameOver = false;
InfinityRunner.gameOver = false;
}
public void LoadMenu()
{
Time.timeScale = 1f;
GameIsPaused = false;
SceneManager.LoadScene("Main Menu", LoadSceneMode.Single);
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
public void Retry()
{
Time.timeScale = 1f;
GameIsPaused = false;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
if(FloorLevel.gameOver == true)
{
FloorLevel.gameOver = false;
WaypointRace.gameOver = false;
InfinityRunner.gameOver = false;
SceneManager.LoadScene("Floor Level", LoadSceneMode.Single);
} else if(WaypointRace.gameOver == true)
{
FloorLevel.gameOver = false;
WaypointRace.gameOver = false;
InfinityRunner.gameOver = false;
SceneManager.LoadScene("Waypoint Race", LoadSceneMode.Single);
} else if(InfinityRunner.gameOver == true)
{
FloorLevel.gameOver = false;
WaypointRace.gameOver = false;
InfinityRunner.gameOver = false;
SceneManager.LoadScene("Infinity Runner", LoadSceneMode.Single);
}
}
public void Quit()
{
Application.Quit();
Debug.Log("QUIT");
}
}