/// <summary> /// 通过[战魂类型]二分快速查表 /// </summary> /// <param name="petType">战魂类型</param> /// <returns></returns> public static IEnumerable <PetRecommendDataBase> Query(this List <PetRecommendDataBase> sorted, uint petType) { var key = new PetRecommendDataBase() { petType = petType }; 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]); } }
/// <summary> /// 通过[战魂类型 + 战魂性格]二分快速查表 /// </summary> /// <param name="petType">战魂类型</param> /// <param name="petCharacter">战魂性格</param> /// <returns></returns> public static PetRecommendDataBase Query(this List <PetRecommendDataBase> sorted, uint petType, uint petCharacter) { var key = new PetRecommendDataBase() { petType = petType, petCharacter = petCharacter }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(PetRecommendDataBase)); }
void InitScrollView() { if (CurPet == null) { return; } m_btn_skill_item.gameObject.SetActive(false); List <SkillDatabase> upList = GameTableManager.Instance.GetTableList <SkillDatabase>(); List <SkillDatabase> typeList = upList.FindAll(x => { return(x.petType == (int)CurType && x.wdLevel == 1); }); if (CurType == PetSkillType.Recommend) { typeList.Clear(); PetDataBase pdb = GameTableManager.Instance.GetTableItem <PetDataBase>(petDataManager.CurPet.PetBaseID); if (pdb == null) { Log.Error("db is null"); return; } int character = CurPet.GetProp((int)PetProp.Character); PetRecommendDataBase rdb = GameTableManager.Instance.GetTableItem <PetRecommendDataBase>((uint)pdb.petType, character); if (rdb == null) { Log.Error("rdb is null"); return; } if (rdb != null) { string idStr = rdb.skillArray; string[] idArray = idStr.Split('_'); foreach (var str in idArray) { int id = 0; if (int.TryParse(str, out id)) { SkillDatabase db = GameTableManager.Instance.GetTableItem <SkillDatabase>((uint)id, 1); if (db != null) { typeList.Add(db); } } } } } m_typeList = typeList; if (null != m_ctor_skill_scrollview) { if (!m_bInitSkillCreator) { m_bInitSkillCreator = true; GameObject go = m_btn_skill_item.gameObject; go.SetActive(false); m_ctor_skill_scrollview.RefreshCheck(); m_ctor_skill_scrollview.Initialize <PetSkillItem>(go, OnUpdateUIGrid, OnUIGridEventDlg); } m_ctor_skill_scrollview.CreateGrids(typeList.Count); } bool bReset = false; CurSkillDataBase = typeList[0]; SetPetItemHighLight(); }