From 8c1184fced045f133de6cc7fe55deb38e1884812 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期六, 13 四月 2019 11:30:50 +0800
Subject: [PATCH] Merge branch 'master' into HazyRegion
---
System/MainWin/SkillButton.cs | 327 +++++++++++++++++++++++++++++++++++++----------------
1 files changed, 226 insertions(+), 101 deletions(-)
diff --git a/System/MainWin/SkillButton.cs b/System/MainWin/SkillButton.cs
index 6732b95..9866027 100644
--- a/System/MainWin/SkillButton.cs
+++ b/System/MainWin/SkillButton.cs
@@ -6,7 +6,6 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
-
using UnityEngine.EventSystems;
using UnityEngine.Events;
@@ -28,64 +27,32 @@
public class SkillButton : SkillButtonInterface, IPointerExitHandler
{
+ [SerializeField] int m_Index;
[SerializeField] SkillTurnplate m_SkillTurnplate;
- [SerializeField] Image m_Icon;
- public Image icon { get { return m_Icon; } }
+ [SerializeField] ImageEx m_Icon;
[SerializeField] Transform m_Locked;
- public Transform locked
- {
- get
- {
- return m_Locked;
- }
- }
-
[SerializeField] Text m_CoolDown;
[SerializeField] Image m_CoolDownMask;
[SerializeField] ScaleTween m_ScaleTween;
+ [SerializeField] Image m_Selected;
+ [SerializeField] LongPressShowPanel m_SkillTip;
- [Header("閬僵鏄惁鍙嶅悜")]
- public bool Isreverse = false;
+ public Image icon { get { return m_Icon; } }
+ public Transform locked { get { return m_Locked; } }
+
UIEvent skillEvent1 = new UIEvent();
UIEvent skillEvent2 = new UIEvent();
bool isExit = false;
- float m_TotalCoolDown = 0f;
- public float totalCoolDown
- {
- get
- {
- return m_TotalCoolDown;
- }
- set
- {
- m_TotalCoolDown = value;
- }
- }
-
- float m_CoolDownCompleteTime = 0f;
- public float coolDownCompleteTime
- {
- get
- {
- return m_CoolDownCompleteTime;
- }
- set
- {
- m_CoolDownCompleteTime = value;
- }
- }
-
+ bool inCountDown = false;
float timer = 0f;
- PlayerSkillData m_SkillData = null;
- Skill skillBuf = null;
- float fillAmountRevise = 1f;
+ int skillId = 0;
- public void SetSkillData(PlayerSkillData _skillData)
+ public void Initialize(int skillId)
{
- m_SkillData = _skillData;
- if (m_SkillData == null)
+ this.skillId = skillId;
+ if (this.skillId == 0)
{
locked.gameObject.SetActive(true);
m_Icon.gameObject.SetActive(false);
@@ -98,30 +65,32 @@
locked.gameObject.SetActive(false);
m_Icon.gameObject.SetActive(true);
}
- var skillConfig = m_SkillData.skillCfg;
+
+ var skillConfig = SkillConfig.Get(this.skillId);
m_Icon.SetSprite(skillConfig.IconName);
-
- if (skillBuf != null)
- {
- skillBuf.RefreshCD -= OnSkillCDRefresh;
- }
-
- if (PlayerDatas.Instance.hero != null)
- {
- skillBuf = PlayerDatas.Instance.hero.SkillMgr.Get(m_SkillData.id);
- OnSkillCDRefresh(skillBuf.cd, skillBuf.skillInfo.config.CoolDownTime * Constants.F_GAMMA);
- skillBuf.RefreshCD += OnSkillCDRefresh;
- }
}
+ DisplaySkillDynamicInfo(true);
+ m_Selected.gameObject.SetActive(false);
+ HideSkillTip();
+
+ this.enabled = true;
}
public void Dispose()
{
- if (skillBuf != null)
+ if (showSkillTipClock != null)
{
- skillBuf.RefreshCD -= OnSkillCDRefresh;
+ Clock.Stop(showSkillTipClock);
+ showSkillTipClock = null;
}
+
+ if (m_Index != 0)
+ {
+ HideSkillTip();
+ }
+
+ this.enabled = false;
}
public void AddDownListener(UnityAction _action)
@@ -140,72 +109,55 @@
skillEvent2.RemoveAllListeners();
}
- /// <summary>
- /// 鍓╀綑CD鍜屾�籆D閮芥槸姣
- /// </summary>
- /// <param name="_cd"></param>
- /// <param name="_totalCD"></param>
- private void OnSkillCDRefresh(float _cd, float _totalCD)
- {
- totalCoolDown = _totalCD;
- coolDownCompleteTime = Time.time + _cd;
- timer = 0f;
- }
-
private void LateUpdate()
{
- if (m_CoolDownCompleteTime > Time.time)
+ DisplaySkillDynamicInfo(false);
+
+ if (inCountDown)
{
- var cd = m_CoolDownCompleteTime - Time.time;
- if (!m_CoolDown.gameObject.activeInHierarchy)
+ if (!m_CoolDown.gameObject.activeSelf)
{
m_CoolDown.gameObject.SetActive(true);
}
- if (m_CoolDownMask != null && !m_CoolDownMask.gameObject.activeInHierarchy)
+ if (m_CoolDownMask != null && !m_CoolDownMask.gameObject.activeSelf)
{
m_CoolDownMask.gameObject.SetActive(true);
}
if (m_CoolDownMask != null)
{
- if (Isreverse)
- {
- float flo = cd / totalCoolDown;
- m_CoolDownMask.fillAmount = 1.0f - flo;
- }
- else
- {
- m_CoolDownMask.fillAmount = cd / totalCoolDown;
- }
+ m_CoolDownMask.fillAmount = MainWinSkillController.Instance.GetSkillCD(m_Index).value.GetCountDownFillAmount();
}
timer -= Time.deltaTime;
if (timer < 0f)
{
- m_CoolDown.text = cd.ToString("f0");
+ var countDown = MainWinSkillController.Instance.GetSkillCD(m_Index).value.GetCountDown();
+ if (countDown > 1)
+ {
+ m_CoolDown.text = countDown.ToString("f0");
+ }
+ else
+ {
+ m_CoolDown.text = "";
+ }
+
timer += 1f;
}
}
else
{
- if (m_CoolDown.gameObject.activeInHierarchy)
+ if (m_CoolDown.gameObject.activeSelf)
{
m_CoolDown.gameObject.SetActive(false);
}
if (m_CoolDownMask != null)
{
- if (Isreverse)
+ if (m_CoolDownMask.gameObject.activeSelf)
{
- m_CoolDownMask.fillAmount = 1;
- }
- else
- {
- if (m_CoolDownMask.gameObject.activeInHierarchy)
- {
- m_CoolDownMask.gameObject.SetActive(false);
- }
+ m_CoolDownMask.gameObject.SetActive(false);
}
}
@@ -216,21 +168,34 @@
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
-
+ ProcessForbid();
PassEvent(eventData, ExecuteEvents.pointerDownHandler);
- if (m_SkillData == null)
+ if (this.skillId == 0)
{
return;
}
+
if (m_ScaleTween != null)
{
m_ScaleTween.Play();
}
- skillEvent1.Invoke();
- isExit = false;
+ m_Selected.gameObject.SetActive(true);
+ skillEvent1.Invoke();
+
+ if (m_Index != 0)
+ {
+ if (showSkillTipClock != null)
+ {
+ Clock.Stop(showSkillTipClock);
+ }
+
+ showSkillTipClock = Clock.AlarmAfter(1, ShowSkillTip);
+ }
+
+ isExit = false;
}
public override void OnPointerUp(PointerEventData eventData)
@@ -239,18 +204,32 @@
PassEvent(eventData, ExecuteEvents.pointerUpHandler);
- if (m_SkillData == null)
+ if (this.skillId == 0)
{
return;
}
+
if (m_ScaleTween != null)
{
m_ScaleTween.Play(true);
}
+ m_Selected.gameObject.SetActive(false);
+
if (isExit == false)
{
skillEvent2.Invoke();
+ }
+
+ if (showSkillTipClock != null)
+ {
+ Clock.Stop(showSkillTipClock);
+ showSkillTipClock = null;
+ }
+
+ if (m_Index != 0)
+ {
+ HideSkillTip();
}
}
@@ -283,6 +262,152 @@
}
}
+
+ private void Awake()
+ {
+ Skill.OnSkillCDFinished += OnSkillPrepared;
+ Skill.OnSkillCast += OnSkillCast;
+ }
+
+ private void OnDestroy()
+ {
+ Skill.OnSkillCDFinished += OnSkillPrepared;
+ Skill.OnSkillCast += OnSkillCast;
+ }
+
+ private void OnSkillPrepared(int skillId)
+ {
+ if (!this.enabled)
+ {
+ return;
+ }
+
+ if (this.skillId != skillId)
+ {
+ return;
+ }
+
+ EffectMgr.Instance.PlayUIEffect(1024, 1500, this.transform, false);
+ }
+
+ private void OnSkillCast(uint playerInstanceId, int skillId)
+ {
+ if (!this.enabled)
+ {
+ return;
+ }
+
+ if (playerInstanceId != PlayerDatas.Instance.PlayerId)
+ {
+ return;
+ }
+
+ if (this.skillId != skillId)
+ {
+ return;
+ }
+
+ EffectMgr.Instance.PlayUIEffect(1023, 1500, this.transform, false);
+ }
+
+ private void ProcessForbid()
+ {
+ var isUnLocked = this.skillId != 0;
+ if (!isUnLocked)
+ {
+ switch (m_Index)
+ {
+ case 1:
+ SysNotifyMgr.Instance.ShowTip("Skill1Btn_Unlock");
+ break;
+ case 2:
+ SysNotifyMgr.Instance.ShowTip("Skill2Btn_Unlock");
+ break;
+ case 3:
+ SysNotifyMgr.Instance.ShowTip("Skill3Btn_Unlock");
+ break;
+ case 4:
+ SysNotifyMgr.Instance.ShowTip("Skill4Btn_Unlock");
+ break;
+ case 5:
+ SysNotifyMgr.Instance.ShowTip("Skill5Btn_Unlock");
+ break;
+ case 6:
+ SysNotifyMgr.Instance.ShowTip("Skill6Btn_Unlock");
+ break;
+ case 7:
+ SysNotifyMgr.Instance.ShowTip("Skill7Btn_Unlock");
+ break;
+ case 8:
+ SysNotifyMgr.Instance.ShowTip("SkillXpBtn_Unlock");
+ break;
+ }
+
+ return;
+ }
+
+ if (PlayerDatas.Instance.hero == null)
+ {
+ return;
+ }
+
+ var skill = PlayerDatas.Instance.hero.SkillMgr.Get(this.skillId);
+ if (!skill.IsValid())
+ {
+ SysNotifyMgr.Instance.ShowTip("SkillBtn_CD");
+ return;
+ }
+ }
+
+ Clock showSkillTipClock;
+ private void ShowSkillTip()
+ {
+ if (this.skillId == 0)
+ {
+ return;
+ }
+
+ if (m_SkillTip)
+ {
+ m_SkillTip.gameObject.SetActive(true);
+ m_SkillTip.Display(this.skillId);
+ }
+ }
+
+ private void HideSkillTip()
+ {
+ if (m_SkillTip)
+ {
+ m_SkillTip.gameObject.SetActive(false);
+ }
+ }
+
+ private void DisplaySkillDynamicInfo(bool force)
+ {
+ var skillCd = MainWinSkillController.Instance.GetSkillCD(m_Index);
+ if (force || skillCd.dirty)
+ {
+ var data = skillCd.Fetch();
+ inCountDown = data.IsCountDown();
+
+ var countDown = MainWinSkillController.Instance.GetSkillCD(m_Index).value.GetCountDown();
+ if (countDown > 0)
+ {
+ m_CoolDown.text = countDown.ToString("f0");
+ }
+ else
+ {
+ m_CoolDown.text = "";
+ }
+ }
+
+ var skillForbid = MainWinSkillController.Instance.GetSkillForbid(m_Index);
+ if (force || skillForbid.dirty)
+ {
+ m_Icon.gray = skillForbid.Fetch();
+ }
+ }
+
}
}
--
Gitblit v1.8.0