public PlayerSkillProxy() : base(ProxyName.PlayerSkillProxy) { m_CurrentWeaponIndex = 0; m_SkillTypeToGlobalCDEndTime = new Dictionary <SkillType, float>(); m_SkillTypeToGlobalCDEndTime[SkillType.ShipSkill] = Time.time; m_SkillTypeToGlobalCDEndTime[SkillType.WeaponSkill] = Time.time; m_SkillTypeToGlobalCDEndTime[SkillType.UNKNOWN] = 0; m_GameplayProxy = GameFacade.Instance.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy; m_CfgSkillProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgSkillSystemProxy) as CfgSkillSystemProxy; m_CfgEternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy; m_ShipProxy = GameFacade.Instance.RetrieveProxy(ProxyName.ShipProxy) as ShipProxy; m_PackageProxy = Facade.RetrieveProxy(ProxyName.PackageProxy) as PackageProxy; shipCDVO = new PlayerSkillCDVO(CdType.Ship); }
/// <summary> /// 更新技能冷却 /// </summary> /// <param name="button">技能按钮</param> /// <param name="skill">技能数据</param> private bool UpdateSkillCooldown(RectTransform button, PlayerShipSkillVO skill) { //cd Animator animator = button.GetComponent <Animator>(); Transform cdBox = button.Find("CDImage").GetComponent <Transform>(); Image cdMask = button.Find("CDImage/CD").GetComponent <Image>(); TMP_Text cdField = button.Find("CDImage/Label_CDTimes").GetComponent <TMP_Text>(); float cooldown = 0; if (skill != null) { PlayerSkillCDVO cdVO = m_SkillProxy.GetActiveCDVO(skill.GetID()); if (cdVO != null) { cooldown = cdVO.GetRemainingTime(); } if (cooldown > 0.0f) { cdBox.gameObject.SetActive(true); cdMask.fillAmount = cdVO.GetProgress(); cdField.text = string.Format("{0:N1}", cooldown); } else { cdBox.gameObject.SetActive(false); } } else { cdBox.gameObject.SetActive(false); } if (animator) { animator.SetInteger("State", cooldown > 0 ? 2 : 0); } return(cooldown > 0.0f); }
public void AddCD(int skillID, CdType cdType, float cdTime) { PlayerSkillCDVO cdVO = null; if (cdType == CdType.Ship) { cdVO = shipCDVO; } else if (cdType == CdType.Skill) { if (!m_SkillCDDic.TryGetValue(skillID, out cdVO)) { cdVO = new PlayerSkillCDVO(skillID, cdType); m_SkillCDDic.Add(skillID, cdVO); } } if (cdVO != null) { cdVO.SetCD(cdTime); SendNotification(NotificationName.MSG_SHIP_SKILL_CD_CHANGED); } }