//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, July 18, 2018 //-------------------------------------------------------- using Spine; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //仙树升级加速界面 namespace vnxbqy.UI { public class TreeTimeUpItemBuyConfirmWin : Window { [SerializeField] Button closeButton; [SerializeField] RichText info; [SerializeField] Text leftTime; [SerializeField] ItemCell itemCell; [SerializeField] Text itemCntTxt; [SerializeField] ToggleButton autoBuy; [SerializeField] Button addBtn; [SerializeField] Button subBtn; [SerializeField] Slider slider; [SerializeField] Text sliderTxt; [SerializeField] Button TimeUpBtn; PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } CutTreeModel cutTreeModel { get { return ModelCenter.Instance.GetModel(); } } StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { closeButton.AddListener(CloseClick); TimeUpBtn.AddListener(TimeUp); autoBuy.AddListener(AutoBuyEvent); addBtn.AddListener(() => { slider.value = Math.Min(slider.value + 1, slider.maxValue); sliderTxt.text = slider.value.ToString(); TimeUpShow(); }); subBtn.AddListener(() => { slider.value = Math.Max(slider.value - 1, 1); sliderTxt.text = slider.value.ToString(); TimeUpShow(); }); slider.onValueChanged.AddListener((float value) => { sliderTxt.text = value.ToString(); TimeUpShow(); }); } protected override void OnPreOpen() { Display(); GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; } protected override void OnAfterOpen() { } protected override void OnPreClose() { GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; } protected override void OnAfterClose() { } protected override void LateUpdate() { if (cutTreeModel.m_LVUPState == 1) { if (cutTreeModel.GetLVUPRemainTime() > 0) { TimeUpShow(); } } } #endregion void Display() { autoBuy.isOn = false; slider.minValue = 1; slider.maxValue = 1; slider.value = 1; sliderTxt.text = "1"; itemCell.Init(new ItemCellModel(cutTreeModel.timeUpTreeItemID, false, 1)); itemCell.button.AddListener(() => { ItemTipUtility.Show(cutTreeModel.timeUpTreeItemID); }); TimeUpShow(); } //根据剩余时间动态显示 void TimeUpShow() { RefreshSlider(); var remainTime = cutTreeModel.GetLVUPRemainTime(); if (cutTreeModel.m_LVUPState == 0 || remainTime <= 0) { CloseClick(); return; } leftTime.text = TimeUtility.SecondsToDHMS(cutTreeModel.GetLVUPRemainTime()); int itemCnt = packModel.GetItemCountByID(PackType.Item, cutTreeModel.timeUpTreeItemID); int needCount = (int)Math.Ceiling((float)remainTime / cutTreeModel.timeUpTreeItemSubTime); itemCntTxt.text = itemCnt + "/" + needCount; itemCntTxt.color = itemCnt >= needCount ? UIHelper.GetUIColor(TextColType.Green, true) : UIHelper.GetUIColor(TextColType.Red, true); if (itemCnt < (int)slider.value && autoBuy.isOn) { var storeConfig = StoreConfig.GetStoreCfg(cutTreeModel.timeUpTreeItemID, 1, 1); info.text = Language.Get("CutTree10", (int)slider.value, cutTreeModel.timeUpTreeItemID, TimeUtility.SecondsToDHMS((int)slider.value * cutTreeModel.timeUpTreeItemSubTime), (int)slider.value - itemCnt, ((int)slider.value - itemCnt) * storeConfig.MoneyNumber); } else { info.text = Language.Get("CutTree11", (int)slider.value, cutTreeModel.timeUpTreeItemID, TimeUtility.SecondsToDHMS((int)slider.value * cutTreeModel.timeUpTreeItemSubTime)); } } void TimeUp() { var pack = new CB224_tagCMUseTreeLVUPTimeItem(); pack.UseCount = (uint)slider.value; pack.IsAutoBuy = (byte)(autoBuy.isOn ? 1 : 0); GameNetSystem.Instance.SendInfo(pack); } void OnSecondEvent() { TimeUpShow(); } //最大使用数量 = 背包中的数量 + 限购物品次数(仙玉足够购买); 不超过需要使用的数量 void AutoBuyEvent() { autoBuy.isOn = !autoBuy.isOn; RefreshSlider(); } void RefreshSlider() { int hasCnt = packModel.GetItemCountByID(PackType.Item, cutTreeModel.timeUpTreeItemID); int needCnt = (int)Math.Ceiling((float)cutTreeModel.GetLVUPRemainTime() / cutTreeModel.timeUpTreeItemSubTime); int maxCnt = Math.Max(1, Math.Min(hasCnt, needCnt)); if (autoBuy.isOn) { if (hasCnt >= needCnt) { maxCnt = needCnt; } else { var storeConfig = StoreConfig.GetStoreCfg(cutTreeModel.timeUpTreeItemID, 1, 1); int remainCnt = 0; if (storeConfig.GoumaiNumber.Length == 1 && storeConfig.GoumaiNumber[0] == 0) { remainCnt = 99999999; } else { storeModel.TryGetIsSellOut(storeConfig, out remainCnt); } ulong cnt = UIHelper.GetMoneyCnt(storeConfig.MoneyType) / (ulong)storeConfig.MoneyNumber; int canBuyCnt = Math.Min((int)cnt, remainCnt); maxCnt = Math.Min(canBuyCnt + hasCnt, needCnt); } } slider.maxValue = maxCnt; slider.value = Math.Min(slider.value, maxCnt); sliderTxt.text = slider.value.ToString(); } } }