using System.Collections; using BlueWater; using BlueWater.Items; using BlueWater.Tycoons; using BlueWater.Uis; using UnityEngine; using UnityEngine.UI; public class Upgrade_Popup : PopupUi { [SerializeField] private GameObject _panel; [SerializeField] private AnimationController _animationController; [SerializeField] private Image information; //정보를 알려주는 이미지 [SerializeField] private Image liqueurImage; //리큐르 팝업창에 뜰 이미지 private void Start() { EventManager.OnUpgradeUi += StartUpgradePopup; } private void OnDestroy() { EventManager.OnUpgradeUi -= StartUpgradePopup; } public override void Open() { VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f); PlayerInputKeyManager.Instance.DisableAction("Manual"); PopupUiController.RegisterPopup(this); ShowUi(); IsOpened = true; } public override void Close() { HideUi(); PlayerInputKeyManager.Instance.EnableAction("Manual"); PopupUiController.UnregisterPopup(this); IsOpened = false; if (!PopupUiController.IsPopupListEmpty()) return; VisualFeedbackManager.Instance.ResetTimeScale(); } private void StartUpgradePopup(LevelData currentLevelData) { switch (int.Parse(currentLevelData.Idx)) { case 5:liqueurImage.sprite = ItemManager.Instance.LiquidDataSo.GetDataByIdx("LiquidB").Sprite; break; case 10:liqueurImage.sprite = ItemManager.Instance.LiquidDataSo.GetDataByIdx("LiquidC").Sprite; break; case 15:liqueurImage.sprite = ItemManager.Instance.LiquidDataSo.GetDataByIdx("LiquidD").Sprite; break; case 20:liqueurImage.sprite = ItemManager.Instance.LiquidDataSo.GetDataByIdx("LiquidE").Sprite; break; case 25:liqueurImage.sprite = ItemManager.Instance.LiquidDataSo.GetDataByIdx("Garnish1").Sprite; break; case 30:liqueurImage.sprite = ItemManager.Instance.LiquidDataSo.GetDataByIdx("Garnish2").Sprite; break; } StartCoroutine(StartUpgradePopupCoroutine(currentLevelData)); } // ReSharper disable Unity.PerformanceAnalysis private IEnumerator StartUpgradePopupCoroutine(LevelData currentLevelData) { int lv = TycoonManager.Instance.LevelDataSo.GetDataCount(); Open(); float timer = 0f; while (timer < 1.0f) { timer += Time.unscaledDeltaTime; yield return null; } timer = 0f; while (timer < 0.5) { timer += Time.unscaledDeltaTime; float t = timer / 0.5f; float easedT = EaseEffect.BounceOut(t); information.transform.localScale = Vector3.Lerp( new Vector3(0.0f,0.0f,0.0f), new Vector3(1.0f,1.0f,1.0f), easedT); yield return null; } timer = 0f; while (timer < 2.0) { timer += Time.unscaledDeltaTime; yield return null; } timer = 0f; while (timer < 0.5) { timer += Time.unscaledDeltaTime; float t = timer / 0.5f; float easedT = EaseEffect.BounceOut(t); information.transform.localScale = Vector3.Lerp( new Vector3(1.0f,1.0f,1.0f), new Vector3(0.0f,0.0f,0.0f), easedT); yield return null; } _animationController.PlayAnimation("CardUpgrade_Reverse"); timer = 0f; while (timer < 1.0f) { timer += Time.unscaledDeltaTime; yield return null; } VisualFeedbackManager.Instance.ResetTimeScale(); Close(); } public void ShowUi() => _panel.SetActive(true); public void HideUi() => _panel.SetActive(false); }