//师门技能是否可用 public bool MasterSkillCanUse(int skillid) { Tab_MasterSkill line = TableManager.GetMasterSkillByID(skillid, 0); if (line == null) { return(false); } int baseskill = line.BaseSkill; //有师门 if (GameManager.gameManager.PlayerDataPool.IsHaveMaster()) { //师门激活了这个技能 Master masterinfo = GameManager.gameManager.PlayerDataPool.MasterInfo; foreach (KeyValuePair <int, string> skill in masterinfo.MasterSkillList) { if (skill.Key > 0 && skill.Key == baseskill) { return(true); } } } return(false); }
int GetSameBaseSkill(List <int> ownSkillList, int skillid) { Tab_MasterSkill skillLine = TableManager.GetMasterSkillByID(skillid, 0); if (skillLine != null) { for (int index = 0; index < ownSkillList.Count; index++) { if (ownSkillList[index] >= 0) { Tab_MasterSkill tempLine = TableManager.GetMasterSkillByID(ownSkillList[index], 0); if (tempLine != null) { if (tempLine.BaseSkill == skillLine.BaseSkill) { return(ownSkillList[index]); } } } } } return(-1); }
void ShowSkillInfo() { //找出需要显示的技能id List <int> totalSkillList = new List <int>(); foreach (KeyValuePair <int, List <Tab_MasterSkill> > kvp in TableManager.GetMasterSkill()) { Tab_MasterSkill line = kvp.Value[0]; if (line != null) { if (line.Level == 1) { totalSkillList.Add(line.Id); } } } //当前师门已经学习的技能 Dictionary <int, string> masterSkillList = GameManager.gameManager.PlayerDataPool.MasterInfo.MasterSkillList; //当前个人已经激活的技能 List <int> ownSkillList = new List <int>(); OwnSkillData[] InfoArry = GameManager.gameManager.PlayerDataPool.OwnSkillInfo; for (int i = 0; i < InfoArry.Length; i++) { OwnSkillData info = InfoArry[i]; if (info.SkillId >= 0) { ownSkillList.Add(info.SkillId); } } //显示技能信息 for (int index = 0; index < SKILL_NUM && index < totalSkillList.Count; index++) { int skillid = totalSkillList[index]; //技能是否合法 Tab_SkillEx lineSkillEx = TableManager.GetSkillExByID(skillid, 0); if (lineSkillEx == null) { continue; } Tab_SkillBase lineSkillBase = TableManager.GetSkillBaseByID(lineSkillEx.BaseId, 0); if (lineSkillBase == null) { continue; } if (masterSkillList.ContainsKey(skillid)) { //师门已经学习的技能 int sameBaseSkillId = GetSameBaseSkill(ownSkillList, skillid); if (sameBaseSkillId >= 0) { //个人已经激活的技能 m_SkillID[index] = sameBaseSkillId; m_SkillActive[index] = true; m_SkillOwn[index] = true; m_SkillSprite[index].spriteName = lineSkillBase.Icon; m_SkillName[index].text = masterSkillList[skillid]; } else { //个人未激活的技能 m_SkillID[index] = skillid; m_SkillActive[index] = true; m_SkillOwn[index] = false; m_SkillSprite[index].spriteName = lineSkillBase.Icon; m_SkillName[index].text = masterSkillList[skillid]; } } else { int sameBaseSkillId = GetSameBaseSkill(ownSkillList, skillid); if (sameBaseSkillId >= 0) { m_SkillID[index] = sameBaseSkillId; m_SkillOwn[index] = true; } else { m_SkillID[index] = skillid; m_SkillOwn[index] = false; } //师门未学习的技能 m_SkillActive[index] = false; m_SkillSprite[index].spriteName = lineSkillBase.Icon; //m_SkillName[index].text = "未学习"; m_SkillName[index].text = StrDictionary.GetClientDictionaryString("#{2795}"); } } //隐藏按钮 m_SkillLearnBtn.gameObject.SetActive(false); m_SkillActiveBtn.gameObject.SetActive(false); m_SkillForgetBtn.gameObject.SetActive(false); m_SkillNameInputObject.gameObject.SetActive(false); //默认选中技能 OnClickSkill((m_CurSelectSkillIndex >= 0) ? m_CurSelectSkillIndex : 0); }