46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
namespace DDD
|
|
{
|
|
public class TabUiController : MonoBehaviour
|
|
{
|
|
private List<TabUi> _tabUis;
|
|
private TaskCompletionSource<bool> _isInitialized = new();
|
|
|
|
private void Awake()
|
|
{
|
|
var tabUiChildren = GetComponentsInChildren<TabUi>();
|
|
_tabUis = new List<TabUi>(tabUiChildren);
|
|
foreach (var tabUi in _tabUis)
|
|
{
|
|
tabUi.Initialize();
|
|
}
|
|
_isInitialized.SetResult(true);
|
|
}
|
|
|
|
public async void SelectedTab(TabUi selectedTabUi)
|
|
{
|
|
await _isInitialized.Task;
|
|
|
|
foreach (var tabUi in _tabUis)
|
|
{
|
|
bool shouldBeActive = tabUi == selectedTabUi;
|
|
|
|
if (tabUi.IsOn != shouldBeActive)
|
|
{
|
|
tabUi.TabContentsSetActive(shouldBeActive);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ActivateFirstTab()
|
|
{
|
|
if (_tabUis == null || _tabUis.Count == 0) return;
|
|
|
|
SelectedTab(_tabUis[0]);
|
|
}
|
|
}
|
|
} |