using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class MinggePrayWin : UIBase { [SerializeField] ItemCell itemCell; [SerializeField] Text itemName; [SerializeField] Text desce; [SerializeField] Text qlValueText; [SerializeField] MinggePrayRateCell[] prayRateCells; [SerializeField] SliderPanel sliderPanel; [SerializeField] Image itemIcon; [SerializeField] Text countText; [SerializeField] Button qlBtn; [SerializeField] UIEffectPlayer qlEffect; int useCnt = 1; int qualityCnt; int maxRateNum = 0; protected override void InitComponent() { qlBtn.AddListener(QL); var rateList = MGLingyingQualityConfig.Get(0).ItemColorWeightList; qualityCnt = rateList.Length; foreach (var rate in rateList) { maxRateNum += rate; } } protected override void OnPreOpen() { MinggeManager.Instance.OnMinggeInfoUpdate += Display; Display(); } protected override void OnPreClose() { MinggeManager.Instance.OnMinggeInfoUpdate -= Display; } public void Display() { var config = ItemConfig.Get(MinggeManager.Instance.qlItemID); itemCell.Init(new ItemCellModel(MinggeManager.Instance.qlItemID, false, 0)); itemName.text = config.ItemName; desce.text = config.Description; var maxCnt = PackManager.Instance.GetItemCountByID(PackType.Item, MinggeManager.Instance.qlItemID); useCnt = Math.Max(1, (int)maxCnt); sliderPanel.Init((value) => { OnSliderChange(value); }, useCnt, useCnt); DisplayPrayRate(); DisplayCostItem(); } void DisplayPrayRate() { qlValueText.text = MinggeManager.Instance.m_Lingying.ToString(); var littleRateList = MinggeManager.Instance.GetQLRate(MinggeManager.Instance.m_Lingying); var bigRateList = MinggeManager.Instance.GetQLRate(MinggeManager.Instance.m_Lingying + useCnt); for (int i = 0; i < prayRateCells.Length; i++) { if (i < qualityCnt) { prayRateCells[i].SetActive(true); prayRateCells[i].Display(i, bigRateList, littleRateList, maxRateNum); } else { prayRateCells[i].SetActive(false); } } } void DisplayCostItem() { itemIcon.SetItemSprite(MinggeManager.Instance.qlItemID); countText.text = UIHelper.ShowUseItem(PackType.Item, MinggeManager.Instance.qlItemID, useCnt); } void OnSliderChange(int value) { useCnt = Math.Max(1, value); DisplayPrayRate(); DisplayCostItem(); } void QL() { if (useCnt == 0) { return; } if (!ItemLogicUtility.CheckItemCount(PackType.Item, MinggeManager.Instance.qlItemID, useCnt, 2)) { TimingGiftManager.Instance.TryAddWhenInsufficient(6, PackType.Item, MinggeManager.Instance.qlItemID, useCnt); return; } var pack = new CB253_tagCSMinggeQiling(); pack.UseCount = (uint)useCnt; GameNetSystem.Instance.SendInfo(pack); qlEffect.Play(); // 如果正好消耗完,不触发固定概率的判定 if (!TimingGiftManager.Instance.TryAddWhenExactConsumption(6, PackType.Item, MinggeManager.Instance.qlItemID, useCnt)) { TimingGiftManager.Instance.TryAddWithFixedProbabilityWhenSufficient(6, PackType.Item, MinggeManager.Instance.qlItemID, useCnt); } } }