//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, March 06, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //拍品上架 namespace vnxbqy.UI { public class AuctionShelfWin : Window { [SerializeField] ItemCell m_ItemCell; [SerializeField] Text m_ItemName; [SerializeField] RectTransform m_UnOverdueContainer; [SerializeField] Text m_BasePriceText; [SerializeField] Transform m_SupportBuyout; [SerializeField] Text m_BuyoutPriceText; [SerializeField] Transform m_NotSupportBuyout; [SerializeField] RectTransform m_OverdueContainer; [SerializeField] Button m_CloseBtn; [SerializeField] Button m_UseBtn; [SerializeField] Button m_Auction; [SerializeField] Button m_Overdue; [SerializeField] Slider m_SplitSlider; [SerializeField] Button m_AddBtn; [SerializeField] Button m_ReduceBtn; [SerializeField] Text m_Number; [SerializeField] Transform SplitObj; AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel(); } } EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_CloseBtn.SetListener(() => { CloseImmediately(); }); m_UseBtn.SetListener(OnClickUseBtn); m_Auction.SetListener(OnClickAuction); m_Overdue.SetListener(OnClickOverdueItem); m_SplitSlider.SetListener((float value) => { OnSplitValueChange(); }); m_AddBtn.SetListener(OnClickAddBtn); m_ReduceBtn.SetListener(OnClickReduceBtn); } protected override void OnPreOpen() { DisplayItem(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { } public void OnSplitValueChange() { m_Number.text = Mathf.Ceil(m_SplitSlider.value).ToString(); var sellCnt = Mathf.Ceil(m_SplitSlider.value); var item = auctionHelpModel.ItemModel; var config = AuctionItemConfig.Get(item.itemId); m_Number.text = sellCnt.ToString(); m_BasePriceText.text = (config.BasePrice * sellCnt).ToString(); m_SupportBuyout.SetActive(config.BuyoutPrice != 0); m_NotSupportBuyout.SetActive(config.BuyoutPrice == 0); m_BuyoutPriceText.text = (config.BuyoutPrice * sellCnt).ToString(); } public void OnClickAddBtn() { if (m_SplitSlider.value < m_SplitSlider.maxValue) { m_SplitSlider.value++; } } public void OnClickReduceBtn() { if (m_SplitSlider.value > m_SplitSlider.minValue) { m_SplitSlider.value--; } } private void OnClickUseBtn() { CloseImmediately(); if (ItemLogicUtility.Instance.IsOverdue(auctionHelpModel.ItemModel.guid)) { ItemOperateUtility.Instance.ProcessOverdueItem(auctionHelpModel.ItemModel.guid); } //else //{ // ItemOperateUtility.Instance.UseItem(auctionHelpModel.ItemModel.guid); //} } private void OnClickAuction() { OnClickAuctionLogic(); CloseImmediately(); } private void OnClickAuctionLogic() { var sellCnt = (ushort)int.Parse(m_Number.text); if (sellCnt == 0) return; if (auctionHelpModel.ItemModel == null) { return; } if (auctionHelpModel.ItemModel.config == null) { return; } if (auctionHelpModel.ItemModel.itemInfo == null) { return; } if (ItemLogicUtility.Instance.IsRealmEquip(auctionHelpModel.ItemModel.itemId)) { var equipGuid = equipModel.GetEquip(new Int2(auctionHelpModel.ItemModel.config.LV, auctionHelpModel.ItemModel.config.EquipPlace)); var isMySuit = false; var myEquipColor = 0; if (!string.IsNullOrEmpty(equipGuid)) { var equip = packModel.GetItemByGuid(equipGuid); if (equip != null) { isMySuit = equip.config.SuiteiD > 0; myEquipColor = equip.config.ItemColor; } } if (auctionHelpModel.ItemModel.config.JobLimit == 0 || auctionHelpModel.ItemModel.config.JobLimit == PlayerDatas.Instance.baseData.Job) { if (!isMySuit && auctionHelpModel.ItemModel.config.SuiteiD > 0) { AuctionBetterConfirmWin.remindType = 2; WindowCenter.Instance.Open(); return; } if (auctionHelpModel.ItemModel.config.ItemColor > myEquipColor) { AuctionBetterConfirmWin.remindType = 1; WindowCenter.Instance.Open(); return; } } } AuctionInquiry.Instance.SendSellAuctionItem(auctionHelpModel.ItemModel.itemInfo.index, sellCnt); } private void OnClickOverdueItem() { SysNotifyMgr.Instance.ShowTip("LotAuctionLimit"); } private void DisplayItem() { if (auctionHelpModel.ItemModel == null) { return; } var item = auctionHelpModel.ItemModel; var config = AuctionItemConfig.Get(item.itemId); bool isEquip = true; ItemCellModel cellModel; if (ItemLogicUtility.Instance.IsRealmEquip(item.itemId)) { cellModel = new ItemCellModel(item.itemId, true, (ulong)item.count, guid: item.guid, isCompare: true); var equipGuid = equipModel.GetEquip(new Int2(item.config.LV, item.config.EquipPlace)); if (string.IsNullOrEmpty(equipGuid)) { isEquip = false; } } else { cellModel = new ItemCellModel(item.itemId, true, (ulong)item.count); } m_ItemCell.Init(cellModel); string addInfo = string.Empty; if (!ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId)) { //非本职业可用 addInfo = UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(" (", Language.Get("NoMyJob"), ")")); } else if (!isEquip) { //装备 addInfo = UIHelper.AppendColor(TextColType.Red, StringUtility.Contact(" (", Language.Get("RoleParticularWin_7"), ")")); } m_ItemName.text = auctionHelpModel.ItemModel.config.ItemName + addInfo; m_ItemCell.button.SetListener(() => { ItemTipUtility.Show(item.guid); }); var isOverdue = ItemLogicUtility.Instance.IsOverdue(auctionHelpModel.ItemModel.guid); m_UnOverdueContainer.SetActive(!isOverdue); m_OverdueContainer.SetActive(isOverdue); m_Auction.SetActive(!isOverdue); m_Overdue.SetActive(isOverdue); SplitObj.SetActive(!isOverdue); m_SplitSlider.minValue = 1; m_SplitSlider.maxValue = item.count; if (!isOverdue) { m_SplitSlider.value = 1; var sellCnt = Mathf.Ceil(m_SplitSlider.value); m_Number.text = sellCnt.ToString(); m_BasePriceText.text = (config.BasePrice * sellCnt).ToString(); m_SupportBuyout.SetActive(config.BuyoutPrice != 0); m_NotSupportBuyout.SetActive(config.BuyoutPrice == 0); m_BuyoutPriceText.text = (config.BuyoutPrice * sellCnt).ToString(); } } #endregion } }