/// <summary> /// 跟新心法item信息 /// </summary> /// <param name="item"></param> void UpdateHeartSkillItemInfo(GameCmd.HeartSkill heartSkill) { HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(heartSkill.skill_id, (int)heartSkill.level); SetItemLv((int)db.orderId - 1); SetItemMask((int)db.orderId - 1); }
/// <summary> /// 通过[编号]二分快速查表 /// </summary> /// <param name="id">编号</param> /// <returns></returns> public static IEnumerable <HeartSkillDataBase> Query(this List <HeartSkillDataBase> sorted, uint id) { var key = new HeartSkillDataBase() { id = id }; var comparer = new Comparer1(); var from = sorted.BinarySearch(key, comparer); if (from < 0) { yield break; } var to = from + 1; while (from > 0 && comparer.Compare(key, sorted[from - 1]) == 0) { from--; } while (to < sorted.Count && comparer.Compare(key, sorted[to]) == 0) { to++; } for (var i = from; i < to; i++) { yield return(sorted[i]); } }
public uint GetHeartCd(uint skillID) { uint cd = 0; HeartSkillDataBase db = GetHeartSkillData(skillID); if (db != null) { string effectStr = db.enhanceEffect; string[] strArray = effectStr.Split(';'); for (int i = 0; i < strArray.Length; i++) { List <uint> idList = StringUtil.GetSplitStringList <uint>(strArray[i], '_'); if (idList == null) { return(cd); } if (idList.Count <= 0) { return(cd); } if (idList[0] == 12) { //12表示减cd return(idList[1]); } } } return(cd); }
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); }
public string GetHeartDes(uint skillID) { HeartSkillDataBase db = GetHeartSkillData(skillID); if (db != null) { return(db.des); } return(""); }
/// <summary> /// 通过[编号 + 等级]二分快速查表 /// </summary> /// <param name="id">编号</param> /// <param name="lv">等级</param> /// <returns></returns> public static HeartSkillDataBase Query(this List <HeartSkillDataBase> sorted, uint id, uint lv) { var key = new HeartSkillDataBase() { id = id, lv = lv }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(HeartSkillDataBase)); }
/// <summary> /// 设置等级 /// </summary> /// <param name="item"></param> void SetItemLv(int item) { Transform gridTransf = m_grid_heartSkillGridContent.transform.GetChild(item); if (gridTransf != null) { UIHeartSkillGrid grid = gridTransf.GetComponent <UIHeartSkillGrid>(); HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(m_heartSkillList[item].skill_id, (int)m_heartSkillList[item].level); if (grid != null && db != null) { grid.SetLv(db.lv); } } }
/// <summary> /// 设置遮罩mask /// </summary> /// <param name="item"></param> void SetItemMask(int item) { Transform gridTransf = m_grid_heartSkillGridContent.transform.GetChild(item); if (gridTransf != null) { UIHeartSkillGrid grid = gridTransf.GetComponent <UIHeartSkillGrid>(); HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(m_heartSkillList[item].skill_id, (int)m_heartSkillList[item].level); if (grid != null) { bool isLock = db.lv == 0 ? true : false; grid.SetMask(isLock); } } }
/// <summary> /// grid点击事件 /// </summary> /// <param name="eventType"></param> /// <param name="data"></param> /// <param name="param"></param> void OnSelectCallback(UIEventType eventType, object data, object param) { if (eventType == UIEventType.Click) { UIHeartSkillGrid grid = data as UIHeartSkillGrid; if (grid == null) { return; } HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(grid.m_heartSkill.skill_id, (int)grid.m_heartSkill.level); if (db != null) { SetSelectItem((int)db.orderId - 1); } } }
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); } }
public List <GameCmd.HeartSkill> GetHeartSkillList() { List <HeartSkill> heartSkillList = new List <HeartSkill>(); List <uint> list = GetHeartSkillIdList(); for (int i = 0; i < list.Count; i++) { //此处要判断, 综合服务器数据和客户端数据 GameCmd.HeartSkill heartSkill = m_ownedHeartSkillList.Find((data) => { return(list[i] == data.skill_id); }); if (heartSkill != null) { heartSkillList.Add(heartSkill); //服务器获得的,已经解锁的 } else { HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(list[i], 0); //还未解锁的 heartSkillList.Add(new HeartSkill { skill_id = list[i], level = db.lv }); } } return(heartSkillList); }
/// <summary> /// 心法升级信息 /// </summary> void InitHeartSkillUpgradeInfo() { IPlayer mainPlayer = ClientGlobal.Instance().MainPlayer; if (mainPlayer == null) { return; } HeartSkillDataBase db = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(m_heartSkillList[m_selectItem].skill_id, (int)m_heartSkillList[m_selectItem].level); if (db != null) { if (0 <= db.lv && db.lv <= db.maxLv) //解锁 { //当前等级 m_widget_HeartSkill_unlock.gameObject.SetActive(true);//打开当前 m_label_HeartSkill_unlock_name_now.text = db.name; m_label_HeartSkill_unlock_level_now.text = string.Format("{0}级", db.lv); m_label_HeartSkill_unlock_describe_now.text = db.des; if (db.lv == db.maxLv) //当前等级为最大等级 { m_widget_HeartSkill_max.gameObject.SetActive(true); m_widget_HeartSkill_NextLevel.gameObject.SetActive(false); } else { m_widget_HeartSkill_max.gameObject.SetActive(false); m_widget_HeartSkill_NextLevel.gameObject.SetActive(true); } m_widget_HeartSkill__lock.gameObject.SetActive(false); //升级到下一等级需要的信息 HeartSkillDataBase nextDb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(m_heartSkillList[m_selectItem].skill_id, (int)m_heartSkillList[m_selectItem].level + 1); if (nextDb != null) { m_widget_HeartSkill_NextLevel.gameObject.SetActive(true); //打开下一级 m_label_HeartSkill_unlock_describe_nextlevel.text = nextDb.des; //下一等级描述 //解锁神魔等级 m_label_HeartSkill_unlock_locklevel_nextlevel.text = string.Format("{0}级", nextDb.needPlayerLv); if (mainPlayer.GetProp((int)CreatureProp.Level) >= nextDb.needPlayerLv) { m_label_HeartSkill_unlock_locklevel_nextlevel.color = new Color(28, 40, 50, 255); // Color.white; } else { m_label_HeartSkill_unlock_locklevel_nextlevel.color = Color.red; } //消耗 心法点 金币 m_label_HeartSkill_consume.text = nextDb.costHeartSkillPoint.ToString(); //消耗心法点 m_label_HeartSkill_unlock_xiaohao_Num.text = nextDb.need_money.ToString(); //消耗金币 if (HSManager.HeartSkillPoint >= nextDb.costHeartSkillPoint) //心法点不足 字体红色 { m_label_HeartSkill_consume.color = new Color(28, 40, 50, 255); // Color.white; } else { m_label_HeartSkill_consume.color = Color.red; } if (mainPlayer.GetProp((int)PlayerProp.Coupon) >= nextDb.need_money) //金币不足 字体红色 { m_label_HeartSkill_unlock_xiaohao_Num.color = new Color(28, 40, 50, 255); // Color.white; } else { m_label_HeartSkill_unlock_xiaohao_Num.color = Color.red; } //前置技能 List <HeartSkill> preHeartSkillList = HSManager.GetPreHeartSkill(nextDb.pre_skill); string preSkillString = ""; for (int i = 0; i < preHeartSkillList.Count; i++) { HeartSkillDataBase preSkillDb = GameTableManager.Instance.GetTableItem <HeartSkillDataBase>(preHeartSkillList[i].skill_id, (int)preHeartSkillList[i].level); if (preSkillDb != null) { string preSkill = string.Format("{0}等级{1}", preSkillDb.name, preSkillDb.lv); bool isExists = HSManager.OwnedHeartSkillList.Exists((d) => { return(d.skill_id == preHeartSkillList[i].skill_id && d.level >= preHeartSkillList[i].level); });//前置技能学没学 if (isExists) { preSkill = string.Format("[1C2832]{0}[-] ", preSkill); } else { preSkill = string.Format("[ff0000]{0}[-] ", preSkill); } preSkillString += preSkill; } } m_label_HeartSkill_unlock_locklevel_PreSkills.text = preSkillString;// } else { m_widget_HeartSkill_NextLevel.gameObject.SetActive(false);//关闭下一级 } } } }
/// <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); }