Пример #1
0
    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);
    }
Пример #2
0
    /// <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);
    }
Пример #3
0
    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);
        }
    }