예제 #1
0
    public void ResetSkillByCategory(SkillCategory category, List <IShooterSkill> skills)
    {
        //Update Category
        int curWeaponId = TriggerImpl.GetCurWeaponId(m_SkillManager.GetOwner());

        if (curWeaponId >= 0)
        {
            List <IShooterSkill> allCategorySkills = GetSkillsByCategory(category, skills);
            List <IShooterSkill> categorySkills    = GetSkillsByWeaponId(curWeaponId, allCategorySkills);
            IShooterSkill        categorySkill     = null;
            if (categorySkills.Count > 0)
            {
                categorySkill = categorySkills[0];
            }
            else
            {
                SkillNode firstNode = null;
                if (m_SkillCategoryDict.TryGetValue(category, out firstNode))
                {
                    categorySkill = GetSkillById(skills, firstNode.SkillId);
                }
            }
            if (categorySkill != null)
            {
                UpdateNextSkillByCategory(categorySkill, skills, curWeaponId);
                ChangeSkillByCategory(category, skills, categorySkill.GetSkillId());
            }
        }
    }
예제 #2
0
    private SkillNode InitNodeByScript(List <IShooterSkill> skills, IShooterSkill ss)
    {
        SkillNode first = new SkillNode();

        first.SkillId  = ss.GetSkillId();
        first.Category = ss.GetCategory();
        //FIXME:临时解锁全部技能,by lixiaojiang
        first.IsLocked = false;
        IShooterSkill nextSkillScript = GetSkillById(skills, ss.GetNextSkillId());

        if (nextSkillScript != null)
        {
            first.NextSkillNode = InitNodeByScript(skills, nextSkillScript);
        }
        IShooterSkill qSkillScript = GetSkillById(skills, ss.GetQSkillId());

        if (qSkillScript != null)
        {
            first.SkillQ = InitNodeByScript(skills, qSkillScript);
        }
        IShooterSkill eSkillScript = GetSkillById(skills, ss.GetESkillId());

        if (eSkillScript != null)
        {
            first.SkillE = InitNodeByScript(skills, eSkillScript);
        }
        return(first);
    }
예제 #3
0
    public void ChangeSkillByCategory(SkillCategory category, List <IShooterSkill> skills, int skillId)
    {
        IShooterSkill targetSkill = GetSkillById(skills, skillId);

        if (targetSkill == null)
        {
            return;
        }
        if (IsCategoryContain(targetSkill.GetSkillId()))
        {
            m_SkillCategoryDict.Remove(targetSkill.GetCategory());
        }
        SkillNode first_node = InitNodeByScript(skills, targetSkill);

        m_SkillCategoryDict[targetSkill.GetCategory()] = first_node;
    }