CapersProject/Assets/02.Scripts/Ui/Tycoon/TycoonTutorialPopupUi.cs

87 lines
2.8 KiB
C#
Raw Normal View History

2024-12-16 12:06:42 +00:00
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()}";
}
}
}