//--------------------------------------------------------
|
// [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);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
}
|