CapersProject/Assets/02.Scripts/Ui/Tycoon/TycoonTutorial.cs
2024-12-16 21:06:42 +09:00

100 lines
3.0 KiB
C#

using System.Collections.Generic;
using BlueWater;
using Sirenix.OdinInspector;
using UnityEngine;
public class TutorialLink
{
public TutorialPageToggle TutorialPageToggle { get; private set; }
public List<TycoonTutorialPopupUi> TycoonTutorialPopupUis { get; private set; }
public TutorialLink(TutorialPageToggle tutorialPageToggle, List<TycoonTutorialPopupUi> tycoonTutorialPopupUis)
{
TutorialPageToggle = tutorialPageToggle;
TycoonTutorialPopupUis = tycoonTutorialPopupUis;
TutorialPageToggle.OnToggleEvent += OnToggle;
}
public void OnToggle(bool isOn)
{
if (isOn)
{
TycoonTutorialPopupUis[0].Open();
}
}
}
namespace BlueWater
{
public class TycoonTutorial : MonoBehaviour
{
[SerializeField, Required]
private GameObject _tutorialPanel;
[SerializeField]
private Transform _buttonContents;
[SerializeField]
private Transform _tutorialPopupUiContents;
[Title("프리팹")]
[SerializeField]
private TutorialPageToggle _tutorialPageToggle;
[SerializeField]
private TycoonTutorialPopupUi _tutorialPopupUi;
[Title("So")]
[SerializeField, Required]
private TutorialSo _tutorialSo;
private Dictionary<string, TutorialLink> _tutorialLinks;
private void Start()
{
HideUi();
foreach (Transform element in _buttonContents)
{
Destroy(element.gameObject);
}
foreach (Transform element in _tutorialPopupUiContents)
{
Destroy(element.gameObject);
}
_tutorialLinks = new Dictionary<string, TutorialLink>(_tutorialSo.GetDataCount());
foreach (TutorialInfo tutorialInfo in _tutorialSo.GetData().Values)
{
TutorialPageToggle tutorialPageToggle = Instantiate(this._tutorialPageToggle, _buttonContents);
List<TycoonTutorialPopupUi> tycoonTutorialPopupUis = new List<TycoonTutorialPopupUi>();
tutorialPageToggle.Initialize(tutorialInfo);
for (int i = 0; i < tutorialInfo.TutorialPages.Count; i++)
{
TycoonTutorialPopupUi tycoonTutorialPopupUi = Instantiate(_tutorialPopupUi, _tutorialPopupUiContents);
tycoonTutorialPopupUis.Add(tycoonTutorialPopupUi);
}
_tutorialLinks.Add(tutorialInfo.TutorialName, new TutorialLink(tutorialPageToggle, tycoonTutorialPopupUis));
}
}
public void ShowUi()
{
if (_tutorialLinks.TryGetValue("TutorialA", out TutorialLink tutorialLink))
{
tutorialLink.TutorialPageToggle.OnToggle(true);
}
_tutorialPanel.SetActive(true);
}
public void HideUi()
{
_tutorialPanel.SetActive(false);
}
}
}