/// <summary> /// 通过[宠物品质]二分快速查表 /// </summary> /// <param name="quality">宠物品质</param> /// <returns></returns> public static IEnumerable <PetGuiYuanDataBase> Query(this List <PetGuiYuanDataBase> sorted, uint quality) { var key = new PetGuiYuanDataBase() { quality = quality }; 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="quality">宠物品质</param> /// <param name="growStatus">成长状态</param> /// <returns></returns> public static PetGuiYuanDataBase Query(this List <PetGuiYuanDataBase> sorted, uint quality, uint growStatus) { var key = new PetGuiYuanDataBase() { quality = quality, growStatus = growStatus }; var comparer = new Comparer2(); var index = sorted.BinarySearch(key, comparer); return(index >= 0 ? sorted[index] : default(PetGuiYuanDataBase)); }
bool CheckItem() { PetDataBase pdb = petDataManager.GetPetDataBase(CurPet.PetBaseID); if (pdb == null) { Log.Error("pdb is null id is " + CurPet.PetBaseID.ToString()); return(false); } int status = CurPet.GetProp((int)PetProp.PetGuiYuanStatus); PetGuiYuanDataBase guiyuandb = GameTableManager.Instance.GetTableItem <PetGuiYuanDataBase>(pdb.petQuality, status); if (guiyuandb != null) { if (!MainPlayerHelper.IsHasEnoughMoney(ClientMoneyType.Gold, guiyuandb.consumeMoney)) { StopGuiyuan(); DataManager.Manager <Mall_HuangLingManager>().ShowExchange((uint)ErrorEnum.NotEnoughGold, ClientMoneyType.Gold, "提示", "去兑换", "取消"); return(false); } } int count = DataManager.Manager <ItemManager>().GetItemNumByBaseId(m_nItemID); if (count <= 0) { if (autoConsume) { if (!ShowColdLabel(m_nItemID)) { StopGuiyuan(); TipsManager.Instance.ShowTipsById(5); return(false); } } else { StopGuiyuan(); TipsManager.Instance.ShowTipsById(6); return(false); } } return(true); }
void InitData() { if (CurPet == null) { // Log.Error(" curpet is null"); return; } PetDataBase pdb = petDataManager.GetPetDataBase(CurPet.PetBaseID); if (pdb == null) { Log.Error("pdb is null id is " + CurPet.PetBaseID.ToString()); return; } // DataManager.Manager<UIManager>().SetSpriteDynamicIcon(m_sprite_guiyuantopicon, pdb.icon); UIManager.GetTextureAsyn(pdb.icon, ref m_guiyuantopIconAsynSeed, () => { if (null != m__guiyuantopicon) { m__guiyuantopicon.mainTexture = null; } }, m__guiyuantopicon, false); Transform bgTrans = m__guiyuantopicon.transform.Find("pingzhi_box"); if (bgTrans) { UISprite bgSpr = bgTrans.GetComponent <UISprite>(); if (bgSpr) { // string bgSpriteName = ItemDefine.GetItemBorderIcon(pdb.flag); // DataManager.Manager<UIManager>().SetSpriteDynamicIcon(bgSpr, bgSpriteName); UIManager.GetQualityAtlasAsyn(pdb.flag, ref m_guiyuanQualityAsynSeed, () => { if (null != bgSpr) { bgSpr.atlas = null; } }, bgSpr); } } int status = CurPet.GetProp((int)PetProp.PetGuiYuanStatus); PetGuiYuanDataBase guiyuandb = GameTableManager.Instance.GetTableItem <PetGuiYuanDataBase>(pdb.petQuality, status); if (guiyuandb != null) { m_label_guiyuanCommon_xiaohaogold.text = guiyuandb.consumeMoney.ToString(); } int secondKey = 0; if (status == (int)PetGrowState.Perfect) { secondKey = 1; } List <uint> itemList = GameTableManager.Instance.GetGlobalConfigList <uint>("GYItem", secondKey.ToString()); if (pdb == null) { Log.Error(" petdata base is null baseid is " + CurPet.PetBaseID.ToString()); return; } uint itemID = 0; uint qua = pdb.petQuality; if (qua == 8) { itemID = itemList[1]; } else { itemID = itemList[0]; } m_nItemID = itemID; int itemCount = DataManager.Manager <ItemManager>().GetItemNumByBaseId(itemID); ShowColdLabel(itemID); ItemDataBase db = GameTableManager.Instance.GetTableItem <ItemDataBase>(itemID); if (db != null) { m_label_guiyuanCommon_name.text = db.itemName; } UIItem.AttachParent(m__guiyuanCommon_icon.transform, itemID, (uint)itemCount, ShowGuiYuanGetWayCallBack); m_label_guiyuanCommon_number.text = StringUtil.GetNumNeedString(itemCount, 1); if (status == (int)PetGrowState.Perfect) { m_label_guiyuannotingtext.text = DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_Txt_Pet_guiyuanmanjineirong); ShowGaojiContainer(true); m_label_putongtitletext.text = CommonData.GetLocalString("原天赋"); m_label_gaojititletext.text = CommonData.GetLocalString("新天赋"); m_sprite_titlebg.gameObject.SetActive(true); m_label_putongjiebian.gameObject.SetActive(true); m_label_gaojijiebian.gameObject.SetActive(true); int commonLv = CurPet.GetProp((int)PetProp.CommonJieBianLv); m_label_putongjiebian.text = DataManager.Manager <PetDataManager>().GetJieBianString(commonLv); int advLv = CurPet.GetProp((int)PetProp.AdvaceJieBianLv); m_label_gaojijiebian.text = DataManager.Manager <PetDataManager>().GetJieBianString(advLv); m_trans_zuidajiebian.gameObject.SetActive(true); m_label_maxjiebian.text = pdb.maxJiebian; m_trans_PtGuiyuanGrowCotainer.gameObject.SetActive(false); } else { m_label_guiyuannotingtext.text = DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_Txt_Pet_guiyuanweimanjineirong); ShowGaojiContainer(false); m_sprite_titlebg.gameObject.SetActive(false); m_label_putongtitletext.text = CommonData.GetLocalString("洗炼"); m_label_gaojititletext.text = CommonData.GetLocalString("洗炼"); m_label_putongjiebian.gameObject.SetActive(false); m_label_gaojijiebian.gameObject.SetActive(false); m_trans_zuidajiebian.gameObject.SetActive(false); m_trans_PtGuiyuanGrowCotainer.gameObject.SetActive(true); } InitGaojiData(); }