diff options
author | Jakob Stendahl <JakobS1n@users.noreply.github.com> | 2017-10-14 23:17:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-14 23:17:09 +0200 |
commit | 8b2c937959c99ab2dfbc3eaf9dc5b9c18cf73371 (patch) | |
tree | b775b07054de58f83cd9df41bf43e61b3facfad1 /td/Assets/Scripts/mainGUI.cs | |
parent | 76cf99ade6530bdad81088295fb4cf73f5c5b118 (diff) | |
parent | abe835d1112e4804ce63b7d2fa85f8bd76e3c237 (diff) | |
download | TD-8b2c937959c99ab2dfbc3eaf9dc5b9c18cf73371.tar.gz TD-8b2c937959c99ab2dfbc3eaf9dc5b9c18cf73371.zip |
Merge pull request #4 from JakobS1n/GUI
Gui
Diffstat (limited to 'td/Assets/Scripts/mainGUI.cs')
-rw-r--r-- | td/Assets/Scripts/mainGUI.cs | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/td/Assets/Scripts/mainGUI.cs b/td/Assets/Scripts/mainGUI.cs new file mode 100644 index 0000000..26ec78b --- /dev/null +++ b/td/Assets/Scripts/mainGUI.cs @@ -0,0 +1,187 @@ +using System; +using UnityEngine.UI; +using UnityEngine.SceneManagement; +using UnityEngine; + +public class MainGui : MonoBehaviour { + [Header("Scripting vars")] + public Player Player; // Reference to the player object, should be set in designer + + private GameObject _pnlMenu; + private GameObject _pnlSidebar; + private GameObject _pnlSettings; + private GameObject _pnlGameOver; + private RectTransform _pnlSidebarTransform; + private Button _btnToggleSidebar; + private Button _btnPauseGame; + private Button _btnResumeGame; + private Button _btnExitGame; + private Button _btnSettings; + private Button _btnSettingsDiscard; + private Button _btnSettingsSave; + private Button _btnGoRetry; + private Button _btnGoMenu; + private Text _txtGoScore; + private Text _txtGoHighScore; + private Text _txtGoNewHighScore; + + private bool _sidebarExpanded; + private readonly float[] _sidebarStates = new float[2] {0f, -202.4f}; // The x position of the sidebar expanded or collapsed + + private bool _menuActive; + + private void Awake() { + /* Panels */ + _pnlMenu = transform.Find ("menu").gameObject; + _pnlSidebar = transform.Find ("sidebarWrapper").gameObject; + _pnlSettings = transform.Find ("settings").gameObject; + _pnlGameOver = transform.Find("GameOver").gameObject; + _pnlSidebarTransform = _pnlSidebar.GetComponent <RectTransform> (); + + /* Buttons */ + _btnToggleSidebar = _pnlSidebar.transform.Find("toggleSidebar").gameObject.GetComponent <Button> (); + _btnPauseGame = _pnlSidebar.transform.Find ("pauseGame").gameObject.GetComponent <Button> (); + _btnResumeGame = _pnlMenu.transform.Find ("resumeGame").gameObject.GetComponent <Button> (); + _btnExitGame = _pnlMenu.transform.Find ("exitGame").gameObject.GetComponent <Button> (); + _btnSettings = _pnlMenu.transform.Find ("settings").gameObject.GetComponent <Button> (); + _btnSettingsDiscard = _pnlSettings.transform.Find ("discardChanges").gameObject.GetComponent <Button> (); + _btnSettingsSave = _pnlSettings.transform.Find ("saveChanges").gameObject.GetComponent <Button> (); + _btnGoMenu = _pnlGameOver.transform.Find ("GameOver").transform.Find("menu").gameObject.GetComponent <Button> (); + _btnGoRetry = _pnlGameOver.transform.Find ("GameOver").transform.Find("restart").gameObject.GetComponent <Button> (); + if (_btnToggleSidebar != null) { _btnToggleSidebar.onClick.AddListener (toggleSidebarHandler); } + if (_btnPauseGame != null) { _btnPauseGame.onClick.AddListener (pauseGameHandler); } + if (_btnResumeGame != null) { _btnResumeGame.onClick.AddListener (btnResumeGameHandler); } + if (_btnExitGame != null) { _btnExitGame.onClick.AddListener (btnExitGameHandler); } + if (_btnSettings != null) { _btnSettings.onClick.AddListener (btnSettingsHandler); } + if (_btnSettingsDiscard != null) { _btnSettingsDiscard.onClick.AddListener (btnSettingsDiscardHandler); } + if (_btnSettingsSave != null) { _btnSettingsSave.onClick.AddListener (btnSettingsSaveHandler); } + if (_btnGoMenu != null) { _btnGoMenu.onClick.AddListener (btnGoMenuHandler); } + if (_btnGoRetry != null) { _btnGoRetry.onClick.AddListener (btnGoRetryHandler); } + + /* Text */ + _txtGoScore = _pnlGameOver.transform.Find ("GameOver").transform.Find("score").gameObject.GetComponent<Text>(); + _txtGoHighScore = _pnlGameOver.transform.Find ("GameOver").transform.Find("highScore").gameObject.GetComponent<Text>(); + _txtGoNewHighScore = _pnlGameOver.transform.Find ("GameOver").transform.Find("newHighscore").gameObject.GetComponent<Text>(); + + /* Set up initial states */ + UpdateSidebarPosandBtn (); + _pnlMenu.SetActive (false); + _pnlSettings.SetActive (false); + _pnlGameOver.SetActive(false); + } + + private void toggleSidebarHandler() { + /* handler for btnToggleSidebar */ + _sidebarExpanded = !_sidebarExpanded; + UpdateSidebarPosandBtn (); + } + + private void pauseGameHandler() { + /* handler for btnPauseGame */ + _menuActive = true; + _pnlMenu.SetActive (_menuActive); + Time.timeScale = 0.0F; + _btnToggleSidebar.interactable = false; + _btnPauseGame.interactable = false; + Player.PauseGame(); + } + + private void btnResumeGameHandler() { + /* handler for btnResumeGame */ + _menuActive = false; + _pnlMenu.SetActive (_menuActive); + Time.timeScale = 1.0F; + _btnToggleSidebar.interactable = true; + _btnPauseGame.interactable = true; + Player.ResumeGame(); + } + + private void btnExitGameHandler() { + /* handler for btnExitGame */ + Application.Quit (); + } + + private void btnSettingsHandler() { + /* handler for btnSettings */ + _pnlMenu.SetActive (false); + _pnlSettings.SetActive (true); + + if (PlayerPrefs.HasKey ("developerMode")) { + _pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle> ().isOn = IntToBool(PlayerPrefs.GetInt ("developerMode")); + } + } + + private void btnSettingsSaveHandler() { + /* handler for btnSaveSettings */ + _pnlMenu.SetActive (true); + _pnlSettings.SetActive (false); + + PlayerPrefs.SetInt ("developerMode", Convert.ToInt32(_pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle>().isOn)); + } + + private void btnSettingsDiscardHandler() { + /* handler for btnSettingsDiscard */ + _pnlMenu.SetActive (true); + _pnlSettings.SetActive (false); + } + + private void UpdateSidebarPosandBtn() { + /* update state of sidebar based on the expanded var */ + if (_sidebarExpanded) { + _pnlSidebarTransform.localPosition = new Vector3 (_sidebarStates [1], 0f, 0f); + _btnToggleSidebar.transform.GetComponent <RectTransform> ().localScale = new Vector3 (-1, 1, 1); + } else { + _pnlSidebarTransform.localPosition = new Vector3 (_sidebarStates [0], 0f, 0f); + _btnToggleSidebar.transform.GetComponent <RectTransform> ().localScale = new Vector3 (1, 1, 1); + } + } + + private void btnGoMenuHandler() { + /* Handler for btnGoMenu */ + } + + private void btnGoRetryHandler() { + /* Handler for btnGoRetry */ + SceneManager.LoadScene(SceneManager.GetActiveScene().name); + Time.timeScale = 1.0F; + } + + private bool IntToBool(int input) { + /* Converts int to boolean */ + if (input >= 1) { + return true; + } else { + return false; + } + } + + public void GameOverScreen(int score) { + /* Show game over screen */ + bool newHighscore = false; + int highScore = 0; + + if (PlayerPrefs.HasKey("highscore")) { + highScore = PlayerPrefs.GetInt("highscore"); + if (score > highScore) { + newHighscore = true; + } + } + + if (_sidebarExpanded) { toggleSidebarHandler(); } + + /* Pause game */ + Player.PauseGame(); + /* Activate panel */ + _pnlGameOver.SetActive(true); + /* Set text, score */ + _txtGoScore.text = "Score: " + score.ToString(); + /* set text, highscore */ + _txtGoHighScore.text = "Highscore: " + highScore.ToString(); + /* set newHicgscore */ + _txtGoNewHighScore.gameObject.SetActive(newHighscore); + /* Disable other onScreenButtons */ + _btnToggleSidebar.interactable = false; + _btnPauseGame.interactable = false; + } + +} |