using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
namespace Ilumisoft.GraphicsControl.UI
{
public class GraphicSettingsPanel : MonoBehaviour
{
[SerializeField]
[Tooltip("The parent object all UI selectors will be added to. This would be for example the content GameObject of a ScrollView")]
Transform container;
[SerializeField]
MultiOptionSelector MultiOptionSelectorPrefab;
///
/// Reference to the Graphic Settings Manager
///
GraphicSettingsManager GraphicSettingsManager { get; set; }
private void Awake()
{
GraphicSettingsManager = FindObjectOfType();
}
private void Start()
{
// Get all graphic settings
var settings = GraphicSettingsManager.GetGraphicSettings();
// List holding all selectors
List selectors = new();
// Create the appropriate selector UI elements for each setting
foreach (var setting in settings)
{
if (setting is IMultiOptionGraphicSetting multiOptionSettings)
{
var multiOptionSelector = Instantiate(MultiOptionSelectorPrefab, container);
multiOptionSelector.Initialize(setting.GetSettingName(), multiOptionSettings.GetOptionNames(), multiOptionSettings.GetIndex(), multiOptionSettings.SetIndex);
selectors.Add(multiOptionSelector.gameObject);
}
}
// Automatically select the first element
if (selectors.Count > 0)
{
EventSystem.current.SetSelectedGameObject(selectors[0]);
}
}
}
}