using System.Collections.Generic; using BlueWater; using Sirenix.OdinInspector; using UnityEngine; public class TutorialLink { public TutorialPageToggle TutorialPageToggle { get; private set; } public List TycoonTutorialPopupUis { get; private set; } public TutorialLink(TutorialPageToggle tutorialPageToggle, List 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 _tutorialLinks; private void Start() { HideUi(); foreach (Transform element in _buttonContents) { Destroy(element.gameObject); } foreach (Transform element in _tutorialPopupUiContents) { Destroy(element.gameObject); } _tutorialLinks = new Dictionary(_tutorialSo.GetDataCount()); foreach (TutorialInfo tutorialInfo in _tutorialSo.GetData().Values) { TutorialPageToggle tutorialPageToggle = Instantiate(this._tutorialPageToggle, _buttonContents); List tycoonTutorialPopupUis = new List(); 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); } } }