using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System.Linq; public class AnswerLineInfoScript : MonoBehaviour { [SerializeField] Button nextPlayerButton; [SerializeField] Button prevPlayerButton; [SerializeField] Text lockedQuestionsText; [SerializeField] Text unlockedQuestionsText; [SerializeField] GameObject scrollView; [SerializeField] GameObject answerLine; [SerializeField] GameObject newQuestion; [SerializeField] GameObject gameManager; private List> players; private string currentPlayerShown; private void Start() { nextPlayerButton.onClick.AddListener(ShowNextPlayerAnswerLine); prevPlayerButton.onClick.AddListener(ShowPrevPlayerAnswerLine); currentPlayerShown = GameManagerScript.GetCurrentPlayer(); } private void Update() { UpdateLockedQuestionsText(); UpdateUnlockedQuestionsText(); UpdateButtonsText(); SetQuestionClickable(); } private void SetQuestionClickable() { if (GameManagerScript.GetCurrentPlayer().Equals(currentPlayerShown)) { newQuestion.GetComponent().BackClickable = true; } else { newQuestion.GetComponent().BackClickable = false; } } public void UpdateButtonsText() { if (players == null) { players = gameManager.GetComponent().GetPlayers(); } if (players.Count <= 1) { nextPlayerButton.gameObject.SetActive(false); prevPlayerButton.gameObject.SetActive(false); } else { nextPlayerButton.gameObject.SetActive(true); prevPlayerButton.gameObject.SetActive(true); if (currentPlayerShown == null) { currentPlayerShown = GameManagerScript.GetCurrentPlayer(); } string playerBaseText = LocalizationManager.Instance.GetText("ANSWERLINE_OTHER_PLAYER"); for (int i = 0; i < players.Count; i++) { if (players[i].Key.Equals(currentPlayerShown, StringComparison.InvariantCultureIgnoreCase)) { if (i + 1 < players.Count) { nextPlayerButton.GetComponent().PlayerName = players[i+1].Key; nextPlayerButton.GetComponentInChildren().text = String.Format(playerBaseText ,players[i + 1].Key); if (i - 1 > 0) { prevPlayerButton.GetComponent().PlayerName = players[i-1].Key; prevPlayerButton.GetComponentInChildren().text = String.Format(playerBaseText ,players[i - 1].Key); } else { prevPlayerButton.GetComponent().PlayerName = players[players.Count-1].Key; prevPlayerButton.GetComponentInChildren().text = String.Format(playerBaseText ,players[players.Count - 1].Key); } break; } else { nextPlayerButton.GetComponent().PlayerName = players[0].Key; nextPlayerButton.GetComponentInChildren().text = String.Format(playerBaseText ,players[0].Key); prevPlayerButton.GetComponent().PlayerName = players[i-1].Key; prevPlayerButton.GetComponentInChildren().text = String.Format(playerBaseText ,players[i - 1].Key); break; } } } } } private void UpdateUnlockedQuestionsText() { int unlockedQuestionCount = scrollView.GetComponent().GetUnlockedQuestionCount(); if (unlockedQuestionCount <= 0) { unlockedQuestionsText.gameObject.SetActive(false); } else { unlockedQuestionsText.gameObject.SetActive(true); unlockedQuestionsText.text = String.Format( LocalizationManager.Instance.GetText( unlockedQuestionsText.GetComponent().key), unlockedQuestionCount); } } private void UpdateLockedQuestionsText() { ScrollViewScript scrollViewScript = scrollView.GetComponent(); int lockedQuestionsCount = scrollViewScript.GetQuestionIdsInAnswerLine().Count - scrollViewScript.GetUnlockedQuestionCount(); lockedQuestionsText.text = String.Format( LocalizationManager.Instance.GetText( lockedQuestionsText.GetComponent().key), lockedQuestionsCount); } private void ShowNextPlayerAnswerLine() { GameManagerScript gameManagerScript = gameManager.GetComponent(); List playerQuestions = Database.Instance.GetPlayerQuestions(gameManagerScript.GameId, nextPlayerButton.GetComponent().PlayerName, gameManagerScript.GameMode); currentPlayerShown = nextPlayerButton.GetComponent().PlayerName; setQuestionFrosting(playerQuestions); UpdateButtonsText(); } private void ShowPrevPlayerAnswerLine() { GameManagerScript gameManagerScript = gameManager.GetComponent(); List playerQuestions = Database.Instance.GetPlayerQuestions(gameManagerScript.GameId, prevPlayerButton.GetComponent().PlayerName, gameManagerScript.GameMode); currentPlayerShown = prevPlayerButton.GetComponent().PlayerName; setQuestionFrosting(playerQuestions); UpdateButtonsText(); } private void setQuestionFrosting(List questions) { ScrollViewScript scrollViewScript = scrollView.GetComponent(); scrollViewScript.RemoveEverythingFromAnswerline(); scrollViewScript.SetQuestionsInAnswerLine(questions); if (GameManagerScript.GetCurrentPlayer().Equals(currentPlayerShown)) { scrollViewScript.SetQuestionsFrosted(false); } else { scrollViewScript.SetQuestionsFrosted(true); } } }