//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, March 05, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; namespace Snxxz.UI { public class MyFocusCell : MonoBehaviour { [SerializeField] GameObject m_NeedImage;//需要 [SerializeField] GameObject m_ParticipateImage;//参与竞价 [SerializeField] ItemCell m_ItemCell;//物品 [SerializeField] TextEx m_ItemName;//物品名 [SerializeField] TextEx m_BiddingText;//竞价中 [SerializeField] GameObject m_HighestPriceImage;//最高价 [SerializeField] TextEx m_JadeNumber;//当前价格 [SerializeField] TextEx m_TimeText;//时间 [SerializeField] Button m_PriceButton;//一口价按钮 [SerializeField] ImageEx m_PriceImage; [SerializeField] TextEx m_JadeNumber1; [SerializeField] Button m_BiddingButton;//竞价按钮 [SerializeField] ImageEx m_BiddingImage; [SerializeField] TextEx m_JadeNumber2; AuctionModel model { get { return ModelCenter.Instance.GetModel(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel(); } } ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel(); } } string auctionItemGuid; bool m_IsWarmUp = false; bool isWarmUp { get { return m_IsWarmUp; } set { if (value != m_IsWarmUp) { m_IsWarmUp = value; AuctionItem auctionItem; if (model.TryGetMyFocusAuctionItem(auctionItemGuid, out auctionItem)) { Display(auctionItem); } } } } float timer = 0f; public void GetMyFocusGUID(string guid) { AuctionItem auctionItem; if (!model.TryGetMyFocusAuctionItem(guid, out auctionItem)) { return; } this.auctionItemGuid = guid; m_NeedImage.SetActive(false); m_ParticipateImage.SetActive(false); m_HighestPriceImage.SetActive(false); var playerId = PlayerDatas.Instance.baseData.PlayerID; var config = AuctionItemConfig.Get(auctionItem.itemId); var itemConfig = ItemConfig.Get(auctionItem.itemId); m_NeedImage.gameObject.SetActive(AuctionLogicUtil.IsSatisfyEquipBetterEquip(auctionItem)); if (model.IsMyTopPrice(guid))//参与了竞价的物品 { m_HighestPriceImage.gameObject.SetActive(true); } if (model.IsParticipateInBidding(guid)) { m_ParticipateImage.SetActive(true); } ItemCellModel cellModel = new ItemCellModel(auctionItem.itemId, true, (ulong)auctionItem.itemCount); m_ItemCell.Init(cellModel); m_ItemCell.button.SetListener(() => { ItemAttrData attrData = new ItemAttrData(auctionItem.itemId, true, (ulong)1); itemTipsModel.SetItemTipsModel(attrData); }); m_ItemName.text = itemConfig.ItemName; int requireMoney = AuctionLogicUtil.GetBiddingRequireMoney(auctionItem); var topPrice = config.BuyoutPrice * auctionItem.itemCount; if (config.BuyoutPrice != 0 && requireMoney > topPrice)//竞价价格永远不能大于最高价 { requireMoney = topPrice; } m_JadeNumber.text = auctionItem.biddingPrice.ToString(); m_JadeNumber1.text = topPrice.ToString(); m_PriceButton.gameObject.SetActive(config.BuyoutPrice != 0); m_PriceButton.SetListener(() => //一口价 { model.SendBiddingItem(auctionItem, true); }); m_JadeNumber2.text = requireMoney.ToString(); m_BiddingButton.SetListener(() => //竞价 { model.SendBiddingItem(auctionItem, false); }); Display(auctionItem); DisplayTime(auctionItem); } private void LateUpdate() { timer += Time.deltaTime; if (timer >= 0.5f) { timer = 0f; AuctionItem auctionItem; if (model.TryGetMyFocusAuctionItem(auctionItemGuid, out auctionItem)) { DisplayTime(auctionItem); isWarmUp = AuctionLogicUtil.IsAuctionItemWarmUp(auctionItem); } } } void Display(AuctionItem auctionItem) { var isWarmUp = AuctionLogicUtil.IsAuctionItemWarmUp(auctionItem); m_PriceButton.SetInteractable(m_JadeNumber1, !isWarmUp); var isTopPrice = AuctionLogicUtil.IsBiddingUpperLimit(auctionItem); m_BiddingButton.SetInteractable(m_JadeNumber2, !isWarmUp && !isTopPrice); m_BiddingText.text = AuctionLogicUtil.GetBiddingStateLabel(auctionItem); if (model.IsMyTopPrice(auctionItemGuid)) { m_BiddingText.text = string.Empty; } } void DisplayTime(AuctionItem auctionItem) { m_TimeText.text = AuctionLogicUtil.GetBiddingTimeLabel(auctionItem); var colortype = AuctionLogicUtil.IsAuctionItemExtraTime(auctionItem) ? TextColType.Red : TextColType.Green; m_TimeText.color = UIHelper.GetUIColor(colortype, true); } } }