//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, April 22, 2019
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
|
public class TipBuyItemWidget : MonoBehaviour
|
{
|
[SerializeField] Text m_LimitInfo;
|
[SerializeField] Text m_Count;
|
[SerializeField] Button m_Reduce;
|
[SerializeField] Button m_Add;
|
[SerializeField] Button m_SetBuyCount;
|
|
[SerializeField] Image m_MoneyIcon;
|
[SerializeField] Text m_Money;
|
|
[SerializeField] NumKeyBoard m_KeyBoard;
|
|
int goodId = 0;
|
|
public void Display(int goodId)
|
{
|
this.goodId = goodId;
|
var isVipLimit = BuyItemController.Instance.IsVipLimitGood(this.goodId);
|
if (isVipLimit)
|
{
|
m_LimitInfo.gameObject.SetActive(true);
|
var limitCount = BuyItemController.Instance.GetBuyCountLimit(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
var nextVipLevel = BuyItemController.Instance.GetNextCanbuyVipLevel(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
if (nextVipLevel == 999)
|
{
|
m_LimitInfo.text = Language.Get("StoreWin109");
|
}
|
else
|
{
|
var nextVipLimitCount = BuyItemController.Instance.GetBuyCountLimit(this.goodId, nextVipLevel);
|
m_LimitInfo.text = Language.Get("StoreWin108", limitCount, nextVipLevel, nextVipLimitCount);
|
}
|
}
|
else
|
{
|
var limitCount = BuyItemController.Instance.GetBuyCountLimit(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
if (limitCount != -1 && limitCount <= 0)
|
{
|
m_LimitInfo.gameObject.SetActive(true);
|
m_LimitInfo.text = Language.Get("StoreWin109");
|
}
|
else
|
{
|
m_LimitInfo.gameObject.SetActive(false);
|
}
|
}
|
|
var config = StoreConfig.Get(goodId);
|
m_MoneyIcon.SetIconWithMoneyType(config.MoneyType);
|
m_MoneyIcon.SetNativeSize();
|
m_KeyBoard.gameObject.SetActive(false);
|
|
DisplayDynamicInfo(true);
|
}
|
|
public void Dispose()
|
{
|
goodId = 0;
|
}
|
|
private void LateUpdate()
|
{
|
DisplayDynamicInfo(false);
|
}
|
|
private void DisplayDynamicInfo(bool force)
|
{
|
if (force || BuyItemController.Instance.wannaBuyCount.dirty)
|
{
|
if (goodId != 0)
|
{
|
DisplayCountAndPrice(BuyItemController.Instance.wannaBuyCount.Fetch());
|
}
|
}
|
}
|
|
private void DisplayCountAndPrice(int count)
|
{
|
m_Count.text = count.ToString();
|
var isSellOut = BuyItemController.Instance.IsSellOut(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
m_Count.color = UIHelper.GetUIColor(isSellOut ? TextColType.Red : TextColType.Green);
|
|
var config = StoreConfig.Get(this.goodId);
|
var moneyOwn = UIHelper.GetMoneyCnt(config.MoneyType);
|
var totalPrice = BuyItemController.Instance.GetTotalPrice(this.goodId, count);
|
m_Money.text = totalPrice.ToString();
|
m_Money.color = UIHelper.GetUIColor((ulong)totalPrice > moneyOwn ? TextColType.Red : TextColType.Green);
|
}
|
|
private void AddBuyCount()
|
{
|
var isSellOut = BuyItemController.Instance.IsSellOut(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
if (isSellOut)
|
{
|
return;
|
}
|
BuyItemController.Instance.SetBuyCount(this.goodId, BuyItemController.Instance.wannaBuyCount.value + 1);
|
}
|
|
private void ReduceBuyCount()
|
{
|
var isSellOut = BuyItemController.Instance.IsSellOut(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
if (isSellOut)
|
{
|
return;
|
}
|
BuyItemController.Instance.SetBuyCount(this.goodId, BuyItemController.Instance.wannaBuyCount.value - 1);
|
}
|
|
private void SetBuyCount(bool value)
|
{
|
|
m_KeyBoard.gameObject.SetActive(false);
|
if (value)
|
{
|
BuyItemController.Instance.SetBuyCount(this.goodId, int.Parse(m_KeyBoard.Value));
|
}
|
}
|
|
private void Start()
|
{
|
m_Add.SetListener(AddBuyCount);
|
m_Reduce.SetListener(ReduceBuyCount);
|
m_SetBuyCount.SetListener(() =>
|
{
|
var isSellOut = BuyItemController.Instance.IsSellOut(this.goodId, PlayerDatas.Instance.baseData.VIPLv);
|
if (!isSellOut)
|
{
|
m_KeyBoard.gameObject.SetActive(true);
|
}
|
});
|
m_KeyBoard.onConfirm.AddListener(SetBuyCount);
|
}
|
|
}
|
|
}
|