using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //使用货币购买坊市表商品 public class BuyItemWin : UIBase { [SerializeField] ItemCell itemCell; [SerializeField] Text nameText; [SerializeField] Text countText; [SerializeField] Text descText; [SerializeField] SliderPanel sliderPanel; [SerializeField] Text limitText; [SerializeField] Image moneyIcon; [SerializeField] Text moneyText; [SerializeField] Button buyButton; int useCnt; int maxCnt; protected override void InitComponent() { buyButton.AddListener(BuyGoods); } protected override void OnPreOpen() { useCnt = 1; Display(); } void Display() { var shopConfig = StoreConfig.Get(StoreModel.Instance.buyShopID); var itemID = shopConfig.ItemID; var itemCount = shopConfig.ItemCnt; itemCell.Init(new ItemCellModel(itemID, false, itemCount*useCnt)); var itemConfig = ItemConfig.Get(itemID); nameText.text = itemConfig.ItemName; countText.text = Language.Get("storename12", GetItemCount(itemID)); descText.text = itemConfig.Description; var buyCnt = StoreModel.Instance.GetShopLimitBuyCount(StoreModel.Instance.buyShopID); maxCnt = shopConfig.LimitCnt - buyCnt; if (maxCnt == 0) { //没有限购,用货币可购买数量 maxCnt = Math.Max(1, (int)(UIHelper.GetMoneyCnt(shopConfig.MoneyType)/shopConfig.MoneyNum)); } OnSliderChange(useCnt); sliderPanel.Init((value) => { OnSliderChange(value); }, maxCnt); } void OnSliderChange(int value) { var shopConfig = StoreConfig.Get(StoreModel.Instance.buyShopID); useCnt = value; itemCell.countText.text = UIHelper.ReplaceLargeNum(value*shopConfig.ItemCnt); string limitStr = ""; if (shopConfig.LimitCnt == 0) { limitStr = ""; } else if (shopConfig.ResetType == 0) { //限购 limitStr = Language.Get("storename8", useCnt, maxCnt); } else if (shopConfig.ResetType == 1) { //每日限购 limitStr = Language.Get("storename6", useCnt, maxCnt); } else if (shopConfig.ResetType == 2) { //每周限购 limitStr = Language.Get("storename7", useCnt, maxCnt); } limitText.text = limitStr; moneyIcon.SetIconWithMoneyType(shopConfig.MoneyType); moneyText.text = UIHelper.ShowUseMoney(shopConfig.MoneyType, shopConfig.MoneyNum * useCnt, false); } void BuyGoods() { CloseWindow(); StoreModel.Instance.SendBuyShopItem(StoreConfig.Get(StoreModel.Instance.buyShopID), useCnt); } //如果物品是自动转换货币类型的,则返回货币数量,否则返回物品数量 long GetItemCount(int id) { var config = ItemConfig.Get(id); if (config.Effect1 == 264) { return UIHelper.GetMoneyCnt(config.EffectValueB1); } var count = PackManager.Instance.GetItemCountByID(GeneralDefine.GetPackTypeByItemType(config.Type), id); if (config.Type == 150) { count = Math.Max(0, count - 1); } return count; } }