aboutsummaryrefslogtreecommitdiff
path: root/td/Assets/Scripts/mainGUI.cs
blob: d9fb9559e8ff063c317c52774cb27d21b3327dee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;

public class mainGUI : MonoBehaviour {

	GameObject pnlMenu;
	GameObject pnlSidebar;
	GameObject pnlSettings;
	RectTransform pnlSidebarTransform;
	Button btnToggleSidebar;
	Button btnPauseGame;
	Button btnResumeGame;
	Button btnExitGame;
	Button btnSettings;
	Button btnSettingsDiscard;
	Button btnSettingsSave;

	bool sidebarExpanded;
	float[] sidebarStates = new float[2] {0f, -202.4f};  // The x position of the sidebar expanded or collapsed

	bool menuActive;

	void Awake() {
		/* Panels */
		pnlMenu = transform.Find ("menu").gameObject;
		pnlSidebar = transform.Find ("sidebarWrapper").gameObject;
		pnlSettings = transform.Find ("settings").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> ();
		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); }

		/* Set up initial states */
		updateSidebarPosandBtn ();
		pnlMenu.SetActive (false);
		pnlSettings.SetActive (false);
	}

	void toggleSidebarHandler() {
		/* handler for btnToggleSidebar */
		sidebarExpanded = !sidebarExpanded;
		updateSidebarPosandBtn ();
	}

	void pauseGameHandler() {
		/* handler for btnPauseGame */
		menuActive = true;
		pnlMenu.SetActive (menuActive);
		Time.timeScale = 0.0F;
		btnToggleSidebar.interactable = false;
		btnPauseGame.interactable = false;
	}

	void btnResumeGameHandler() {
		/* handler for btnResumeGame */
		menuActive = false;
		pnlMenu.SetActive (menuActive);
		Time.timeScale = 1.0F;
		btnToggleSidebar.interactable = true;
		btnPauseGame.interactable = true;
	}

	void btnExitGameHandler() {
		/* handler for btnExitGame */
		Application.Quit ();
	}

	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"));
		}
	}

	void btnSettingsSaveHandler() {
		/* handler for btnSaveSettings */
		pnlMenu.SetActive (true);
		pnlSettings.SetActive (false);

		PlayerPrefs.SetInt ("developerMode", Convert.ToInt32(pnlSettings.transform.Find ("developerEnabled").gameObject.GetComponent <Toggle>().isOn));
	}

	void btnSettingsDiscardHandler() {
		/* handler for btnSettingsDiscard */
		pnlMenu.SetActive (true);
		pnlSettings.SetActive (false);
	}

	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);
		}
	}

	bool intToBool(int input) {
		/* Converts int to boolean */
		if (input >= 1) {
			return true;
		} else {
			return false;
		}
	}

}