//--------------------------------------------------------
|
// [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 vnxbqy.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<int> ProhibitedToRelease = new List<int>();
|
PlayerMainDate m_MainModel;
|
PlayerMainDate onMainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
|
public void Init()
|
{
|
BoolOPen = false;
|
m_RayAccepter.enabled = true;
|
Tran.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.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.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.SetActive(false);
|
}
|
private void LateUpdate()
|
{
|
if (BoolOPen)
|
{
|
_currentime += Time.deltaTime;
|
if (_currentime >= LongTime)
|
{
|
if (AccordingBool)
|
{
|
DynamicallyCreate();
|
AccordingBool = false;
|
}
|
}
|
}
|
if (!XpButton.activeSelf)
|
{
|
Tran.SetActive(false);
|
}
|
}
|
|
|
private Dictionary<int, int> _SkillAndPreTreasure = new Dictionary<int, int>();
|
void MagicWeapon()//法宝获取
|
{
|
if (_SkillAndPreTreasure.Count != 0)
|
return;
|
m_PlayerXpSkillId = ConfigParse.GetDic<int, int>(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.SetActive(true);
|
LongPressShowPanel _LongPressShowPanel = Tran.GetChild(0).GetComponent<LongPressShowPanel>();
|
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);
|
}
|
|
}
|
|
}
|