using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class LianQiItemInfoDoubleWin : Window
|
{
|
[SerializeField] Text txtNumber;
|
[SerializeField] ItemCell itemCell;
|
[SerializeField] TextEx txtName;
|
[SerializeField] RichText txtInfo;
|
[SerializeField] TextEx txtCount;
|
[SerializeField] Slider splitSlider;
|
[SerializeField] Button btnUse;
|
[SerializeField] Button btnAdd;
|
[SerializeField] Button btnReduce;
|
[SerializeField] Button btnClose;
|
LianQiActModel model { get { return ModelCenter.Instance.GetModel<LianQiActModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
int itemID;
|
|
private void OnConfirm4(bool _ok, bool isToggle)
|
{
|
model.isSkip4 = isToggle;
|
if (_ok && model.IsCanSendUseItem())
|
{
|
model.SendUseOP((int)splitSlider.value, 3, 0, 0);
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
btnUse.SetListener(() =>
|
{
|
int itemID = model.nowAssistiveItemId;
|
int num = model.nowAssistiveItemNum;
|
if (!ItemConfig.Has(itemID))
|
return;
|
ItemConfig itemConfig = ItemConfig.Get(itemID);
|
|
//道具数量不足
|
if (packModel.GetItemCountByID(PackType.Item, itemID) <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct02");
|
return;
|
}
|
|
//该道具该局已达使用次数上限
|
if (!model.limitUsesToolCntDict.TryGetValue(itemID, out int cnt))
|
return;
|
int useItemCnt = model.GetUseItemCnt(model.nowPlayerInfo.UseItemCntList, num);
|
if (useItemCnt >= cnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct03");
|
return;
|
}
|
|
if (model.isSkip4)
|
{
|
if (model.IsCanSendUseItem())
|
{
|
model.SendUseOP((int)splitSlider.value, 3, 0, 0);
|
}
|
}
|
else
|
{
|
ConfirmCancel.ToggleConfirmCancelEx(Language.Get("Mail101"), Language.Get("LianQi20", (int)splitSlider.value, itemConfig.ItemName), Language.Get("ConfirmCancel102"), OnConfirm4, OnConfirm4, model.isSkip4);
|
}
|
|
CloseClick();
|
});
|
|
btnClose.SetListener(() =>
|
{
|
CloseClick();
|
model.isUseTool = false;
|
});
|
|
btnAdd.SetListener(() =>
|
{
|
int hasCount = packModel.GetItemCountByID(PackType.Item, itemID);
|
if (hasCount <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct02");
|
return;
|
}
|
|
if (splitSlider.value < splitSlider.maxValue)
|
{
|
splitSlider.value++;
|
}
|
});
|
|
btnReduce.SetListener(() =>
|
{
|
int hasCount = packModel.GetItemCountByID(PackType.Item, itemID);
|
if (hasCount <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("LianQiAct02");
|
return;
|
}
|
|
if (splitSlider.value > splitSlider.minValue)
|
{
|
splitSlider.value--;
|
}
|
});
|
|
splitSlider.SetListener((float value) => { OnSplitValueChange(); });
|
}
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
Display();
|
}
|
|
public void OnSplitValueChange()
|
{
|
txtNumber.text = Mathf.Ceil(splitSlider.value).ToString();
|
}
|
|
private void Display()
|
{
|
itemID = model.nowAssistiveItemId;
|
if (!ItemConfig.Has(itemID))
|
return;
|
ItemConfig itemConfig = ItemConfig.Get(itemID);
|
int hasCount = packModel.GetItemCountByID(PackType.Item, itemID);
|
var itemData = new ItemCellModel((int)itemID, false, (ulong)hasCount);
|
itemCell.Init(itemData);
|
itemCell.countText.SetActive(true);
|
itemCell.countText.text = hasCount.ToString();
|
txtName.text = itemConfig.ItemName;
|
txtInfo.text = itemConfig.Description;
|
|
if (!model.limitUsesToolCntDict.TryGetValue(itemID, out int limitCnt))
|
return;
|
int useItemCnt = model.GetUseItemCnt(model.nowPlayerInfo.UseItemCntList, model.nowAssistiveItemNum);
|
int hasCnt = hasCount > limitCnt ? limitCnt : hasCount;
|
int nowResCnt = Mathf.Max(0, limitCnt - useItemCnt); //本轮剩余多少次
|
int realCnt = nowResCnt > hasCnt ? hasCnt : nowResCnt;
|
txtCount.text = Language.Get("LianQi15", Mathf.Max(0, limitCnt - useItemCnt), limitCnt);
|
splitSlider.maxValue = realCnt;
|
splitSlider.minValue = hasCount > 0 ? 1 : 0;
|
splitSlider.value = splitSlider.minValue;
|
txtNumber.text = Mathf.Ceil(splitSlider.value).ToString();
|
}
|
}
|
}
|