/// <summary> /// 通过[玩家等级]二分快速查表 /// </summary> /// <param name="dwLv">玩家等级</param> /// <returns></returns> public static IEnumerable <RewardFindDataBase> Query(this List <RewardFindDataBase> sorted, uint dwLv) { var key = new RewardFindDataBase() { dwLv = dwLv }; 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]); } }
private void SetMoneyContent() { uint level = DataManager.Manager <WelfareManager>().Previous_Lv; RewardFindDataBase tab = GameTableManager.Instance.GetTableItem <RewardFindDataBase>(level, (int)m_rewardData.id); if (tab != null) { CurrencyIconData d1 = CurrencyIconData.GetCurrencyIconByMoneyType((ClientMoneyType)tab.ord_Type); CurrencyIconData d2 = CurrencyIconData.GetCurrencyIconByMoneyType((ClientMoneyType)tab.pre_Type); UIManager.GetAtlasAsyn(d1.smallIconName, ref m_priceAsynSeed, () => { if (null != sp1) { sp1.atlas = null; } }, sp1); UIManager.GetAtlasAsyn(d2.smallIconName, ref m_priceAsynSeed2, () => { if (null != sp2) { sp2.atlas = null; } }, sp2); lb1.text = tab.ord_Num.ToString(); lb2.text = tab.pre_Num.ToString(); } }
/// <summary> /// 通过[玩家等级 + 日常ID]二分快速查表 /// </summary> /// <param name="dwLv">玩家等级</param> /// <param name="dwID">日常ID</param> /// <returns></returns> public static RewardFindDataBase Query(this List <RewardFindDataBase> sorted, uint dwLv, uint dwID) { var key = new RewardFindDataBase() { dwLv = dwLv, dwID = dwID }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(RewardFindDataBase)); }