//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, November 24, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; using System; using UnityEngine.EventSystems; //XP技能 namespace Snxxz.UI { public class XpSkill : MonoBehaviour { [SerializeField] GameObject XpSkillBtn; [SerializeField] GameObject XpButton; [SerializeField] Image XpBtnImage; [SerializeField] Transform Tran; [SerializeField] ScaleTween m_ScaleTween; [SerializeField] RayAccepter m_RayAccepter; private SkillConfig _XpSkill; public float LongTime = 1f;//等待时间 //=========== private float _currentime = 0; private bool BoolOPen = false;//用来控制Tip开启 private bool AccordingBool = true;//显示开关 private int TreasureID = 101;//获取法宝ID private int m_PlayerXpSkillId = 0; List ProhibitedToRelease = new List(); PlayerMainDate m_MainModel; PlayerMainDate onMainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel()); } } public void Init() { BoolOPen = false; m_RayAccepter.enabled = true; Tran.gameObject.SetActive(false); XpBtnImage.transform.localScale = Vector3.one; Skill.OnSkillCDFinished += OnSkillCDFinished; Skill.OnSkillCast += OnSkillCast; PlayerMainDate.Event_XpSkill += OPenXpSkill; StorageList(); OnStageLoad();//判断是否再副本中 MagicWeapon(); XpButton.SetActive(false); int SkillID = onMainModel.SkillID; if (SkillID == 0) { return; } _XpSkill = SkillConfig.Get(SkillID); Skill _skill = PlayerDatas.Instance.hero.SkillMgr.Get(_XpSkill.SkillID); if (_skill == null) { XpButton.SetActive(false); return; } if (_skill.IsValid()) { XpButton.SetActive(true); } else { XpButton.SetActive(false); } XpBtnImage.SetSprite(_XpSkill.IconName); } private void StorageList() { if (ProhibitedToRelease.Count <= 0) { string str= FuncConfigConfig.Get("XpNoUseDungeon").Numerical1; string [] list = ConfigParse.GetMultipleStr(str);//解析出数组| for (int i = 0; i < list.Length; i++) { ProhibitedToRelease.Add(int.Parse(list[i])); } } } private void OnStageLoad()//判断是否在副本中 { if (ProhibitedToRelease.Contains(PlayerDatas.Instance.baseData.MapID)) { m_RayAccepter.enabled = false; XpSkillBtn.SetActive(false); } else { m_RayAccepter.enabled = true; XpSkillBtn.SetActive(true); } } public void Unit() { Tran.gameObject.SetActive(false); Skill.OnSkillCDFinished -= OnSkillCDFinished; Skill.OnSkillCast -= OnSkillCast; PlayerMainDate.Event_XpSkill -= OPenXpSkill; } private void OPenXpSkill()//获得技能 { int SkillID = onMainModel.SkillID; if (SkillID == 0) return; _XpSkill = SkillConfig.Get(SkillID); XpButton.SetActive(true); XpBtnImage.transform.localScale = Vector3.one; XpBtnImage.SetSprite(_XpSkill.IconName); } private void OnSkillCast(uint objSID, int obj)//技能释放 { if (objSID != PlayerDatas.Instance.PlayerId) { return; } if (obj != 0 && obj == m_PlayerXpSkillId) { Tran.gameObject.SetActive(false); XpButton.SetActive(false); BoolOPen = false; } } private void OnSkillCDFinished(int obj)//冷却结束 { if (obj != 0 && obj == m_PlayerXpSkillId) { XpButton.SetActive(true); XpBtnImage.transform.localScale = Vector3.one; BoolOPen = false; } } private void Start() { UIEventTrigger.Get(XpButton).OnDown = ClickOnDown; UIEventTrigger.Get(XpButton).OnUp = ClickOnUp; } void ClickOnDown(GameObject obj) { if (m_ScaleTween != null) { m_ScaleTween.Play(); } BoolOPen = true; AccordingBool = true; } void ClickOnUp(GameObject obj) { if (m_ScaleTween != null) { m_ScaleTween.Play(true); } PlayerDatas.Instance.hero.CastSkill(_XpSkill.SkillID); BoolOPen = false; _currentime = 0; Tran.gameObject.SetActive(false); } private void LateUpdate() { if (BoolOPen) { _currentime += Time.deltaTime; if (_currentime >= LongTime) { if (AccordingBool) { DynamicallyCreate(); AccordingBool = false; } } } if (!XpButton.activeSelf) { Tran.gameObject.SetActive(false); } } private Dictionary _SkillAndPreTreasure = new Dictionary(); void MagicWeapon()//法宝获取 { if (_SkillAndPreTreasure.Count != 0) return; m_PlayerXpSkillId = ConfigParse.GetDic(FuncConfigConfig.Get("XpSkillID").Numerical1)[PlayerDatas.Instance.baseData.Job];//获取各个职业的XP技能 //var TreasureModel = TreasureConfig.GetValues(); //foreach (var config in TreasureModel) //{ // //int[] Intlist = config.UnLockSkill; // //for (int i = 0; i < Intlist.Length; i++) // //{ // // if (_SkillAndPreTreasure.ContainsKey(Intlist[i])) // // continue; // // _SkillAndPreTreasure.Add(Intlist[i], config.ID); // //} //} } void DynamicallyCreate()//Tip赋值 { Tran.gameObject.SetActive(true); LongPressShowPanel _LongPressShowPanel = Tran.GetChild(0).GetComponent(); TreasureID = _SkillAndPreTreasure[_XpSkill.SkillID]; _LongPressShowPanel.Name.text = SkillConfig.Get(_XpSkill.SkillID).SkillName; _LongPressShowPanel.Describe.text = SkillConfig.Get(_XpSkill.SkillID).Description; var treasureConfig = TreasureConfig.Get(TreasureID); _LongPressShowPanel.m_Icon.SetSprite(treasureConfig.Icon); } } }