public HeartSkillDataBase GetHeartSkillData(uint skillID) { string des = ""; SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>(skillID, 1); bool hasLearn = false; uint heartID = db.heartID; uint heartLevel = 0; if (db != null) { List <GameCmd.HeartSkill> heartList = DataManager.Manager <HeartSkillManager>().OwnedHeartSkillList; for (int i = 0; i < heartList.Count; i++) { HeartSkill hs = heartList[i]; if (hs.skill_id == heartID) { hasLearn = true; heartLevel = hs.level; break; } } } if (hasLearn) { HeartSkillDataBase hdb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartID, (int)heartLevel); if (hdb != null) { return(hdb); } } return(null); }
/// <summary> /// 升级心法数据 /// </summary> /// <param name="cmd"></param> public void OnUpgradeHeartSkill(stUpSkillGodDataUserCmd_CS cmd) { HeartSkill heartSkill = m_ownedHeartSkillList.Find((data) => { return(data.skill_id == cmd.skill_id); }); if (heartSkill != null) { heartSkill.level = cmd.level; } else { heartSkill = new HeartSkill { skill_id = cmd.skill_id, level = cmd.level }; m_ownedHeartSkillList.Add(heartSkill); } Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.HEARTSKILLUPGRADE, heartSkill); }
public override void SetGridData(object data) { base.SetGridData(data); m_heartSkill = data as HeartSkill; if (m_heartSkill == null) { return; } HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(m_heartSkill.skill_id, (int)m_heartSkill.level); if (db != null) { SetIcon(db.icon); SetName(db.name); SetLv(db.lv); bool isLock = db.lv == 0 ? true : false; SetMask(isLock); } }
/// <summary> /// 获得前置技能list /// </summary> /// <param name="preSkill"></param> /// <returns></returns> public List <HeartSkill> GetPreHeartSkill(string preSkill) { List <HeartSkill> list = new List <HeartSkill>(); bool b1 = preSkill.Contains(";"); bool b2 = preSkill.Contains("_"); string[] arr1 = preSkill.Split(';'); for (int i = 0; i < arr1.Length; i++) { string[] arr2 = arr1[i].Split('_'); if (arr2.Length != 2) { return(list); } uint skillId; uint lv; if (!uint.TryParse(arr2[0], out skillId)) { Engine.Utility.Log.Error("--->>> 表格数据出错 ,没取到数据!"); } if (!uint.TryParse(arr2[1], out lv)) { Engine.Utility.Log.Error("--->>> 表格数据出错 ,没取到数据!"); } HeartSkill hs = new HeartSkill { skill_id = skillId, level = lv }; list.Add(hs); } return(list); }
/// <summary> /// 心法是否可升级 /// </summary> public bool IsEnableUpgrade(HeartSkill heartSkill) { bool isEnableUpgrade = true; //下一等级心法数据 HeartSkillDataBase nextDb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartSkill.skill_id, (int)heartSkill.level + 1); if (nextDb == null) { isEnableUpgrade = false; return(isEnableUpgrade); } //神魔等级 IPlayer player = Client.ClientGlobal.Instance().MainPlayer; if (player != null) { if (player.GetProp((int)CreatureProp.Level) < nextDb.needPlayerLv) { isEnableUpgrade = false; } } //心法点 if (m_heartSkillPoint < nextDb.costHeartSkillPoint) { isEnableUpgrade = false; } //前置技能 List <HeartSkill> preSkillList = GetPreHeartSkill(nextDb.pre_skill); for (int i = 0; i < preSkillList.Count; i++) { if (false == m_ownedHeartSkillList.Exists((data) => { return(data.skill_id == preSkillList[i].skill_id && data.level == preSkillList[i].level); })) { isEnableUpgrade = false; } } //消耗金币 if (Client.ClientGlobal.Instance().MainPlayer.GetProp((int)Client.PlayerProp.Coupon) < nextDb.need_money) //金币不足 字体红色 { isEnableUpgrade = false; } //是否最高等级 HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartSkill.skill_id, (int)heartSkill.level); if (db != null) { if (heartSkill.level == db.maxLv) { isEnableUpgrade = false; } } return(isEnableUpgrade); }