//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, March 04, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System; namespace vnxbqy.UI { public class FamilyAuctioncell : MonoBehaviour { [SerializeField] GameObject m_NeedImage;//需要 [SerializeField] GameObject m_ParticipateImage;//参与竞价 [SerializeField] ItemCell m_ItemCell;//物品 [SerializeField] TextEx m_ItemName;//物品名 [SerializeField] Text 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(); } } string auctionItemGuid; bool m_IsWarmUp = false; bool isWarmUp { get { return m_IsWarmUp; } set { if (value != m_IsWarmUp) { m_IsWarmUp = value; AuctionItem auctionItem; if (model.TryGetFairyAuctionItem(auctionItemGuid, out auctionItem)) { Display(auctionItem); } } } } float timer = 0f; public void GetFamilyAuctionGUID(string guid) { m_NeedImage.SetActive(false); m_ParticipateImage.SetActive(false); m_HighestPriceImage.SetActive(false); AuctionItem auctionItem; if (!model.TryGetFairyAuctionItem(guid, out auctionItem)) { return; } this.auctionItemGuid = guid; m_NeedImage.SetActive(AuctionLogicUtil.IsSatisfyEquipBetterEquip(auctionItem)); if (model.IsMyTopPrice(guid))//参与了竞价的物品 { m_HighestPriceImage.SetActive(true); } if (model.IsParticipateInBidding(guid)) { m_ParticipateImage.SetActive(true); } ItemCellModel cellModel = new ItemCellModel(auctionItem.itemId, true, (ulong)auctionItem.itemCount, string.Empty, PackType.Deleted, false, auctionItem.userDataDict); m_ItemCell.Init(cellModel); var score = 0; if (ItemLogicUtility.Instance.IsSuitEquip(auctionItem.itemId)) { score = ItemLogicUtility.Instance.GetEquipScore(auctionItem.itemId, auctionItem.userDataDict); var isUp = ItemLogicUtility.Instance.IsFightUp(auctionItem.itemId, score); m_ItemCell.stateIcon.SetActive(isUp == 1); if (isUp == 1) { m_ItemCell.stateIcon.SetSprite(isUp == 1 ? "EquipUpIcon" : "EquipDownIcon"); } } else { m_ItemCell.stateIcon.SetActive(false); } m_ItemCell.button.SetListener(() => { ItemTipUtility.Show(new ItemTipUtility.ItemViewInfo() { itemId = auctionItem.itemId, compare = true, isAuctionEquip = ItemLogicUtility.Instance.IsRealmEquip(auctionItem.itemId), score = score, legendProperty = ItemLogicUtility.Instance.IsRealmEquip(auctionItem.itemId) ? ItemTipUtility.GetLegendProperty(auctionItem.itemId, auctionItem.userDataDict) : default(ItemTipUtility.LegendProperty), }); }); var itemConfig = ItemConfig.Get(auctionItem.itemId); m_ItemName.text = UIHelper.GetItemName(auctionItem.itemId, true); m_ItemName.color = UIHelper.GetUIColor(itemConfig.ItemColor, true); int requireMoney = AuctionLogicUtil.GetBiddingRequireMoney(auctionItem); var config = AuctionItemConfig.Get(auctionItem.itemId); var topPrice = config.BuyoutPrice * auctionItem.itemCount; if (config.BuyoutPrice != 0 && requireMoney > topPrice)//竞价价格永远不能大于最高价 { requireMoney = topPrice; } m_JadeNumber.text = UIHelper.ReplaceLargeNum(auctionItem.biddingPrice); m_JadeNumber1.text = UIHelper.ReplaceLargeNum(topPrice); m_PriceButton.SetActive(config.BuyoutPrice != 0); m_PriceButton.SetListener(() => //一口价 { model.SendBiddingItem(auctionItem, true); }); m_JadeNumber2.text = UIHelper.ReplaceLargeNum(requireMoney); 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.TryGetFairyAuctionItem(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); } } }