using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class ResolutionGridFiller : MonoBehaviour { public GameObject gridObject; private SettingsManager settingsMgr; private List<GameObject> createdGridEntries = new List<GameObject>(); private int currentItemIndex; private void Start() { settingsMgr = ObjectManager.GetObject(4).GetComponent<SettingsManager>(); } public void FillGrid(string[] resTexts, int currentIndex) { for (int i = 0; i < resTexts.Length; i++) { GameObject newGridEntry = Instantiate(gridObject as GameObject, this.transform); newGridEntry.GetComponentInChildren<TextMeshProUGUI>().text = resTexts[i]; if (i != currentIndex) newGridEntry.GetComponent<Toggle>().isOn = false; newGridEntry.GetComponent<ResolutionItem>().SetResIndex(i); createdGridEntries.Add(newGridEntry); } SetExplicitNavigation(); currentItemIndex = currentIndex; } private void SetExplicitNavigation() { //for each added board entry set the explicit movement for buttons. int indexID = 0; foreach (GameObject resolutionEntry in createdGridEntries) { if (indexID == 0) { var navigation = resolutionEntry.GetComponent<Toggle>().navigation; navigation.selectOnDown = createdGridEntries[1].GetComponent<Toggle>(); navigation.selectOnUp = createdGridEntries[createdGridEntries.Count - 1].GetComponent<Toggle>(); resolutionEntry.GetComponent<Toggle>().navigation = navigation; indexID++; } else if (indexID < createdGridEntries.Count - 1) { var navigation = resolutionEntry.GetComponent<Toggle>().navigation; navigation.selectOnDown = createdGridEntries[indexID + 1].GetComponent<Toggle>(); navigation.selectOnUp = createdGridEntries[indexID - 1].GetComponent<Toggle>(); resolutionEntry.GetComponent<Toggle>().navigation = navigation; indexID++; } else if (indexID == createdGridEntries.Count - 1) { var navigation = resolutionEntry.GetComponent<Toggle>().navigation; navigation.selectOnDown = createdGridEntries[0].GetComponent<Toggle>(); navigation.selectOnUp = createdGridEntries[indexID - 1].GetComponent<Toggle>(); resolutionEntry.GetComponent<Toggle>().navigation = navigation; indexID++; } } } public GameObject GetGridObject(int index) { return createdGridEntries[index]; } public void TurnOffInactiveItems() { for (int i = 0; i < createdGridEntries.Count; i++) { if (i != currentItemIndex) createdGridEntries[i].GetComponent<Toggle>().isOn = false; } } public void ClearGrid() { for (int i = createdGridEntries.Count - 1; i >= 0; i--) { Destroy(createdGridEntries[i]); } createdGridEntries.Clear(); } public void SetResolution(int position) { currentItemIndex = position; settingsMgr.SetScreenResolution(position); } }