Exemplo n.º 1
0
    /// <summary>
    /// 响应客户端的输入释放技能
    /// 会检查是否已经存在指定ID的技能实例, 如果目前没有对应的技能实例则创建并释放
    /// </summary>
    /// <param name="skillID"></param>
    private void ReleaseSkillByClientInput(int skillID)
    {
        if (!CanCreateSkill(skillID) || IsReleasingSkill(skillID) || m_SkillProxy.IsMainPlayerUsingWeaponSkill())
        {
            // UNDONE, 此处应有报错
            NotifyUnsuccessfulSkillRelease(skillID);
            return;
        }

        SkillBase newSkill = CreateSkill(skillID);

        if (!newSkill.CanReleaseSkill())
        {
            NotifyUnsuccessfulSkillRelease(skillID);
            return;
        }

        if (newSkill != null)
        {
            if (m_RemoveSkillList.Contains(skillID))
            {
                m_RemoveSkillList.Remove(skillID);
            }

            m_IDToSkill[skillID] = newSkill;
            m_Property.SetCurrentSkillID(skillID);

            m_State = newSkill.ReleaseSkillByClientInput();
            m_Property.SetCurrentSkillState(m_State);
        }
        else
        {
            Debug.LogErrorFormat("技能释放失败. ID: {0}", skillID);
        }
    }