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()); } } }
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); }
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; }