//--------------------------------------------------------
|
// [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<PackModel>(); } }
|
CutTreeModel cutTreeModel { get { return ModelCenter.Instance.GetModel<CutTreeModel>(); } }
|
StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
|
#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();
|
}
|
|
}
|
|
}
|