using System; using System.Collections; using BlueWater.Uis; using BlueWater.Utility; using Sirenix.OdinInspector; 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 Image _popupImage; [SerializeField] private TMP_Text _titleText; [SerializeField] private RectTransform _descriptionTextRect; [SerializeField] private TMP_Text _descriptionText; [SerializeField] private RectTransform _descriptionTImageRect; [SerializeField] private Image _descriptionImage; [SerializeField] private TMP_Text _pageText; [Title("연출")] [SerializeField] private Vector3 _descriptionTextAnchorPositionInFirst = new(0f, -37f, 0f); [SerializeField] private Vector3 _descriptionTextAnchorPositionExceptFirst = new(0f, -280f, 0f); [SerializeField] private Vector3 _descriptionImageAnchorPositionInFirst = new(0f, -210f, 0f); [SerializeField] private Vector3 _descriptionImageAnchorPositionExceptFirst = new(0f, -150f, 0f); 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, Sprite popupSprite) { gameObject.SetActive(false); _tutorialInfo = tutorialInfo; _pageIndex = pageindex; _tutorialPage = _tutorialInfo.TutorialPages[_pageIndex]; gameObject.name = $"{_tutorialInfo.TutorialName}{_pageIndex + 1}"; _popupImage.sprite = popupSprite; if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Solo) { _titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx); _titleText.enabled = true; _descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionInFirst; _descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionInFirst; } else { _titleText.enabled = false; _descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionExceptFirst; _descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionExceptFirst; } _descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx); _descriptionImage.sprite = _tutorialPage.Sprite; _pageText.text = $"{_tutorialPage.PageIndex}/{_tutorialInfo.GetPages()}"; } } }