//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, May 20, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class AlchemyDrugBatchUseWin : Window { [SerializeField] ItemCell m_Item; [SerializeField] Text m_ItemName; [SerializeField] Slider m_SplitSlider; [SerializeField] Text m_Number; [SerializeField] Button m_AddBtn; [SerializeField] Button m_ReduceBtn; [SerializeField] Button m_SplitBtn; [SerializeField] Button m_CloseBtn; public static int itemId = 0; PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } AlchemyModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_SplitSlider.SetListener((float value) => { OnValueChange(); }); m_AddBtn.SetListener(OnClickAddBtn); m_ReduceBtn.SetListener(OnClickReduceBtn); m_SplitBtn.SetListener(OnClickBatchUseBtn); m_CloseBtn.SetListener(CloseClick); } protected override void OnPreOpen() { Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } #endregion void Display() { var config = ItemConfig.Get(itemId); var itemCount = packModel.GetItemCountByID(PackType.Item, itemId); int maxValue = itemCount; AlchemyDrugUseLimit drugUseLimit; if (model.TryGetAlchemyUseLimit(itemId, out drugUseLimit)) { maxValue = Mathf.Min(itemCount, drugUseLimit.GetUseLimit() - drugUseLimit.eatTimes); } var itemData = new ItemCellModel(itemId, true, (ulong)maxValue); m_Item.Init(itemData); m_Item.countText.text = maxValue.ToString(); m_ItemName.text = config.ItemName; m_ItemName.color = UIHelper.GetUIColor(config.ItemColor, true); m_SplitSlider.minValue = 1; m_SplitSlider.maxValue = maxValue; m_SplitSlider.value = maxValue; m_Number.text = Mathf.Ceil(m_SplitSlider.value).ToString(); } public void OnValueChange() { m_Number.text = Mathf.Ceil(m_SplitSlider.value).ToString(); } public void OnClickAddBtn() { if (m_SplitSlider.value < m_SplitSlider.maxValue) { m_SplitSlider.value++; } } public void OnClickReduceBtn() { if (m_SplitSlider.value > m_SplitSlider.minValue) { m_SplitSlider.value--; } } public void OnClickBatchUseBtn() { var count = (int)Mathf.Ceil(m_SplitSlider.value); var isAddReikiPoint = false; var config = ItemConfig.Get(itemId); if (config != null && config.Effect1 == 200) { isAddReikiPoint = true; } var items = packModel.GetItemsById(PackType.Item, itemId); if (items != null) { for (int i = 0; i < items.Count; i++) { var item = items[i]; if (count >= item.count) { ItemOperateUtility.Instance.UseItem(item.guid, item.count); count -= item.count; } else { if (count > 0) { ItemOperateUtility.Instance.UseItem(item.guid, count); } break; } } } if (isAddReikiPoint) { ModelCenter.Instance.GetModel().reikiPointPromoteSymbol = true; } CloseImmediately(); } } }