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(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } 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(); } } }