少年修仙传客户端代码仓库
client_linchunjie
2019-04-17 f1f2599ba0e6b64358ffef7ae5c9f9af3ed8b8b4
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, March 21, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using System;
 
//是否显示XP
namespace Snxxz.UI
{
 
    public class IsShowXpButton : MonoBehaviour
    {
        [SerializeField] UIEffect m_UiEffect;
        List<int> ProhibitedToRelease = new List<int>();
        PlayerMainDate m_MainModel;
        PlayerMainDate onMainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
        private int m_PlayerXpSkillId = 0;
        private SkillConfig _XpSkill;
 
        public void Init()
        {
            m_PlayerXpSkillId = ConfigParse.GetDic<int, int>(FuncConfigConfig.Get("XpSkillID").Numerical1)[PlayerDatas.Instance.baseData.Job];//获取各个职业的XP技能
            StorageList();
            Skill.OnSkillCDFinished += OnSkillCDFinished;
            Skill.OnSkillCast += OnSkillCast;
            PlayerMainDate.Event_XpSkill += OPenXpSkill;
            int MapIDNow = PlayerDatas.Instance.baseData.MapID;
            if (ProhibitedToRelease.Contains(MapIDNow))
            {
                this.gameObject.SetActive(false);
            }
            else
            {
                this.gameObject.SetActive(true);
            }
            int SkillID = onMainModel.SkillID;
            if (SkillID == 0)
            {
                return;
            }
            _XpSkill = SkillConfig.Get(SkillID);
            if (_XpSkill != null)
            {
                if (PlayerDatas.Instance.hero != null)
                {
                    Skill _skill = PlayerDatas.Instance.hero.SkillMgr.Get(_XpSkill.SkillID);
                    if (_skill.IsValid())
                    {
                        if (!m_UiEffect.IsPlaying)
                        {
                            m_UiEffect.Play();
                        }
                    }
                    else
                    {
                        if (m_UiEffect.IsPlaying)
                        {
                            m_UiEffect.Stop();
                        }
                    }
                }
            }
        }
 
        public void Unit()
        {
 
            Skill.OnSkillCDFinished -= OnSkillCDFinished;
            Skill.OnSkillCast -= OnSkillCast;
            PlayerMainDate.Event_XpSkill -= OPenXpSkill;
        }
 
        private void OPenXpSkill()//获得技能
        {
            if (onMainModel.SkillID != 0)
            {
                if (!m_UiEffect.IsPlaying)
                {
                    m_UiEffect.Play();
                }
            }
        }
 
        private void OnSkillCast(uint objSID, int obj)//技能释放
        {
            if (objSID != PlayerDatas.Instance.PlayerId)
            {
                return;
            }
            if (obj != 0 && obj == m_PlayerXpSkillId)
            {
                if (m_UiEffect.IsPlaying)
                {
                    m_UiEffect.Stop();
                }
            }
        }
 
        private void OnSkillCDFinished(int obj)//冷却结束
        {
            if (obj != 0 && obj == m_PlayerXpSkillId)
            {
                if (!m_UiEffect.IsPlaying)
                {
                    m_UiEffect.Play();
                }
            }
        }
 
        private void StorageList()
        {
            if (ProhibitedToRelease.Count <= 0)
            {
                string str = FuncConfigConfig.Get("XpNoUseDungeon").Numerical1;
                string[] list = ConfigParse.GetMultipleStr(str);//解析出数组|
 
                for (int i = 0; i < list.Length; i++)
                {
                    ProhibitedToRelease.Add(int.Parse(list[i]));
                }
            }
        }
 
    }
 
}