//-------------------------------------------------------- 
 | 
//    [Author]:           第二世界 
 | 
//    [  Date ]:           Saturday, September 02, 2017 
 | 
//-------------------------------------------------------- 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
using System.Collections.Generic; 
 | 
  
 | 
namespace vnxbqy.UI 
 | 
{ 
 | 
  
 | 
    public class SkillContainer : MonoBehaviour 
 | 
    { 
 | 
        [SerializeField] SkillTurnplate m_SkillTurnplate; 
 | 
        public SkillTurnplate skillTurnplate { get { return m_SkillTurnplate; } } 
 | 
  
 | 
        [SerializeField] Button m_Switch; 
 | 
        public Button switchButton { get { return m_Switch; } } 
 | 
  
 | 
        [SerializeField] AttackButton m_Attack; 
 | 
        public Button attack { get { return m_Attack; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_BlinkSkill; 
 | 
        public SkillButton blinkSkill { get { return m_BlinkSkill; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill1; 
 | 
        public SkillButton skill1 { get { return m_Skill1; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill2; 
 | 
        public SkillButton skill2 { get { return m_Skill2; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill3; 
 | 
        public SkillButton skill3 { get { return m_Skill3; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill4; 
 | 
        public SkillButton skill4 { get { return m_Skill4; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill5; 
 | 
        public SkillButton skill5 { get { return m_Skill5; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill6; 
 | 
        public SkillButton skill6 { get { return m_Skill6; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill7; 
 | 
        public SkillButton skill7 { get { return m_Skill7; } } 
 | 
  
 | 
        [SerializeField] SkillButton m_Skill8; 
 | 
        public SkillButton skill8 { get { return m_Skill8; } } 
 | 
  
 | 
        const int SKILL_COUNT_MAX = 8; 
 | 
        Dictionary<int, int> indexSkillDataDict = new Dictionary<int, int>(); 
 | 
  
 | 
        public void Init() 
 | 
        { 
 | 
            m_SkillTurnplate.Init(); 
 | 
            m_Switch.AddListener(SwitchTarget); 
 | 
            m_Attack.AddListener(CastAttack); 
 | 
            m_BlinkSkill.AddDownListener(CastBlinkSkill); 
 | 
  
 | 
            m_Skill1.AddDownListener(CastSkill1); 
 | 
            m_Skill2.AddDownListener(CastSkill2); 
 | 
            m_Skill3.AddDownListener(CastSkill3); 
 | 
            m_Skill4.AddDownListener(CastSkill4); 
 | 
            m_Skill5.AddDownListener(CastSkill5); 
 | 
            m_Skill6.AddDownListener(CastSkill6); 
 | 
            m_Skill7.AddDownListener(CastSkill7); 
 | 
            m_Skill8.AddDownListener(CastSkill8); 
 | 
  
 | 
            m_BlinkSkill.AddUpListener(PrepareCastBlinkSkill); 
 | 
            m_Skill1.AddUpListener(PrepareCastSkill1); 
 | 
            m_Skill2.AddUpListener(PrepareCastSkill2); 
 | 
            m_Skill3.AddUpListener(PrepareCastSkill3); 
 | 
            m_Skill4.AddUpListener(PrepareCastSkill4); 
 | 
            m_Skill5.AddUpListener(PrepareCastSkill5); 
 | 
            m_Skill6.AddUpListener(PrepareCastSkill6); 
 | 
            m_Skill7.AddUpListener(PrepareCastSkill7); 
 | 
            m_Skill8.AddUpListener(PrepareCastSkill8); 
 | 
  
 | 
            MainWinSkillController.Instance.InitSkill(); 
 | 
            OnSkillRefresh(); 
 | 
            //HandleAchievement(); 
 | 
            PlayerSkillDatas.OnRefreshSkill += OnSkillRefresh; 
 | 
        } 
 | 
  
 | 
        public void UnInit() 
 | 
        { 
 | 
            m_SkillTurnplate.UnInit(); 
 | 
            m_Switch.RemoveAllListeners(); 
 | 
            m_Attack.RemoveListener(); 
 | 
            m_BlinkSkill.RemoveAllListeners(); 
 | 
  
 | 
            m_Skill1.RemoveAllListeners(); 
 | 
            m_Skill2.RemoveAllListeners(); 
 | 
            m_Skill3.RemoveAllListeners(); 
 | 
            m_Skill4.RemoveAllListeners(); 
 | 
            m_Skill5.RemoveAllListeners(); 
 | 
            m_Skill6.RemoveAllListeners(); 
 | 
            m_Skill7.RemoveAllListeners(); 
 | 
            m_Skill8.RemoveAllListeners();  
 | 
  
 | 
            m_BlinkSkill.Dispose(); 
 | 
            m_Skill1.Dispose(); 
 | 
            m_Skill2.Dispose(); 
 | 
            m_Skill3.Dispose(); 
 | 
            m_Skill4.Dispose(); 
 | 
            m_Skill5.Dispose(); 
 | 
            m_Skill6.Dispose(); 
 | 
            m_Skill7.Dispose(); 
 | 
            m_Skill8.Dispose(); 
 | 
  
 | 
            PlayerSkillDatas.OnRefreshSkill -= OnSkillRefresh; 
 | 
            //if (AchievementGoto.achievementType == AchievementGoto.ExcuteSkill) 
 | 
            //{ 
 | 
            //    AchievementGoto.achievementType = 0; 
 | 
            //} 
 | 
        } 
 | 
  
 | 
        private void OnSkillRefresh() 
 | 
        { 
 | 
            for (int i = 0; i < SKILL_COUNT_MAX; i++) 
 | 
            { 
 | 
                var skillData = PlayerDatas.Instance.skill.GetQuickSkillByPos(i); 
 | 
                indexSkillDataDict[i] = skillData == null ? 0 : skillData.id; 
 | 
            } 
 | 
  
 | 
            m_Skill1.Initialize(indexSkillDataDict[0]); 
 | 
            m_Skill2.Initialize(indexSkillDataDict[1]); 
 | 
            m_Skill3.Initialize(indexSkillDataDict[2]); 
 | 
            m_Skill4.Initialize(indexSkillDataDict[3]); 
 | 
            m_Skill5.Initialize(indexSkillDataDict[4]); 
 | 
            m_Skill6.Initialize(indexSkillDataDict[5]); 
 | 
            m_Skill7.Initialize(indexSkillDataDict[6]); 
 | 
            m_Skill8.Initialize(indexSkillDataDict[7]); 
 | 
  
 | 
            var blinkSkillData = PlayerDatas.Instance.skill.GetSKillById(190); 
 | 
            m_BlinkSkill.Initialize(blinkSkillData == null ? 0 : blinkSkillData.id); 
 | 
              
 | 
        } 
 | 
  
 | 
        void SwitchTarget() 
 | 
        { 
 | 
            if (PlayerDatas.Instance.hero != null) 
 | 
            { 
 | 
                PlayerDatas.Instance.hero.SwitchTarget(); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        void CastAttack() 
 | 
        { 
 | 
            if (PlayerDatas.Instance.hero != null) 
 | 
            { 
 | 
                PlayerDatas.Instance.hero.ComAtk(); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        void CastBlinkSkill() 
 | 
        { 
 | 
            if (PlayerDatas.Instance.skill.GetSKillById(190) == null) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(190); 
 | 
        } 
 | 
  
 | 
        void CastSkill1() 
 | 
        { 
 | 
            if (indexSkillDataDict[0] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[0]); 
 | 
        } 
 | 
  
 | 
        void CastSkill2() 
 | 
        { 
 | 
            if (indexSkillDataDict[1] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[1]); 
 | 
        } 
 | 
  
 | 
        void CastSkill3() 
 | 
        { 
 | 
            if (indexSkillDataDict[2] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[2]); 
 | 
        } 
 | 
  
 | 
        void CastSkill4() 
 | 
        { 
 | 
            if (indexSkillDataDict[3] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[3]); 
 | 
        } 
 | 
  
 | 
        void CastSkill5() 
 | 
        { 
 | 
            if (indexSkillDataDict[4] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[4]); 
 | 
        } 
 | 
  
 | 
        void CastSkill6() 
 | 
        { 
 | 
            if (indexSkillDataDict[5] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[5]); 
 | 
        } 
 | 
  
 | 
        void CastSkill7() 
 | 
        { 
 | 
            if (indexSkillDataDict[6] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[6]); 
 | 
        }  
 | 
  
 | 
        void CastSkill8() 
 | 
        { 
 | 
            if (indexSkillDataDict[7] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoCastSkill(indexSkillDataDict[7]); 
 | 
        }  
 | 
  
 | 
  
 | 
        void PrepareCastSkill1() 
 | 
        { 
 | 
            if (indexSkillDataDict[0] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[0]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill2() 
 | 
        { 
 | 
  
 | 
            if (indexSkillDataDict[1] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[1]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill3() 
 | 
        { 
 | 
            if (indexSkillDataDict[2] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[2]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill4() 
 | 
        { 
 | 
            if (indexSkillDataDict[3] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[3]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill5() 
 | 
        { 
 | 
            if (indexSkillDataDict[4] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[4]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill6() 
 | 
        { 
 | 
            if (indexSkillDataDict[5] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[5]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill7() 
 | 
        { 
 | 
            if (indexSkillDataDict[6] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[6]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastSkill8() 
 | 
        { 
 | 
            if (indexSkillDataDict[7] == 0) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(indexSkillDataDict[7]); 
 | 
        } 
 | 
  
 | 
        void PrepareCastBlinkSkill() 
 | 
        { 
 | 
            if (PlayerDatas.Instance.skill.GetSKillById(190) == null) 
 | 
            { 
 | 
                DebugEx.Log("技能未解锁"); 
 | 
                return; 
 | 
            } 
 | 
  
 | 
            DoPrepareCast(190); 
 | 
        } 
 | 
  
 | 
        private void DoCastSkill(int skillID) 
 | 
        { 
 | 
            SkillConfig _skillModel = SkillConfig.Get(skillID); 
 | 
  
 | 
            if (_skillModel != null) 
 | 
            { 
 | 
                if (_skillModel.CastTime > 0) 
 | 
                { 
 | 
                    if (PlayerDatas.Instance.hero != null) 
 | 
                    { 
 | 
                        PlayerDatas.Instance.hero.CastSkill(skillID); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private void DoPrepareCast(int skillID) 
 | 
        { 
 | 
            SkillConfig _skillModel = SkillConfig.Get(skillID); 
 | 
  
 | 
            if (_skillModel != null) 
 | 
            { 
 | 
                if (_skillModel.CastTime > 0) 
 | 
                { 
 | 
                    if (PlayerDatas.Instance.hero != null) 
 | 
                    { 
 | 
                        PlayerDatas.Instance.hero.Behaviour.DoPrepareCast(skillID); 
 | 
                    } 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    PlayerDatas.Instance.hero.CastSkill(skillID); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        void HandleAchievement() 
 | 
        { 
 | 
            if (AchievementGoto.achievementType == AchievementGoto.ExcuteSkill) 
 | 
            { 
 | 
                var _cfg = SuccessConfig.Get(AchievementGoto.guideAchievementId); 
 | 
                var _skillId = SkillConfig.FindSkillByJob(_cfg.Condition, PlayerDatas.Instance.baseData.Job); 
 | 
                if (_skillId != 0) 
 | 
                { 
 | 
                    if (ModelCenter.Instance.GetModel<SkillModel>().GetXpSkillID() == _skillId) 
 | 
                    { 
 | 
                        return; 
 | 
                    } 
 | 
                    var _pos = PlayerDatas.Instance.skill.ContainsQuickSkill(_skillId); 
 | 
                    if (_pos >= 0) 
 | 
                    { 
 | 
                        var _page = _pos >= 3 ? 2 : 1; 
 | 
                        skillTurnplate.SwitchGroup(_page); 
 | 
                        Transform _parent = null; 
 | 
                        switch (_pos) 
 | 
                        { 
 | 
                            case 0: 
 | 
                                _parent = m_Skill1.transform; 
 | 
                                break; 
 | 
                            case 1: 
 | 
                                _parent = m_Skill2.transform; 
 | 
                                break; 
 | 
                            case 2: 
 | 
                                _parent = m_Skill3.transform; 
 | 
                                break; 
 | 
                            case 3: 
 | 
                                _parent = m_Skill4.transform; 
 | 
                                break; 
 | 
                            case 4: 
 | 
                                _parent = m_Skill5.transform; 
 | 
                                break; 
 | 
                            case 5: 
 | 
                                _parent = m_Skill6.transform; 
 | 
                                break; 
 | 
                            case 6: 
 | 
                                _parent = m_Skill7.transform; 
 | 
                                break; 
 | 
                        } 
 | 
                        if (_parent != null) 
 | 
                        { 
 | 
                            var _effect = AchievementGuideEffectPool.Require(3); 
 | 
                            _effect.transform.SetParentEx(_parent, Vector3.zero, Vector3.zero, Vector3.one); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |