using System.Collections; using BlueWater.Uis; using BlueWater.Utility; using TMPro; using UnityEngine; using UnityEngine.Localization; using UnityEngine.Localization.Settings; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.UI; namespace BlueWater { public class TycoonTutorialPopupUi : TutorialPopupUi { [SerializeField] private TMP_Text _titleText; [SerializeField] private TMP_Text _descriptionText; [SerializeField] private Image _descriptionImage; [SerializeField] private TMP_Text _pageText; private TutorialInfo _tutorialInfo; private TutorialPage _tutorialPage; private Coroutine _changedLocaleInstance; private int _pageIndex; private void Start() { LocalizationSettings.SelectedLocaleChanged += OnChangedLocale; } private void OnDestroy() { LocalizationSettings.SelectedLocaleChanged -= OnChangedLocale; } private void OnChangedLocale(Locale locale) { if (!gameObject.activeInHierarchy) return; Utils.StartUniqueCoroutine(this, ref _changedLocaleInstance, ChangeLocaleCoroutine(locale)); StartCoroutine(ChangeLocaleCoroutine(locale)); } private IEnumerator ChangeLocaleCoroutine(Locale locale) { var loadingOperation = Utils.GetTableAsync(); yield return loadingOperation; if (loadingOperation.Status == AsyncOperationStatus.Succeeded) { _titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx); _descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx); } } public void Initialize(TutorialInfo tutorialInfo, int pageindex) { gameObject.SetActive(false); _tutorialInfo = tutorialInfo; _pageIndex = pageindex; _tutorialPage = _tutorialInfo.TutorialPages[_pageIndex]; gameObject.name = $"{_tutorialInfo.TutorialName}{_pageIndex + 1}"; if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Sole) { _titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx); _titleText.enabled = true; } else { _titleText.enabled = false; } _descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx); _descriptionImage.sprite = _tutorialPage.Sprite; _pageText.text = $"{_tutorialPage.PageIndex}/{_tutorialInfo.GetPages()}"; } } }