using System; using UnityEngine; using UnityEngine.UI; //批量使用物品 public class ItemBatchUseWin : UIBase { [SerializeField] ItemCell itemCell; [SerializeField] Text itemCntTxt; [SerializeField] LongPressButton subBtn; [SerializeField] LongPressButton addBtn; [SerializeField] Text tipText; [SerializeField] Button okBtn; [SerializeField] Text titleText; public static Func ShowTextEvent; public static int itemID; long curUseCount; long maxCount; protected override void InitComponent() { addBtn.SetListener(OnClickPlus); addBtn.onPress.AddListener(OnClickPlus); subBtn.SetListener(OnClickReduce); subBtn.onPress.AddListener(OnClickReduce); okBtn.AddListener(OnOK); } protected override void OnPreOpen() { var key = "UseItemTitle_" + itemID; if (LanguageConfig.HasKey(key)) { titleText.text = Language.Get(key); } else { titleText.text = Language.Get("UseItemDefault"); } maxCount = PackManager.Instance.GetItemCountByID(PackType.Item, itemID); curUseCount = maxCount > 0 ? 1 : 0; itemCell.Init(new ItemCellModel(itemID, false, curUseCount)); itemCell.button.AddListener(() => { ItemTipUtility.Show(itemID); }); RefreshCount(); RefreshBtn(); } protected override void OnPreClose() { } void RefreshCount() { itemCntTxt.text = curUseCount + "/" + maxCount; itemCell.countText.text = curUseCount.ToString(); if (ShowTextEvent != null) { tipText.text = ShowTextEvent(curUseCount); } else { tipText.text = ""; } } void RefreshBtn() { if (curUseCount >= maxCount) { addBtn.interactable = false; addBtn.SetColorful(null, false); } else { addBtn.interactable = true; addBtn.SetColorful(null, true); } if (curUseCount == 0) { subBtn.interactable = false; subBtn.SetColorful(null, false); } else { subBtn.interactable = true; subBtn.SetColorful(null, true); } } void OnClickPlus() { if (curUseCount >= maxCount) { curUseCount = maxCount; return; } curUseCount++; RefreshCount(); RefreshBtn(); } void OnClickReduce() { if (curUseCount == 0) return; curUseCount--; RefreshCount(); RefreshBtn(); } void OnOK() { CloseWindow(); if (curUseCount == 0) { SysNotifyMgr.Instance.ShowTip("UseItem1"); return; } if (ItemLogicUtility.CheckItemCount(PackType.Item, itemID, curUseCount, 2)) { ItemLogicUtility.Instance.UseItem(PackManager.Instance.GetItemGUIDByID(itemID), (int)curUseCount); } } }