少年修仙传客户端代码仓库
hch
2025-03-19 6770e1eb64c4282def45adb824b14b2a407fdd30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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] UIEffect m_Effect;
        [SerializeField] UIEffect m_PracticeEffect;
 
        public int realmLevel { get; private set; }
 
        public int animIndex { get; set; }
 
        RealmModel model { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
 
 
        public void Display(int _realmLv)
        {
            this.realmLevel = _realmLv;
 
            model.selectRealmRefresh -= SelectRealmRefresh;
            model.selectRealmRefresh += SelectRealmRefresh;
 
            DisplayBase();
            DisplayPracticeEffect();
            DisplayEffect(false);
        }
 
        void DisplayBase()
        {
            var config = RealmConfig.Get(realmLevel);
            m_RealmIcon.SetSprite(config.Img);
        }
 
 
 
        void DisplayPracticeEffect()
        {
            if (model.displayRealmLevel == 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()
        {
            DisplayPracticeEffect();
        }
 
        private void OnSelect()
        {
            //model.selectRealm = realmLevel;
        }
    }
}