少年修仙传客户端代码仓库
client_Wu Xijin
2019-04-12 5c6d49f48e70fd37919e948468a1c24d5aa2990e
System/MainInterfacePanel/SkillButtonEffects.cs
@@ -11,499 +11,6 @@
    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,
        }
    }
}