//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, April 22, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace vnxbqy.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.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.SetActive(true); m_LimitInfo.text = Language.Get("StoreWin109"); } else { m_LimitInfo.SetActive(false); } } var config = StoreConfig.Get(goodId); m_MoneyIcon.SetIconWithMoneyType(config.MoneyType); m_MoneyIcon.SetNativeSize(); m_KeyBoard.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); int curVipIndex = -1; int nextVipIndex = -1; bool isVipBuy = BuyItemController.Instance.CheckIsVipBuy(config, out curVipIndex, out nextVipIndex); if ((isVipBuy && curVipIndex == -1) || PlayerDatas.Instance.baseData.LV < config.LV) { transform.Find("Container_Money").SetActive(false); return; } transform.Find("Container_Money").SetActive(true); 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.SetActive(false); if (value) { BuyItemController.Instance.SetBuyCount(this.goodId, int.Parse(m_KeyBoard.Value)); } } private void OnKeyChange() { 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.SetActive(true); } }); m_KeyBoard.onValueChange.AddListener(OnKeyChange); m_KeyBoard.onConfirm.AddListener(SetBuyCount); } } }