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);
|
}
|
}
|
|
|
|
}
|