64 lines
2.5 KiB
C#
64 lines
2.5 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
using System.Collections.Generic;
|
|
|
|
namespace UI
|
|
{
|
|
public class SettingsController : MonoBehaviour
|
|
{
|
|
private VisualElement _contentGeneral;
|
|
private VisualElement _contentGraphics;
|
|
private VisualElement _contentAudio;
|
|
private VisualElement _contentControls;
|
|
|
|
private Button _tabGeneral;
|
|
private Button _tabGraphics;
|
|
private Button _tabAudio;
|
|
private Button _tabControls;
|
|
|
|
private void OnEnable()
|
|
{
|
|
var root = GetComponent<UIDocument>().rootVisualElement;
|
|
|
|
// Tabs
|
|
_tabGeneral = root.Q<Button>("tab-general");
|
|
_tabGraphics = root.Q<Button>("tab-graphics");
|
|
_tabAudio = root.Q<Button>("tab-audio");
|
|
_tabControls = root.Q<Button>("tab-controls");
|
|
|
|
// Content
|
|
_contentGeneral = root.Q<VisualElement>("content-general");
|
|
_contentGraphics = root.Q<VisualElement>("content-graphics");
|
|
_contentAudio = root.Q<VisualElement>("content-audio");
|
|
_contentControls = root.Q<VisualElement>("content-controls");
|
|
|
|
// Register Tab Events
|
|
_tabGeneral?.RegisterCallback<ClickEvent>(evt => SwitchTab(_contentGeneral, _tabGeneral));
|
|
_tabGraphics?.RegisterCallback<ClickEvent>(evt => SwitchTab(_contentGraphics, _tabGraphics));
|
|
_tabAudio?.RegisterCallback<ClickEvent>(evt => SwitchTab(_contentAudio, _tabAudio));
|
|
_tabControls?.RegisterCallback<ClickEvent>(evt => SwitchTab(_contentControls, _tabControls));
|
|
|
|
// Close
|
|
root.Q<Button>("btn-close")?.RegisterCallback<ClickEvent>(evt => UIManager.Instance.ToggleSettings());
|
|
}
|
|
|
|
private void SwitchTab(VisualElement targetContent, Button targetTab)
|
|
{
|
|
// Hide all
|
|
_contentGeneral.style.display = DisplayStyle.None;
|
|
if(_contentGraphics != null) _contentGraphics.style.display = DisplayStyle.None;
|
|
if(_contentAudio != null) _contentAudio.style.display = DisplayStyle.None;
|
|
if(_contentControls != null) _contentControls.style.display = DisplayStyle.None;
|
|
|
|
_tabGeneral.RemoveFromClassList("active-tab");
|
|
_tabGraphics.RemoveFromClassList("active-tab");
|
|
_tabAudio.RemoveFromClassList("active-tab");
|
|
_tabControls.RemoveFromClassList("active-tab");
|
|
|
|
// Show target
|
|
targetContent.style.display = DisplayStyle.Flex;
|
|
targetTab.AddToClassList("active-tab");
|
|
}
|
|
}
|
|
}
|