using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; using UnityEngine.SceneManagement; public class MainMenu : MonoBehaviour { public Button startNewGameButton; public Button quitButton; public Transform activeGamesPanel; public Transform newGamePanel; public Slider gameTypeSlider; public InputField localPlayers; public GameObject playerSettingPrefab; public Button startLocalGameButton; public InputField winningCountInputField; public InputField timeToAnswerInputField; private string gamesPostUrl = "nordh.xyz/narKampen/dbFiles/Games.php?"; private void Start() { GetGames(); startNewGameButton.onClick.AddListener(StartNewGameAction); quitButton.onClick.AddListener(() => { Application.Quit(); }); gameTypeSlider.onValueChanged.AddListener(SliderChoice); localPlayers.onValueChanged.AddListener(LocalPlayersAction); startLocalGameButton.onClick.AddListener(StartLocalGame); } private void LocalPlayersAction(string value) { Transform settingsPanel = GameObject.Find("PlayerSettingsPanel").transform; PlayerSetting[] players = settingsPanel.GetComponentsInChildren(); int playersCount = players.Length; if (!Int32.TryParse(value, out int newValue)) { newValue = 1; } if (newValue < 1) { newValue = 1; } if (playersCount < newValue) { // add new PlayerSettings for (int i = playersCount; i < newValue; i++) { GameObject go = Instantiate(playerSettingPrefab, new Vector2(0, 0), Quaternion.identity) as GameObject; PlayerSetting ps = go.GetComponent(); ps.SetPlayerText(i + 1); ps.SetPlayerName(i + 1); ps.transform.SetParent(settingsPanel); ps.transform.SetSiblingIndex(i + 1); } } else if (playersCount > newValue) { // remove playersettings from end for (int i = playersCount; i > newValue; i--) { PlayerSetting toDestroy = settingsPanel.GetChild(i - 1).GetComponent(); Destroy(toDestroy.gameObject); } } } private void StartGameAction() { Debug.Log("logged in player id: " + PlayerPrefs.GetInt("UserId")); } private void GetGames() { } private IEnumerator GetGamesFromServer() { string postUrl = gamesPostUrl + "userId=" + PlayerPrefs.GetInt("UserId"); UnityWebRequest www = UnityWebRequest.Get(postUrl); yield return www.SendWebRequest(); } private void StartNewGameAction() { StartNewGamePanelChange(); } private void StartNewGamePanelChange() { RectTransform activeGamesRect = activeGamesPanel.GetComponent(); RectTransform newGamesRect = newGamePanel.GetComponent(); startNewGameButton.gameObject.SetActive(false); Color startButtonColor = startNewGameButton.GetComponent().color; float activeGamesPanelheight = activeGamesRect.rect.height; GameObject.Find("GameType").gameObject.GetComponent().alpha = 1; activeGamesPanel.gameObject.GetComponent().alpha = 0; activeGamesPanel.gameObject.GetComponent().blocksRaycasts = false; } private void SliderChoice(float arg) { CanvasGroup localGameSettings = GameObject.Find("LocalGameSettings").gameObject.GetComponent(); CanvasGroup onlineGameSettings = GameObject.Find("OnlineGameSettings").gameObject.GetComponent(); if (arg == 0) { // Local game localGameSettings.alpha = 1; localGameSettings.blocksRaycasts = true; onlineGameSettings.alpha = 0; onlineGameSettings.blocksRaycasts = false; LocalPlayersAction("1"); } else if (arg == 2) { // Online game onlineGameSettings.alpha = 1; onlineGameSettings.blocksRaycasts = true; localGameSettings.alpha = 0; localGameSettings.blocksRaycasts = false; } else { // No choice, hide all localGameSettings.alpha = 0; onlineGameSettings.alpha = 0; localGameSettings.blocksRaycasts = false; onlineGameSettings.blocksRaycasts = false; } } private void StartLocalGame() { ArrayList playerNames = new ArrayList(); if (Int32.TryParse(winningCountInputField.text, out int winningCount)) { PlayerPrefs.SetInt("WinningCount", winningCount); } else { PlayerPrefs.SetInt("WinningCount", 10); } if (Int32.TryParse(localPlayers.text, out int players)) { PlayerPrefs.SetInt("PlayerCount", players); } else { PlayerPrefs.SetInt("PlayerCount", 1); } Transform settingsPanel = GameObject.Find("PlayerSettingsPanel").transform; PlayerSetting[] playerSettings = settingsPanel.GetComponentsInChildren(); for (int i = 0; i < playerSettings.Length; i++) { string playerName = playerSettings[i].GetComponent().nameInput.text; PlayerPrefs.SetString("Player" + i, playerName); } if (Int32.TryParse(timeToAnswerInputField.text, out int questionTimer)) { PlayerPrefs.SetInt("QuestionTimer", questionTimer); } else { PlayerPrefs.SetInt("QuestionTimer", 20); } PlayerPrefs.SetString("GameMode", "Local"); SceneManager.LoadSceneAsync("narKampen"); } }