//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, October 31, 2017
|
//--------------------------------------------------------
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
namespace Snxxz.UI
|
{
|
|
public class SkillButtonEffects : MonoBehaviour
|
{
|
[SerializeField] AttackButton m_Attack;
|
|
[SerializeField] SkillButton m_BlinkSkill;
|
[SerializeField] SkillButton m_Skill1;
|
[SerializeField] SkillButton m_Skill2;
|
[SerializeField] SkillButton m_Skill3;
|
[SerializeField] SkillButton m_Skill4;
|
[SerializeField] SkillButton m_Skill5;
|
[SerializeField] SkillButton m_Skill6;
|
[SerializeField] SkillButton m_Skill7;
|
[SerializeField] SkillButton m_SkillXp;
|
|
[SerializeField] Transform Skill1Info;
|
[SerializeField] Transform Skill2Info;
|
[SerializeField] Transform Skill3Info;
|
[SerializeField] Transform Skill4Info;
|
[SerializeField] Transform Skill5Info;
|
[SerializeField] Transform Skill6Info;
|
[SerializeField] Transform Skill7Info;
|
[SerializeField] Transform XpSkillInfo;
|
|
[SerializeField] GameObject SkillSelected1;
|
[SerializeField] GameObject SkillSelected2;
|
[SerializeField] GameObject SkillSelected3;
|
[SerializeField] GameObject SkillSelected4;
|
[SerializeField] GameObject SkillSelected5;
|
[SerializeField] GameObject SkillSelected6;
|
[SerializeField] GameObject SkillSelected7;
|
[SerializeField] GameObject SkillSelectedXp;
|
|
LongPressShowPanel _LongPressShowPanel;
|
public float TimeLong = 1f;
|
private bool BoolFb = false;
|
private bool AccordingBool = true;//显示开关
|
private int SkillsHole = -1;//获取技能孔
|
private float _currentime = 0;
|
private int m_PlayerXpSkillId = 0;
|
private bool _bool = false;
|
UIEffect effect;
|
|
private float preTime = 0;
|
|
private void Awake()
|
{
|
m_PlayerXpSkillId = ConfigParse.GetDic<int, int>(FuncConfigConfig.Get("XpSkillID").Numerical1)[PlayerDatas.Instance.baseData.Job];//获取各个职业的XP技能
|
MagicWeapon();
|
}
|
|
public void Init()
|
{
|
SkillSelected1.SetActive(false);
|
SkillSelected2.SetActive(false);
|
SkillSelected3.SetActive(false);
|
SkillSelected4.SetActive(false);
|
SkillSelected5.SetActive(false);
|
SkillSelected6.SetActive(false);
|
SkillSelected7.SetActive(false);
|
SkillSelectedXp.SetActive(false);
|
TipShutDown(-1);
|
|
Skill.OnSkillCDFinished += OnSkillCDFinished;
|
Skill.OnSkillCast += OnSkillCast;
|
}
|
|
public void UnInit()
|
{
|
TipShutDown(-1);
|
Skill.OnSkillCDFinished -= OnSkillCDFinished;
|
Skill.OnSkillCast -= OnSkillCast;
|
}
|
|
private void OnSkillCast(uint objSID, int obj)
|
{
|
if (objSID != PlayerDatas.Instance.PlayerId)
|
{
|
return;
|
}
|
if (obj != 0 && obj == m_PlayerXpSkillId)
|
{
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_SkillXp.transform, false);
|
}
|
int position = PlayerDatas.Instance.skill.ContainsQuickSkill(obj);
|
switch ((SkillEffects)position)
|
{
|
case SkillEffects.skillEffect_1:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill1.transform, false);
|
break;
|
case SkillEffects.skillEffect_2:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill2.transform, false);
|
break;
|
case SkillEffects.skillEffect_3:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill3.transform, false);
|
break;
|
case SkillEffects.skillEffect_4:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill4.transform, false);
|
break;
|
case SkillEffects.skillEffect_5:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill5.transform, false);
|
break;
|
case SkillEffects.skillEffect_6:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill6.transform, false);
|
break;
|
case SkillEffects.skillEffect_7:
|
EffectMgr.Instance.PlayUIEffect(1023, 1500, m_Skill7.transform, false);
|
break;
|
case SkillEffects.skillEffect_xp:
|
//EffectMgr.Instance.PlayUIEffect(1023, 1500, m_SkillXp.transform, false);
|
break;
|
default:
|
break;
|
}
|
|
}
|
|
private void OnSkillCDFinished(int obj)
|
{
|
if (obj != 0 && obj == m_PlayerXpSkillId)
|
{
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_SkillXp.transform, false);
|
}
|
int position = PlayerDatas.Instance.skill.ContainsQuickSkill(obj);
|
switch ((SkillEffects)position)
|
{
|
case SkillEffects.skillEffect_1:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill1.transform, false);
|
break;
|
case SkillEffects.skillEffect_2:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill2.transform, false);
|
break;
|
case SkillEffects.skillEffect_3:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill3.transform, false);
|
break;
|
case SkillEffects.skillEffect_4:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill4.transform, false);
|
break;
|
case SkillEffects.skillEffect_5:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill5.transform, false);
|
break;
|
case SkillEffects.skillEffect_6:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill6.transform, false);
|
break;
|
case SkillEffects.skillEffect_7:
|
EffectMgr.Instance.PlayUIEffect(1024, 1500, m_Skill7.transform, false);
|
break;
|
case SkillEffects.skillEffect_xp:
|
//EffectMgr.Instance.PlayUIEffect(1024, 1500, m_SkillXp.transform, false);
|
break;
|
default:
|
break;
|
}
|
}
|
|
private void Start()
|
{
|
UIEventTrigger.Get(m_Attack.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill1.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill2.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill3.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill4.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill5.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill6.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_Skill7.gameObject).OnDown = DownAttackButton;
|
UIEventTrigger.Get(m_SkillXp.gameObject).OnDown = DownAttackButton;
|
|
UIEventTrigger.Get(m_Attack.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill1.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill2.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill3.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill4.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill5.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill6.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_Skill7.gameObject).OnUp = UpAttackButton;
|
UIEventTrigger.Get(m_SkillXp.gameObject).OnUp = UpAttackButton;
|
}
|
|
private void OnComplete()
|
{
|
if (_bool)
|
{
|
effect = EffectMgr.Instance.PlayUIEffect(1021, 1500, m_Attack.transform, false);
|
effect.OnComplete = OnComplete;
|
}
|
}
|
|
void DownAttackButton(GameObject go)
|
{
|
switch (go.name)
|
{
|
case "AttackBtn":
|
preTime = Time.time;
|
effect = EffectMgr.Instance.PlayUIEffect(1021, 1500, m_Attack.transform, false);
|
effect.OnComplete = OnComplete;
|
_bool = true;
|
break;
|
case "Btn_Skill1":
|
Prompting((int)SkillEffects.skillEffect_1);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_1) == null)
|
{
|
return;
|
}
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_1;
|
SkillSelected1.SetActive(true);
|
break;
|
case "Btn_Skill2":
|
Prompting((int)SkillEffects.skillEffect_2);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_2) == null)
|
return;
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_2;
|
SkillSelected2.SetActive(true);
|
break;
|
case "Btn_Skill3":
|
Prompting((int)SkillEffects.skillEffect_3);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_3) == null)
|
return;
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_3;
|
SkillSelected3.SetActive(true);
|
break;
|
case "Btn_Skill4":
|
Prompting((int)SkillEffects.skillEffect_4);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_4) == null)
|
return;
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_4;
|
SkillSelected4.SetActive(true);
|
break;
|
case "Btn_Skill5":
|
Prompting((int)SkillEffects.skillEffect_5);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_5) == null)
|
return;
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_5;
|
SkillSelected5.SetActive(true);
|
break;
|
case "Btn_Skill6":
|
Prompting((int)SkillEffects.skillEffect_6);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_6) == null)
|
return;
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_6;
|
SkillSelected6.SetActive(true);
|
break;
|
case "Btn_Skill7":
|
Prompting((int)SkillEffects.skillEffect_7);
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos((int)SkillEffects.skillEffect_7) == null)
|
return;
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_7;
|
SkillSelected7.SetActive(true);
|
break;
|
case "Btn_SkillXp":
|
Prompting((int)SkillEffects.skillEffect_xp);
|
var skillModel = ModelCenter.Instance.GetModel<SkillModel>();
|
var xpSkillId = skillModel.GetXpSkillID();
|
if (PlayerDatas.Instance.skill.GetSKillById(xpSkillId) != null)
|
{
|
BoolFb = true;
|
AccordingBool = true;
|
SkillsHole = (int)SkillEffects.skillEffect_xp;
|
SkillSelectedXp.SetActive(true);
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
|
void UpAttackButton(GameObject go)
|
{
|
_currentime = 0;
|
TipShutDown(-1);
|
switch (go.name)
|
{
|
case "AttackBtn":
|
_bool = false;
|
if (effect != null)
|
{
|
if (Time.time - preTime < effect.duration)
|
{
|
effect.OnComplete = null;
|
}
|
}
|
break;
|
case "Btn_Skill1":
|
BoolFb = false;
|
SkillSelected1.SetActive(false);
|
break;
|
case "Btn_Skill2":
|
BoolFb = false;
|
SkillSelected2.SetActive(false);
|
break;
|
case "Btn_Skill3":
|
BoolFb = false;
|
SkillSelected3.SetActive(false);
|
break;
|
case "Btn_Skill4":
|
BoolFb = false;
|
SkillSelected4.SetActive(false);
|
break;
|
case "Btn_Skill5":
|
BoolFb = false;
|
SkillSelected5.SetActive(false);
|
break;
|
case "Btn_Skill6":
|
BoolFb = false;
|
SkillSelected6.SetActive(false);
|
break;
|
case "Btn_Skill7":
|
BoolFb = false;
|
SkillSelected7.SetActive(false);
|
break;
|
case "Btn_SkillXp":
|
BoolFb = false;
|
SkillSelectedXp.SetActive(false);
|
break;
|
default:
|
break;
|
}
|
}
|
|
private Dictionary<int, int> _SkillAndPreTreasure = new Dictionary<int, int>();
|
void MagicWeapon()//法宝获取
|
{
|
var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
|
var treasures = treasureModel.GetAllTreasure();
|
|
for (int i = 0; i < treasures.Count; i++)
|
{
|
Treasure treasure;
|
if (treasureModel.TryGetTreasure(treasures[i], out treasure))
|
{
|
_SkillAndPreTreasure[treasure.skillId] = treasures[i];
|
}
|
}
|
}
|
|
private void LateUpdate()
|
{
|
if (BoolFb)
|
{
|
_currentime += Time.deltaTime;
|
if (_currentime >= TimeLong)
|
{
|
if (AccordingBool)
|
{
|
DynamicallyCreate();
|
AccordingBool = false;
|
}
|
|
}
|
}
|
}
|
|
void DynamicallyCreate()
|
{
|
TipShutDown(SkillsHole);
|
switch ((SkillEffects)SkillsHole)
|
{
|
case SkillEffects.skillEffect_1:
|
_LongPressShowPanel = Skill1Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_2:
|
_LongPressShowPanel = Skill2Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_3:
|
_LongPressShowPanel = Skill3Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_4:
|
_LongPressShowPanel = Skill4Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_5:
|
_LongPressShowPanel = Skill5Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_6:
|
_LongPressShowPanel = Skill6Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_7:
|
_LongPressShowPanel = Skill7Info.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
case SkillEffects.skillEffect_xp:
|
_LongPressShowPanel = XpSkillInfo.GetChild(0).GetComponent<LongPressShowPanel>();
|
break;
|
}
|
PlayerSkillData _PlayerSkillData = null;
|
if ((SkillEffects)SkillsHole == SkillEffects.skillEffect_xp)
|
{
|
var skillModel = ModelCenter.Instance.GetModel<SkillModel>();
|
var xpSkillId = skillModel.GetXpSkillID();
|
_PlayerSkillData = PlayerDatas.Instance.skill.GetSKillById(xpSkillId);
|
}
|
else
|
{
|
_PlayerSkillData = PlayerDatas.Instance.skill.GetQuickSkillByPos(SkillsHole);
|
}
|
if (!_SkillAndPreTreasure.ContainsKey(_PlayerSkillData.id))
|
{
|
DebugEx.LogError("法宝表没有对应的技能ID" + _PlayerSkillData.id);
|
return;
|
}
|
else
|
{
|
int FBID = _SkillAndPreTreasure[_PlayerSkillData.id];
|
_LongPressShowPanel.Name.text = SkillConfig.Get(_PlayerSkillData.id).SkillName;
|
_LongPressShowPanel.Describe.text = SkillConfig.Get(_PlayerSkillData.id).Description;
|
|
var treasureConfig = TreasureConfig.Get(FBID);
|
_LongPressShowPanel.m_Icon.SetSprite(treasureConfig.Icon);
|
}
|
|
}
|
|
|
void TipShutDown(int _index)
|
{
|
Skill1Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_1);
|
Skill2Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_2);
|
Skill3Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_3);
|
Skill4Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_4);
|
Skill5Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_5);
|
Skill6Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_6);
|
Skill7Info.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_7);
|
XpSkillInfo.gameObject.SetActive((SkillEffects)_index == SkillEffects.skillEffect_xp);
|
}
|
|
void Prompting(int _Skillindex)
|
{
|
if (PlayerDatas.Instance.skill.GetQuickSkillByPos(_Skillindex) == null)
|
{
|
switch ((SkillEffects)_Skillindex)
|
{
|
case SkillEffects.skillEffect_1:
|
SysNotifyMgr.Instance.ShowTip("Skill1Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_2:
|
SysNotifyMgr.Instance.ShowTip("Skill2Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_3:
|
SysNotifyMgr.Instance.ShowTip("Skill3Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_4:
|
SysNotifyMgr.Instance.ShowTip("Skill4Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_5:
|
SysNotifyMgr.Instance.ShowTip("Skill5Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_6:
|
SysNotifyMgr.Instance.ShowTip("Skill6Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_7:
|
SysNotifyMgr.Instance.ShowTip("Skill7Btn_Unlock");
|
break;
|
case SkillEffects.skillEffect_xp:
|
var skillModel = ModelCenter.Instance.GetModel<SkillModel>();
|
var xpSkillId = skillModel.GetXpSkillID();
|
if (PlayerDatas.Instance.skill.GetSKillById(xpSkillId) == null)
|
{
|
SysNotifyMgr.Instance.ShowTip("SkillXpBtn_Unlock");
|
}
|
break;
|
}
|
}
|
else
|
{
|
int SkillID = PlayerDatas.Instance.skill.GetQuickSkillByPos(_Skillindex).id;
|
Skill _skill = PlayerDatas.Instance.hero.SkillMgr.Get(SkillID);
|
if (!_skill.IsValid())
|
{
|
SysNotifyMgr.Instance.ShowTip("SkillBtn_CD");
|
}
|
}
|
|
}
|
|
private enum SkillEffects
|
{
|
skillEffect_1 = 0,
|
skillEffect_2 = 1,
|
skillEffect_3 = 2,
|
skillEffect_4 = 3,
|
skillEffect_5 = 4,
|
skillEffect_6 = 5,
|
skillEffect_7 = 6,
|
skillEffect_xp = 7,
|
}
|
}
|
|
}
|