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

94 lines
2.7 KiB
C#
Raw Normal View History

2024-12-05 10:30:41 +00:00
using System;
using System.Collections;
using BlueWater.Items;
using BlueWater.Utility;
using TMPro;
using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;
namespace BlueWater.Uis
{
public class CraftingIngredient : MonoBehaviour
{
[SerializeField]
private GameObject _connectionLine;
[SerializeField]
private Image _liquidImage;
[SerializeField]
private Image _liquidTypeImage;
[SerializeField]
private TMP_Text _liquidText;
[SerializeField]
private TMP_Text _ratioText;
[SerializeField]
private Sprite _liquidTypeSprite;
[SerializeField]
private Sprite _garnishTypeSprite;
private Coroutine _changedLocaleInstance;
private LiquidData _liquidData;
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)
{
_liquidText.text = Utils.GetLocalizedString(_liquidData.Idx);
}
}
public void Initialize(CocktailIngredient cocktailIngredient, int index)
{
_connectionLine.SetActive(index != 0);
_liquidData = ItemManager.Instance.LiquidDataSo.GetDataByIdx(cocktailIngredient.Idx);
_liquidImage.sprite = _liquidData.Sprite;
Sprite liquidTypeSprite = null;
if (_liquidData.Type == LiquidType.Liquid)
{
liquidTypeSprite = _liquidTypeSprite;
}
else if (_liquidData.Type == LiquidType.Garnish)
{
liquidTypeSprite = _garnishTypeSprite;
}
_liquidTypeImage.sprite = liquidTypeSprite;
_liquidText.text = Utils.GetLocalizedString(_liquidData.Idx);
_ratioText.text = $"{cocktailIngredient.Ratio}%";
}
public void Show() => gameObject.SetActive(true);
public void Hide() => gameObject.SetActive(false);
}
}