//-------------------------------------------------------- // [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 indexSkillDataDict = new Dictionary(); 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().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); } } } } } } }