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

119 lines
4.0 KiB
C#
Raw Normal View History

2024-12-17 07:42:47 +00:00
using System;
2024-12-16 12:06:42 +00:00
using System.Collections;
using BlueWater.Uis;
using BlueWater.Utility;
2024-12-17 07:42:47 +00:00
using Sirenix.OdinInspector;
2024-12-16 12:06:42 +00:00
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;
namespace BlueWater
{
public class TycoonTutorialPopupUi : TutorialPopupUi
{
2024-12-17 07:42:47 +00:00
[SerializeField]
private Image _popupImage;
2024-12-16 12:06:42 +00:00
[SerializeField]
private TMP_Text _titleText;
2024-12-17 07:42:47 +00:00
[SerializeField]
private RectTransform _descriptionTextRect;
2024-12-16 12:06:42 +00:00
[SerializeField]
private TMP_Text _descriptionText;
2024-12-17 07:42:47 +00:00
[SerializeField]
private RectTransform _descriptionTImageRect;
2024-12-16 12:06:42 +00:00
[SerializeField]
private Image _descriptionImage;
2024-12-17 07:42:47 +00:00
2024-12-16 12:06:42 +00:00
[SerializeField]
private TMP_Text _pageText;
2024-12-17 07:42:47 +00:00
[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);
2024-12-16 12:06:42 +00:00
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);
}
}
2024-12-17 07:42:47 +00:00
public void Initialize(TutorialInfo tutorialInfo, int pageindex, Sprite popupSprite)
2024-12-16 12:06:42 +00:00
{
gameObject.SetActive(false);
_tutorialInfo = tutorialInfo;
_pageIndex = pageindex;
_tutorialPage = _tutorialInfo.TutorialPages[_pageIndex];
gameObject.name = $"{_tutorialInfo.TutorialName}{_pageIndex + 1}";
2024-12-17 07:42:47 +00:00
_popupImage.sprite = popupSprite;
if (_tutorialPage.TutorialPageType is TutorialPageType.First or TutorialPageType.Solo)
2024-12-16 12:06:42 +00:00
{
_titleText.text = Utils.GetLocalizedString(_tutorialInfo.TitleTextIdx);
_titleText.enabled = true;
2024-12-17 07:42:47 +00:00
_descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionInFirst;
_descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionInFirst;
2024-12-16 12:06:42 +00:00
}
else
{
_titleText.enabled = false;
2024-12-17 07:42:47 +00:00
_descriptionTextRect.anchoredPosition = _descriptionTextAnchorPositionExceptFirst;
_descriptionTImageRect.anchoredPosition = _descriptionImageAnchorPositionExceptFirst;
2024-12-16 12:06:42 +00:00
}
_descriptionText.text = Utils.GetLocalizedString(_tutorialPage.DescriptionIdx);
_descriptionImage.sprite = _tutorialPage.Sprite;
2024-12-17 07:42:47 +00:00
2024-12-16 12:06:42 +00:00
_pageText.text = $"{_tutorialPage.PageIndex}/{_tutorialInfo.GetPages()}";
}
}
}