using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class RealmStageBehaviour : MonoBehaviour { [SerializeField] Image m_RealmIcon; [SerializeField] Transform m_ContainerSelect; [SerializeField] Image m_SelectIcon; [SerializeField] UIEffect m_Effect; [SerializeField] UIEffect m_PracticeEffect; [SerializeField] Button m_Select; public int realmLevel { get; private set; } public int animIndex { get; set; } RealmModel model { get { return ModelCenter.Instance.GetModel(); } } private void Awake() { m_Select.AddListener(OnSelect); } public void Display(int _realmLv) { this.realmLevel = _realmLv; model.selectRealmRefresh -= SelectRealmRefresh; model.selectRealmRefresh += SelectRealmRefresh; DisplayBase(); DisplaySelect(); DisplayPracticeEffect(); DisplayEffect(false); } void DisplayBase() { var config = RealmConfig.Get(realmLevel); m_RealmIcon.SetSprite(config.Img); } void DisplaySelect() { m_ContainerSelect.SetActive(model.selectRealm == realmLevel); if (model.selectRealm == realmLevel) { var config = RealmConfig.Get(realmLevel); m_SelectIcon.SetSprite(StringUtility.Contact("RealmSelectBottom_", config.Quality)); } } void DisplayPracticeEffect() { if (model.displayRealmLevel + 1 == realmLevel) { if (!m_PracticeEffect.IsPlaying) { m_PracticeEffect.Play(); } } else { m_PracticeEffect.StopImediatly(); } } public void DisplayEffect(bool levelUp) { m_Effect.StopImediatly(); if (model.displayRealmLevel >= realmLevel) { m_Effect.effect = model.GetRealmStageEffect(realmLevel); m_Effect.Play(); Animator animator = null; if (m_Effect.target != null) { animator = m_Effect.target.GetAnimator(); } if (animator != null) { animator.Play(levelUp ? "open" : "idle", 0); if (levelUp) { StartCoroutine(Co_DelayEffect(animator)); } } } } IEnumerator Co_DelayEffect(Animator animator) { yield return WaitingForSecondConst.WaitMS300; if (animator != null) { animator.Play("idle", 0, 0); } } public void Dispose() { model.selectRealmRefresh -= SelectRealmRefresh; StopAllCoroutines(); } private void SelectRealmRefresh() { DisplaySelect(); DisplayPracticeEffect(); } private void OnSelect() { model.selectRealm = realmLevel; } } }