//-------------------------------------------------------- // [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(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); switch (PlayerDatas.Instance.baseData.Job) { case 1: if (PlayerDatas.Instance.skill.GetSKillById(150) != null) { BoolFb = true; AccordingBool = true; SkillsHole = (int)SkillEffects.skillEffect_xp; SkillSelectedXp.SetActive(true); } break; case 2: if (PlayerDatas.Instance.skill.GetSKillById(250) != null) { BoolFb = true; AccordingBool = true; SkillsHole = (int)SkillEffects.skillEffect_xp; SkillSelectedXp.SetActive(true); } break; } 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 _SkillAndPreTreasure = new Dictionary(); void MagicWeapon()//法宝获取 { var treasureModel = ModelCenter.Instance.GetModel(); var treasures = treasureModel.GetAllTreasure(); for (int i = 0; i < treasures.Count; i++) { Treasure treasure; if (treasureModel.TryGetTreasure(treasures[i], out treasure)) { _SkillAndPreTreasure[treasure.unlockSkill] = 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(); break; case SkillEffects.skillEffect_2: _LongPressShowPanel = Skill2Info.GetChild(0).GetComponent(); break; case SkillEffects.skillEffect_3: _LongPressShowPanel = Skill3Info.GetChild(0).GetComponent(); break; case SkillEffects.skillEffect_4: _LongPressShowPanel = Skill4Info.GetChild(0).GetComponent(); break; case SkillEffects.skillEffect_5: _LongPressShowPanel = Skill5Info.GetChild(0).GetComponent(); break; case SkillEffects.skillEffect_6: _LongPressShowPanel = Skill6Info.GetChild(0).GetComponent(); break; case SkillEffects.skillEffect_7: _LongPressShowPanel = Skill7Info.GetChild(0).GetComponent(); break; case SkillEffects.skillEffect_xp: _LongPressShowPanel = XpSkillInfo.GetChild(0).GetComponent(); break; } PlayerSkillData _PlayerSkillData=null; if ((SkillEffects)SkillsHole == SkillEffects.skillEffect_xp) { if (PlayerDatas.Instance.baseData.Job == 1) { _PlayerSkillData = PlayerDatas.Instance.skill.GetSKillById(150); } else if (PlayerDatas.Instance.baseData.Job == 2) { _PlayerSkillData = PlayerDatas.Instance.skill.GetSKillById(250); } } 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: if (PlayerDatas.Instance.baseData.Job == 1 && PlayerDatas.Instance.skill.GetSKillById(150) == null) { SysNotifyMgr.Instance.ShowTip("SkillXpBtn_Unlock"); } if (PlayerDatas.Instance.baseData.Job == 2 && PlayerDatas.Instance.skill.GetSKillById(250) == 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, } } }