| System/Auction/AuctionInquiryModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/AuctionLogicUtil.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/FamilyAuctionWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/FamilyAuctioncell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/FullServiceAuctioncell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/MyAuctionCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/MyAuctionWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Auction/AuctionInquiryModel.cs
@@ -19,7 +19,7 @@ public int auctionType; //拍品类型,0-全服拍品,1-仙盟拍品 public DateTime putAwayTime; //上架时间 public DateTime biddingTime; //最新竞价时间 public DateTime biddingTime; //最新竞价时间 public string customData; //自定义数据 @@ -156,6 +156,15 @@ return FamilyAuctionItemDic.TryGetValue(guid, out item); } public bool TryGetMyAuctionItem(string guid, out AuctionItem item) { if (PlayerAuctionItemInfoDic.TryGetValue(guid, out item)) { return true; } return FamilyAuctionItemDic.TryGetValue(guid, out item); } public List<string> GetServerAuctionItems() { List<string> guids = new List<string>(); @@ -176,11 +185,44 @@ return FamilyAuctionItemDic.Keys; } public void GetMyAuctionItems(ref List<string> itemGuids) { itemGuids.Clear(); itemGuids.AddRange(PlayerAuctionItemInfoDic.Keys); var playerId = PlayerDatas.Instance.baseData.PlayerID; foreach (var item in FamilyAuctionItemDic.Values) { if (itemGuids.Contains(item.itemGuid)) { continue; } if (item.familyPlayers != null && item.familyPlayers.Contains((int)playerId)) { itemGuids.Add(item.itemGuid); } } } public bool IsParticipateInBidding(string guid) { return BiddingItemInfoDic.ContainsKey(guid); } public bool IsMyTopPrice(string guid) { var isMyTopPrice = false; if (IsParticipateInBidding(guid)) { AuctionItem myBiddingItem; if (TryGetMyBiddingAuctionItem(guid, out myBiddingItem)) { isMyTopPrice = AuctionLogicUtil.IsMyTopPrice(myBiddingItem); } } return isMyTopPrice; } public void ReceivePackage(HB501_tagGCAuctionItemInfo info)// 拍卖行拍卖中的物品信息 { List<AuctionItem> fullServiceAuctionList = new List<AuctionItem>(); System/Auction/AuctionLogicUtil.cs
@@ -26,10 +26,6 @@ { return Language.Get(item.auctionType == 0 ? "PMH_07" : "PMH_17"); } if (item.biddingPlayer == PlayerDatas.Instance.baseData.PlayerID) { return string.Empty; } if (item.biddingPrice != 0) { return Language.Get("PMH_06"); System/Auction/FamilyAuctionWin.cs
@@ -136,8 +136,8 @@ if (model.TryGetFairyAuctionItem(x, out lhs) && model.TryGetFairyAuctionItem(y, out rhs)) { var lhs_myTopPrice = AuctionLogicUtil.IsMyTopPrice(lhs); var rhs_myTopPrice = AuctionLogicUtil.IsMyTopPrice(rhs); var lhs_myTopPrice = model.IsMyTopPrice(x); var rhs_myTopPrice = model.IsMyTopPrice(y); if (lhs_myTopPrice != rhs_myTopPrice) { return -lhs_myTopPrice.CompareTo(rhs_myTopPrice); System/Auction/FamilyAuctioncell.cs
@@ -76,9 +76,9 @@ m_NeedImage.gameObject.SetActive(AuctionLogicUtil.IsSatisfyEquipBetterEquip(auctionItem)); if (model.IsParticipateInBidding(guid))//参与了竞价的物品 if (model.IsMyTopPrice(guid))//参与了竞价的物品 { m_HighestPriceImage.gameObject.SetActive(AuctionLogicUtil.IsMyTopPrice(auctionItem)); m_HighestPriceImage.gameObject.SetActive(true); } ItemCellModel cellModel = new ItemCellModel(auctionItem.itemId, true, (ulong)auctionItem.itemCount); @@ -160,6 +160,11 @@ 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) System/Auction/FullServiceAuctioncell.cs
@@ -182,6 +182,10 @@ m_BiddingButton.SetInteractable(m_JadeNumber2, !isWarmUp && !isTopPrice); m_BiddingText.text = AuctionLogicUtil.GetBiddingStateLabel(auctionItem); if (AuctionLogicUtil.IsMyTopPrice(auctionItem)) { m_BiddingText.text = string.Empty; } } void DisplayTime(AuctionItem auctionItem) System/Auction/MyAuctionCell.cs
@@ -29,86 +29,74 @@ AuctionInquiryModel model { get { return ModelCenter.Instance.GetModel<AuctionInquiryModel>(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } } ItemTipsModel itemTipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } } private AuctionItemConfig AuctionItem; private AuctionItem MyAuction; bool cacheIsWarmUp = false; string auctionItemGuid; public void GetMyAuctionGUID(string GUIID) bool m_IsWarmUp = false; bool isWarmUp { if (!model.PlayerAuctionItemInfoDic.ContainsKey(GUIID) && !model.FamilyAuctionItemDic.ContainsKey(GUIID)) get { return m_IsWarmUp; } set { DebugEx.LogError("未找到相应的拍品数据"); if (value != m_IsWarmUp) { m_IsWarmUp = value; AuctionItem auctionItem; if (model.TryGetMyAuctionItem(auctionItemGuid, out auctionItem)) { Display(auctionItem); } } } } float timer = 0f; public void GetMyAuctionGUID(string guid) { AuctionItem auctionItem; if (!model.TryGetMyAuctionItem(guid, out auctionItem)) { return; } m_MyAuction.SetActive(false); m_FamilyImage.SetActive(false); AuctionItem myAuction = new AuctionItem(); int type = 0;//0自身上架,1仙盟上架 if (model.PlayerAuctionItemInfoDic.ContainsKey(GUIID)) { type = 0; m_MyAuction.SetActive(true); myAuction = model.PlayerAuctionItemInfoDic[GUIID]; } if (model.FamilyAuctionItemDic.ContainsKey(GUIID)) { type = 1; m_FamilyImage.SetActive(true); myAuction = model.FamilyAuctionItemDic[GUIID]; } var auctionItem = AuctionItemConfig.Get(myAuction.itemId); MyAuction = myAuction; var itemConfig = ItemConfig.Get(myAuction.itemId); if (itemConfig == null) { DebugEx.LogError("物品表没有找到该物品,物品ID为" + myAuction.itemId); return; } if (auctionItem == null) { DebugEx.LogError("拍卖物品表没有找到该物品,物品ID为" + myAuction.itemId); return; } this.auctionItemGuid = guid; m_MyAuction.SetActive(auctionItem.familyId == 0); m_FamilyImage.SetActive(auctionItem.familyId != 0); var config = AuctionItemConfig.Get(auctionItem.itemId); var itemConfig = ItemConfig.Get(auctionItem.itemId); int income = 0; var jobBool = itemConfig.JobLimit == PlayerDatas.Instance.baseData.Job; AuctionItem = auctionItem; m_Income.text = 0.ToString(); DisplayState(); if (myAuction.biddingPrice != 0) if (auctionItem.biddingPrice != 0) { if (type == 0) if (auctionItem.familyId == 0) { int auctionTaxrate = Mathf.FloorToInt((float)(auctionHelpModel. AuctionTaxrate1 * myAuction.biddingPrice) / 100);//个人税收 int incomeNumber = myAuction.biddingPrice - auctionTaxrate; m_Income.text = incomeNumber.ToString(); AuctionTaxrate1 * auctionItem.biddingPrice) / 100);//个人税收 income = auctionItem.biddingPrice - auctionTaxrate; } else if (type == 1) else { int auctionTaxrate = Mathf.FloorToInt((float)(auctionHelpModel. AuctionTaxrate2 * myAuction.biddingPrice) / 100);//仙盟税收 int number = myAuction.biddingPrice - auctionTaxrate; AuctionTaxrate2 * auctionItem.biddingPrice) / 100);//仙盟税收 int number = auctionItem.biddingPrice - auctionTaxrate; int incomeMax = Mathf.CeilToInt((float)(number * auctionHelpModel.AuctionTaxrate3) / 100); int incomeNumber = Mathf.CeilToInt((float)number / myAuction.familyPlayers.Count); if (incomeMax >= incomeNumber) { m_Income.text = incomeNumber.ToString(); } else { m_Income.text = incomeMax.ToString(); } int incomeNumber = Mathf.CeilToInt((float)number / auctionItem.familyPlayers.Count); income = Mathf.Min(incomeMax, incomeNumber); } } m_Income.text = income.ToString(); ItemCellModel cellModel = new ItemCellModel(myAuction.itemId, true, (ulong)myAuction.itemCount); ItemCellModel cellModel = new ItemCellModel(auctionItem.itemId, true, (ulong)auctionItem.itemCount); m_ItemCell.Init(cellModel); m_ItemCell.button.SetListener(() => { ItemAttrData attrData = new ItemAttrData(myAuction.itemId, true, (ulong)1); ItemAttrData attrData = new ItemAttrData(auctionItem.itemId, true, (ulong)1); itemTipsModel.SetItemTipsModel(attrData); }); m_ItemName.text = itemConfig.ItemName; @@ -124,76 +112,38 @@ { m_EquipmentScoreObj.SetActive(false); } if (myAuction.biddingPrice != 0) { m_JadeNumber.text = myAuction.biddingPrice.ToString(); } else { m_JadeNumber.text = 0.ToString(); } m_JadeNumber.text = auctionItem.biddingPrice.ToString(); Display(auctionItem); DisplayTime(auctionItem); } private void LateUpdate() { if (AuctionItem != null && MyAuction != null) timer += Time.deltaTime; if (timer >= 0.5f) { var timeNow = TimeUtility.ServerNow; TimeSpan timeSpan = timeNow - MyAuction.putAwayTime; int minute = (int)timeSpan.TotalMinutes; DateTime overTime = MyAuction.putAwayTime.AddMinutes(AuctionItem.FamilySaleMinutes + AuctionItem.NoticeSaleMinutes); DateTime extensionTime = MyAuction.biddingTime.AddSeconds(auctionHelpModel.ExtensionTime); if (minute < AuctionItem.NoticeSaleMinutes)//预热中 timer = 0f; AuctionItem auctionItem; if (model.TryGetMyAuctionItem(auctionItemGuid, out auctionItem)) { int seconds = AuctionItem.NoticeSaleMinutes * 60 - (int)timeSpan.TotalSeconds; m_TimeText.text = Language.Get("PMH_03", TimeUtility.SecondsToHMS(seconds)); } else if (minute < (AuctionItem.FamilySaleMinutes + AuctionItem.NoticeSaleMinutes))//拍卖中 { int seconds = AuctionItem.FamilySaleMinutes * 60 - ((int)timeSpan.TotalSeconds - AuctionItem.NoticeSaleMinutes * 60); m_TimeText.text = Language.Get("PMH_04", TimeUtility.SecondsToHMS(seconds)); } if (overTime < extensionTime)//加时中 { var totalTick = auctionHelpModel.ExtensionTime * TimeSpan.TicksPerSecond; var realOverTime = overTime.AddTicks(totalTick); if (MyAuction.biddingTime >= overTime) { realOverTime = MyAuction.biddingTime.AddTicks(totalTick); } TimeSpan timeSpan2 = realOverTime - timeNow; int timeSeconds = (int)timeSpan2.TotalSeconds; m_TimeText.text = Language.Get("PMH_18", TimeUtility.SecondsToHMS(timeSeconds)); m_TimeText.color = UIHelper.GetUIColor(TextColType.Red, true); } if (auctionHelpModel.IsItemWarmUp(MyAuction) != cacheIsWarmUp) { DisplayState(); DisplayTime(auctionItem); isWarmUp = AuctionLogicUtil.IsAuctionItemWarmUp(auctionItem); } } } void DisplayState() void Display(AuctionItem auctionItem) { if (MyAuction != null) { cacheIsWarmUp = auctionHelpModel.IsItemWarmUp(MyAuction); if (cacheIsWarmUp) { m_BiddingText.text = Language.Get(MyAuction.auctionType == 0 ? "PMH_07" : "PMH_17"); } else if (MyAuction.biddingPrice != 0) { m_BiddingText.text = Language.Get("PMH_06"); } else { m_BiddingText.text = Language.Get("PMH_05"); } } m_BiddingText.text = AuctionLogicUtil.GetBiddingStateLabel(auctionItem); } 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); } } System/Auction/MyAuctionWin.cs
@@ -16,7 +16,9 @@ [SerializeField] ScrollerController m_ScrollerController; AuctionInquiryModel model { get { return ModelCenter.Instance.GetModel<AuctionInquiryModel>(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } } List<AuctionItem> PlayerAuctionItemList = new List<AuctionItem>(); List<string> myAuctionItems = new List<string>(); #region Built-in protected override void BindController() { @@ -59,91 +61,69 @@ { } #endregion private void ResetUpdate() { GetPlayerAuctionItemList(); ListSotr(); OnCreateGridLineCell(m_ScrollerController); } private void AuctionItemUpdate() { m_ScrollerController.m_Scorller.RefreshActiveCellViews();//刷新可见 } private void OnCreateGridLineCell(ScrollerController gridCtrl) { gridCtrl.Refresh(); for (int i = 0; i < PlayerAuctionItemList.Count; i++) for (int i = 0; i < myAuctionItems.Count; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell) { int index = cell.index; var ItemGUID = PlayerAuctionItemList[index].itemGuid; MyAuctionCell myAuctionCell = cell.GetComponent<MyAuctionCell>(); myAuctionCell.GetMyAuctionGUID(ItemGUID); myAuctionCell.GetMyAuctionGUID(myAuctionItems[index]); } private void GetPlayerAuctionItemList() { PlayerAuctionItemList.Clear(); foreach (var value in model.PlayerAuctionItemInfoDic.Values) { PlayerAuctionItemList.Add(value); } int playerID = (int)PlayerDatas.Instance.baseData.PlayerID; foreach (var value in model.FamilyAuctionItemDic.Values) { for (int i = 0; i < value.familyPlayers.Count; i++) { int familyPlayerID = value.familyPlayers[i]; if (familyPlayerID == playerID) { PlayerAuctionItemList.Add(value); } } } model.GetMyAuctionItems(ref myAuctionItems); } private void ListSotr() { PlayerAuctionItemList.Sort(Compare); myAuctionItems.Sort(Compare); } int Compare(AuctionItem x, AuctionItem y)//数组排列 int Compare(string x, string y)//数组排列 { bool havex = model.PlayerAuctionItemInfoDic.ContainsKey(x.itemGuid); bool havey = model.PlayerAuctionItemInfoDic.ContainsKey(y.itemGuid); ; if (havex.CompareTo(havey) != 0)//是否为全服拍品 AuctionItem lhs; AuctionItem rhs; if (model.TryGetMyAuctionItem(x, out lhs) && model.TryGetMyAuctionItem(y, out rhs)) { return -havex.CompareTo(havey); } bool havex1 = x.biddingPrice != 0; bool havey1 = y.biddingPrice != 0; if (havex1.CompareTo(havey1) != 0)//是否有收益 { return -havex1.CompareTo(havey1); } bool havex2 = model.FamilyAuctionItemDic.ContainsKey(x.itemGuid); bool havey2 = model.FamilyAuctionItemDic.ContainsKey(y.itemGuid); if (havex2.CompareTo(havey2) != 0)//是否为仙盟拍品 { return -havex2.CompareTo(havey2); } bool havex3 = x.biddingPrice != 0; bool havey3 = y.biddingPrice != 0; if (havex3.CompareTo(havey3) != 0)//是否有收益 { return -havex3.CompareTo(havey3); } var auctionConfigX = AuctionItemConfig.Get(x.itemId); var auctionConfigY = AuctionItemConfig.Get(y.itemId); if (auctionConfigX.Sortpriority.CompareTo(auctionConfigY.Sortpriority) != 0)//按照拍卖物品表排序 { return auctionConfigX.Sortpriority.CompareTo(auctionConfigY.Sortpriority); if (lhs.auctionType != rhs.auctionType) { return lhs.auctionType.CompareTo(rhs.auctionType); } var lhs_hasBidding = lhs.biddingPrice != 0; var rhs_hasBidding = rhs.biddingPrice != 0; if (lhs_hasBidding != rhs_hasBidding)//是否有收益 { return -lhs_hasBidding.CompareTo(rhs_hasBidding); } var lhs_Config = AuctionItemConfig.Get(lhs.itemId); var rhs_Config = AuctionItemConfig.Get(rhs.itemId); if (lhs_Config.Sortpriority != rhs_Config.Sortpriority)//按照拍卖物品表排序 { return lhs_Config.Sortpriority.CompareTo(rhs_Config.Sortpriority); } } return 1; }