| System/Auction/AuctionHelpModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/AuctionInquiry.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/AuctionInquiryModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/AuctionLogicUtil.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/AuctionLogicUtil.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/FamilyAuctioncell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/FullServiceAuctionWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/FullServiceAuctioncell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/MyAuctionCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Auction/MyFocusCell.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Realm/RealmPoolBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
System/Auction/AuctionHelpModel.cs
@@ -59,6 +59,8 @@ } public override void Init() { AuctionLogicUtil.Initialize(); var funconfig = FuncConfigConfig.Get("AuctionHouse"); MaxFocusCount = int.Parse(funconfig.Numerical5); ExtensionTime = int.Parse(funconfig.Numerical4); System/Auction/AuctionInquiry.cs
@@ -29,7 +29,7 @@ public string locationGuid = string.Empty; public int GetSendNumber()//获取当前拍卖列表的索引类型 public int GetInquiryIndex()//获取当前拍卖列表的索引类型 { var sendNumber = 0; var index = auctionHelpModel.SelectedGenreNow; @@ -52,6 +52,7 @@ // DebugEx.Log(sendNumber + "查询类型"); return sendNumber; } public void SendQueryAuction(string itemGUID, int indexId, int queryDir, int queryCount = 10)//拍卖行查询拍卖中的物品(物品GUID,查询方向,查询个数) { var auctionIndex = AuctionIndexConfig.Get(indexId); @@ -104,7 +105,7 @@ { auctionHelpModel.SelectedGenreNow = 0; } int indexId = GetSendNumber(); int indexId = GetInquiryIndex(); var auctionIndex = AuctionIndexConfig.Get(indexId); if (auctionIndex == null) { System/Auction/AuctionInquiryModel.cs
@@ -19,7 +19,7 @@ public int auctionType; //拍品类型,0-全服拍品,1-仙盟拍品 public DateTime putAwayTime; //上架时间 public DateTime latestBiddingTime; //最新竞价时间 public DateTime biddingTime; //最新竞价时间 public string customData; //自定义数据 @@ -120,6 +120,51 @@ } } public void ResetServerAuctionInquiry() { FullServiceAuctionList.Clear(); QueryRemaining.UpBool = true; QueryRemaining.DownBool = true; } public bool TryGetServerAuctionItem(string guid, out AuctionItem item) { if (TryGetMyBiddingAuctionItem(guid, out item)) { return true; } item = FullServiceAuctionList.Find((x) => { return x.itemGuid.Equals(guid); }); return item != null; } public bool TryGetMyBiddingAuctionItem(string guid, out AuctionItem item) { return BiddingItemInfoDic.TryGetValue(guid, out item); } public List<string> GetServerAuctionItems() { List<string> guids = new List<string>(); foreach (var item in FullServiceAuctionList) { guids.Add(item.itemGuid); } return guids; } public ICollection<string> GetMyBiddingAuctionItems() { return BiddingItemInfoDic.Keys; } public bool IsParticipateInBidding(string guid) { return BiddingItemInfoDic.ContainsKey(guid); } public void ReceivePackage(HB501_tagGCAuctionItemInfo info)// 拍卖行拍卖中的物品信息 { List<AuctionItem> fullServiceAuctionList = new List<AuctionItem>(); @@ -135,7 +180,7 @@ var str = UIHelper.ServerStringTrim(PlayerAuctionItem.BiddingTime); if (!str.Equals(string.Empty)) { playerAuctionItemClass.latestBiddingTime = DateTime.Parse(str); playerAuctionItemClass.biddingTime = DateTime.Parse(str); } playerAuctionItemClass.biddingPrice = PlayerAuctionItem.BidderPrice; playerAuctionItemClass.customData = PlayerAuctionItem.UserData; @@ -186,7 +231,7 @@ var str = UIHelper.ServerStringTrim(PlayerAuctionItem.BiddingTime); if (!str.Equals(string.Empty)) { playerAuctionItemClass.latestBiddingTime = DateTime.Parse(str); playerAuctionItemClass.biddingTime = DateTime.Parse(str); } playerAuctionItemClass.biddingPrice = PlayerAuctionItem.BidderPrice; playerAuctionItemClass.customData = PlayerAuctionItem.UserData; @@ -276,7 +321,7 @@ var str = UIHelper.ServerStringTrim(FamilyAuctionItem.BiddingTime); if (!str.Equals(string.Empty)) { familyAuctionItemClass.latestBiddingTime = DateTime.Parse(str); familyAuctionItemClass.biddingTime = DateTime.Parse(str); } familyAuctionItemClass.biddingPrice = FamilyAuctionItem.BidderPrice; familyAuctionItemClass.customData = FamilyAuctionItem.UserData; @@ -325,7 +370,7 @@ var str = UIHelper.ServerStringTrim(AttentionAuctionItem.BiddingTime); if (!str.Equals(string.Empty)) { playerAuctionItemClass.latestBiddingTime = DateTime.Parse(str); playerAuctionItemClass.biddingTime = DateTime.Parse(str); } playerAuctionItemClass.biddingPrice = AttentionAuctionItem.BidderPrice; playerAuctionItemClass.customData = AttentionAuctionItem.UserData; @@ -378,11 +423,11 @@ if (FamilyAuctionItem.auctionType == RefreshAuctionItem.AuctionType) { FamilyAuctionItem.putAwayTime = DateTime.Parse(RefreshAuctionItem.AddTime); FamilyAuctionItem.latestBiddingTime= DateTime.Parse(RefreshAuctionItem.BiddingTime); FamilyAuctionItem.biddingTime= DateTime.Parse(RefreshAuctionItem.BiddingTime); var str = UIHelper.ServerStringTrim(RefreshAuctionItem.BiddingTime); if (!str.Equals(string.Empty)) { FamilyAuctionItem.latestBiddingTime = DateTime.Parse(str); FamilyAuctionItem.biddingTime = DateTime.Parse(str); } FamilyAuctionItem.biddingPlayer = (int)RefreshAuctionItem.BidderID; FamilyAuctionItem.biddingPrice = (int)RefreshAuctionItem.BidderPrice; @@ -408,7 +453,7 @@ { var PlayerAuctionItemInfo = PlayerAuctionItemInfoDic[guid]; PlayerAuctionItemInfo.putAwayTime = DateTime.Parse(RefreshAuctionItem.AddTime); PlayerAuctionItemInfo.latestBiddingTime= DateTime.Parse(RefreshAuctionItem.BiddingTime); PlayerAuctionItemInfo.biddingTime= DateTime.Parse(RefreshAuctionItem.BiddingTime); PlayerAuctionItemInfo.biddingPlayer = (int)RefreshAuctionItem.BidderID; PlayerAuctionItemInfo.biddingPrice = (int)RefreshAuctionItem.BidderPrice; PlayerAuctionItemInfoDic[guid] = PlayerAuctionItemInfo; @@ -417,7 +462,7 @@ { var biddingItemInfo = BiddingItemInfoDic[guid]; biddingItemInfo.putAwayTime = DateTime.Parse(RefreshAuctionItem.AddTime); biddingItemInfo.latestBiddingTime= DateTime.Parse(RefreshAuctionItem.BiddingTime); biddingItemInfo.biddingTime= DateTime.Parse(RefreshAuctionItem.BiddingTime); biddingItemInfo.biddingPlayer = (int)RefreshAuctionItem.BidderID; biddingItemInfo.biddingPrice = (int)RefreshAuctionItem.BidderPrice; BiddingItemInfoDic[guid] = biddingItemInfo; @@ -426,7 +471,7 @@ { var attentionAuctionItem = AttentionAuctionItemDic[guid]; attentionAuctionItem.putAwayTime = DateTime.Parse(RefreshAuctionItem.AddTime); attentionAuctionItem.latestBiddingTime = DateTime.Parse(RefreshAuctionItem.BiddingTime); attentionAuctionItem.biddingTime = DateTime.Parse(RefreshAuctionItem.BiddingTime); attentionAuctionItem.biddingPlayer = (int)RefreshAuctionItem.BidderID; attentionAuctionItem.biddingPrice = (int)RefreshAuctionItem.BidderPrice; AttentionAuctionItemDic[guid] = attentionAuctionItem; @@ -494,7 +539,7 @@ var str = UIHelper.ServerStringTrim(BiddingItem.BiddingTime); if (!str.Equals(string.Empty)) { BiddingItemClass.latestBiddingTime = DateTime.Parse(str); BiddingItemClass.biddingTime = DateTime.Parse(str); } BiddingItemClass.biddingPrice = BiddingItem.BidderPrice;//竞拍玩家出价 BiddingItemClass.biddingPlayer = (int)BiddingItem.BidderID;//竞拍玩家ID,也就是当前最高竞价玩家ID System/Auction/AuctionLogicUtil.cs
New file @@ -0,0 +1,193 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Snxxz.UI { public static class AuctionLogicUtil { static int extraAuctionSecond = 0; static EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } } static public void Initialize() { var funcConfig = FuncConfigConfig.Get("AuctionHouse"); extraAuctionSecond = int.Parse(funcConfig.Numerical4); } static public string GetBiddingStateLabel(AuctionItem item) { if (item == null) { return string.Empty; } if (IsAuctionItemWarmUp(item)) { 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"); } else { return Language.Get("PMH_05"); } } static public string GetBiddingTimeLabel(AuctionItem item) { if (item == null) { return string.Empty; } var config = AuctionItemConfig.Get(item.itemId); if (IsAuctionItemWarmUp(item)) { var endTime = item.putAwayTime.AddTicks(TimeSpan.TicksPerMinute * config.NoticeSaleMinutes); var seconds = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds); return Language.Get("PMH_03", TimeUtility.SecondsToHMS(seconds)); } var extraEndTime = item.biddingTime.AddTicks(extraAuctionSecond * TimeSpan.TicksPerSecond); var normalTotalMinutes = config.NoticeSaleMinutes + item.auctionType == 0 ? config.WorldSaleMinutes : config.FamilySaleMinutes; var normalEndTime = item.putAwayTime.AddTicks(normalTotalMinutes * TimeSpan.TicksPerMinute); var isExtraTime = extraEndTime > normalEndTime; if (isExtraTime) { var endTime = item.biddingTime >= normalEndTime ? extraEndTime : normalEndTime.AddTicks(extraAuctionSecond * TimeSpan.TicksPerSecond); var seconds = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds); return Language.Get("PMH_18", TimeUtility.SecondsToHMS(seconds)); } else { var seconds = Mathf.CeilToInt((float)(normalEndTime - TimeUtility.ServerNow).TotalSeconds); return Language.Get("PMH_04", TimeUtility.SecondsToHMS(seconds)); } } static public int GetBiddingRequireMoney(AuctionItem item) { if (item == null) { return 0; } var config = AuctionItemConfig.Get(item.itemId); if (item.biddingPrice == 0) { return config.BasePrice * item.itemCount; } else { return item.biddingPrice + config.BiddingAdd * item.itemCount; } } static public bool IsAuctionItemWarmUp(AuctionItem item) { if (item == null) { return false; } var config = AuctionItemConfig.Get(item.itemId); if (config == null) { return false; } var ts = TimeUtility.ServerNow - item.putAwayTime; return ts.TotalMinutes < config.NoticeSaleMinutes; } static public bool IsAuctionItemExtraTime(AuctionItem item) { if (item == null) { return false; } var config = AuctionItemConfig.Get(item.itemId); var extraEndTime = item.biddingTime.AddTicks(extraAuctionSecond * TimeSpan.TicksPerSecond); var normalTotalMinutes = config.NoticeSaleMinutes + item.auctionType == 0 ? config.WorldSaleMinutes : config.FamilySaleMinutes; var normalEndTime = item.putAwayTime.AddTicks(normalTotalMinutes * TimeSpan.TicksPerMinute); return extraEndTime > normalEndTime; } static public bool IsBiddingUpperLimit(AuctionItem item) { if (item == null) { return false; } var config = AuctionItemConfig.Get(item.itemId); if (config.BuyoutPrice == 0) { return false; } var requireMoney = GetBiddingRequireMoney(item); return requireMoney >= config.BuyoutPrice * item.itemCount; } static public bool IsMyTopPrice(AuctionItem item) { if (item == null) { return false; } return item.biddingPlayer == PlayerDatas.Instance.baseData.PlayerID; } static public bool IsSatisfyEquipBetterEquip(AuctionItem item) { if (item == null) { return false; } var itemConfig = ItemConfig.Get(item.itemId); var isMyJobItem = itemConfig.JobLimit == PlayerDatas.Instance.baseData.Job; var equiped = !equipModel.GetEquip(new Int2(itemConfig.LV, itemConfig.EquipPlace)).Equals(string.Empty); var equipSet = equipModel.GetEquipSet(itemConfig.LV); var equipPositionUnlock = equipSet.IsSlotUnLocked(itemConfig.EquipPlace); return isMyJobItem && equipPositionUnlock && !equiped; } static public void SendBiddingItem(AuctionItem item, bool immediatly) { if (item == null) { return; } var config = AuctionItemConfig.Get(item.itemId); var cost = immediatly ? config.BuyoutPrice * item.itemCount : GetBiddingRequireMoney(item); var label = Language.Get(immediatly ? "PMH_02" : "PMH_01", cost); ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), label, (bool isOk) => { if (isOk) { var money = PlayerDatas.Instance.baseData.diamond; if (money >= cost) { AuctionInquiry.Instance.SendSellAuctionItem(item.itemGuid, cost); } else { WindowCenter.Instance.Open<RechargeTipWin>(); } } }); } } } System/Auction/AuctionLogicUtil.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 5d71aa1e756e40842ba4cd4f0d8f4314 timeCreated: 1553857994 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: System/Auction/FamilyAuctioncell.cs
@@ -180,7 +180,7 @@ int minute = (int)timeSpan.TotalMinutes; DateTime overTime = FamilyAuctionItem.putAwayTime.AddMinutes(AuctionItem.FamilySaleMinutes + AuctionItem.NoticeSaleMinutes); DateTime extensionTime = FamilyAuctionItem.latestBiddingTime.AddSeconds(auctionHelpModel.ExtensionTime); DateTime extensionTime = FamilyAuctionItem.biddingTime.AddSeconds(auctionHelpModel.ExtensionTime); if (minute < AuctionItem.NoticeSaleMinutes)//预热中 { if (m_PriceButton.interactable) @@ -208,9 +208,9 @@ var totalTick = auctionHelpModel.ExtensionTime * TimeSpan.TicksPerSecond; var realOverTime = overTime.AddTicks(totalTick); if (FamilyAuctionItem.latestBiddingTime >= overTime) if (FamilyAuctionItem.biddingTime >= overTime) { realOverTime = FamilyAuctionItem.latestBiddingTime.AddTicks(totalTick); realOverTime = FamilyAuctionItem.biddingTime.AddTicks(totalTick); } TimeSpan timeSpan2 = realOverTime - timeNow; int timeSeconds = (int)timeSpan2.TotalSeconds; System/Auction/FullServiceAuctionWin.cs
@@ -26,7 +26,8 @@ [SerializeField] Button m_TypeTipBtn; [SerializeField] Text m_JobTipText; [SerializeField] Text m_TypeTipText; List<AuctionItem> FullServiceAuctionListSort = new List<AuctionItem>();//全服拍品列表 List<string> m_ServerAuctionItems = new List<string>();//全服拍品列表 AuctionInquiryModel model { get { return ModelCenter.Instance.GetModel<AuctionInquiryModel>(); } } AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } } @@ -57,13 +58,14 @@ model.RefreshAuctionItemUpdate += RefreshAuctionItemUpdate;//刷新 model.ClearAuctionUpdate += ClearAuctionUpdate;//清除 model.BiddingItemInfoUpdate += BiddingItemInfoUpdate;//竞价物品信息刷新 Reset(); ResetServerAuctionInquiry(); CloseTip(); ListSort(); OnCreateGridLineCell(m_ScrollerController); OnCreateGridLineCellJob(m_ScrollerControllerJob); OnCreateGridLineCellType(m_ScrollerControllerType); OnCreateGridLineCellItem(m_ScrollerControllerItem); SetTipText(); } @@ -97,7 +99,7 @@ if (IsSendBool) { IsSendBool = false; Reset(); ResetServerAuctionInquiry(); } } private void FullServiceAuctionUpdate() @@ -264,16 +266,16 @@ private void OnCreateGridLineCellItem(ScrollerController gridCtrl) { ListSort(); PushMyBiddingItems(); if (!model.LocationQuery) { for (int i = 0; i < model.FullServiceAuctionList.Count; i++) List<string> guids = model.GetServerAuctionItems(); foreach (var guid in guids) { var FullServiceAuction = model.FullServiceAuctionList[i]; var index = FullServiceAuctionListSort.FindIndex((x) => { return x.itemGuid == FullServiceAuction.itemGuid; }); if (index == -1) if (!m_ServerAuctionItems.Contains(guid)) { FullServiceAuctionListSort.Add(FullServiceAuction); m_ServerAuctionItems.Add(guid); } } } @@ -282,14 +284,8 @@ model.LocationQuery = false; } gridCtrl.Refresh(); for (int i = 0; i < FullServiceAuctionListSort.Count; i++) for (int i = 0; i < m_ServerAuctionItems.Count; i++) { var GUID = FullServiceAuctionListSort[i].itemGuid; var indexList = model.FullServiceAuctionList.FindIndex((x) => { return x.itemGuid == GUID; }); if (indexList == -1 && !model.BiddingItemInfoDic.ContainsKey(GUID))//未查找到相应的列表数据(防范) { continue; } gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); @@ -298,22 +294,19 @@ { int index = cell.index; FullServiceAuctioncell fullServiceAuctioncell = cell.GetComponent<FullServiceAuctioncell>(); AuctionItem auctionItemClass = FullServiceAuctionListSort[index]; fullServiceAuctioncell.GetFullServiceAuctionGUID(auctionItemClass.itemGuid, index); fullServiceAuctioncell.GetFullServiceAuctionGUID(m_ServerAuctionItems[index], index); } private void Reset()//重置查询 private void ResetServerAuctionInquiry()//重置查询 { model.FullServiceAuctionList.Clear(); model.QueryRemaining.UpBool = true; model.QueryRemaining.DownBool = true; var sendNumber = AuctionInquiry.Instance.GetSendNumber(); model.ResetServerAuctionInquiry(); var sendNumber = AuctionInquiry.Instance.GetInquiryIndex(); if (sendNumber != 0) { AuctionInquiry.Instance.SendQueryAuction(string.Empty, sendNumber, 1); } } private void CloseTip() { m_JobTip.SetActive(false); @@ -338,69 +331,53 @@ } } private void ListSort() private void PushMyBiddingItems() { FullServiceAuctionListSort.Clear(); var sendNumber = AuctionInquiry.Instance.GetSendNumber(); foreach (var vlaue in model.BiddingItemInfoDic.Values) { int num = 0; if (sendNumber != 0) { var auctionItem = AuctionItemConfig.Get(vlaue.itemId); num = sendNumber / 1000; num -= 1; if (model.FamilyAuctionItemDic.ContainsKey(vlaue.itemGuid) && model.FamilyAuctionItemDic[vlaue.itemGuid].auctionType != 0)//如果存在仙盟拍品且不是全服拍品过滤掉 { continue; } bool isBool = (num == 0 || num == auctionItem.ItemType); if (isBool) { FullServiceAuctionListSort.Add(vlaue); } m_ServerAuctionItems.Clear(); var index = AuctionInquiry.Instance.GetInquiryIndex(); if (index == 0) { return; } var myBiddingItems = model.GetMyBiddingAuctionItems(); foreach (var guid in myBiddingItems) { AuctionItem item; if (!model.TryGetMyBiddingAuctionItem(guid, out item) || item.auctionType != 0) { continue; } var config = AuctionItemConfig.Get(item.itemId); var itemType = index / 1000; itemType -= 1; if (itemType == 0 || itemType == config.ItemType) { m_ServerAuctionItems.Add(guid); } } FullServiceAuctionListSort.Sort(Compare); } int Compare(AuctionItem x, AuctionItem y)//数组排列 { bool havex = IsHighestPrice(x.itemGuid); bool havey = IsHighestPrice(y.itemGuid); if (havex.CompareTo(havey) != 0)//是否最高价 { return -havex.CompareTo(havey); } bool havex1 = IsParticipate(x.itemGuid); bool havey1 = IsParticipate(y.itemGuid); if (havex1.CompareTo(havey1) != 0)//是否参与 { return -havex1.CompareTo(havey1); } return 1; } private bool IsHighestPrice(string GUID) { bool isBool = false; int playerId = (int)PlayerDatas.Instance.baseData.PlayerID; if (model.BiddingItemInfoDic.ContainsKey(GUID)) { var biddingItemInfo = model.BiddingItemInfoDic[GUID]; isBool = biddingItemInfo.biddingPlayer == playerId; } return isBool; m_ServerAuctionItems.Sort(MyBiddingItemCompare); } private bool IsParticipate(string GUID) int MyBiddingItemCompare(string x, string y)//数组排列 { bool isBool = false; if (model.BiddingItemInfoDic.ContainsKey(GUID)) AuctionItem lhs; AuctionItem rhs; if (model.TryGetMyBiddingAuctionItem(x, out lhs) && model.TryGetMyBiddingAuctionItem(y, out rhs)) { isBool = true; var lhs_myTopPrice = AuctionLogicUtil.IsMyTopPrice(lhs); var rhs_myTopPrice = AuctionLogicUtil.IsMyTopPrice(rhs); if (lhs_myTopPrice != rhs_myTopPrice) { return -lhs_myTopPrice.CompareTo(rhs_myTopPrice); } } return isBool; return 1; } } System/Auction/FullServiceAuctioncell.cs
@@ -28,284 +28,165 @@ [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; 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 FullServiceAuction; bool cacheIsWarmUp = false; string auctionItemGuid; public void GetFullServiceAuctionGUID(string GUID, int index) bool m_IsWarmUp = false; bool isWarmUp { get { return m_IsWarmUp; } set { if (value != m_IsWarmUp) { m_IsWarmUp = value; AuctionItem auctionItem; if (model.TryGetServerAuctionItem(auctionItemGuid, out auctionItem)) { Display(auctionItem); } } } } float timer = 0f; public void GetFullServiceAuctionGUID(string guid, int index) { m_NeedImage.SetActive(false); m_ParticipateImage.SetActive(false); m_HighestPriceImage.SetActive(false); m_EquipmentScoreObj.SetActive(false); var indexList = model.FullServiceAuctionList.FindIndex((x) => { return x.itemGuid == GUID; }); if (indexList == -1 && !model.BiddingItemInfoDic.ContainsKey(GUID)) AuctionItem auctionItem; if (!model.TryGetServerAuctionItem(guid, out auctionItem)) { DebugEx.Log("未查找到相应的列表数据"); return; } AuctionItem fullServiceAuction = new AuctionItem(); if (indexList != -1) { fullServiceAuction = model.FullServiceAuctionList[indexList]; } else if (model.BiddingItemInfoDic.ContainsKey(GUID)) { fullServiceAuction = model.BiddingItemInfoDic[GUID]; } this.auctionItemGuid = guid; #region 滚动查询 var inquiryIndex = AuctionInquiry.Instance.GetInquiryIndex(); if (index < 5) { var sendNumber = AuctionInquiry.Instance.GetSendNumber(); if (sendNumber != 0 && auctionHelpModel.Wait && model.QueryRemaining.UpBool && !auctionHelpModel.isOpenPanel) if (inquiryIndex != 0 && auctionHelpModel.Wait && model.QueryRemaining.UpBool && !auctionHelpModel.isOpenPanel) { AuctionInquiry.Instance.SendQueryAuction(fullServiceAuction.itemGuid, sendNumber, 2); AuctionInquiry.Instance.SendQueryAuction(auctionItem.itemGuid, inquiryIndex, 2); auctionHelpModel.Wait = false; } } else if (index >= model.FullServiceAuctionList.Count - 3) { var sendNumber = AuctionInquiry.Instance.GetSendNumber(); if (sendNumber != 0 && auctionHelpModel.Wait && model.QueryRemaining.DownBool && !auctionHelpModel.isOpenPanel) if (inquiryIndex != 0 && auctionHelpModel.Wait && model.QueryRemaining.DownBool && !auctionHelpModel.isOpenPanel) { AuctionInquiry.Instance.SendQueryAuction(fullServiceAuction.itemGuid, sendNumber, 1); AuctionInquiry.Instance.SendQueryAuction(auctionItem.itemGuid, inquiryIndex, 1); auctionHelpModel.Wait = false; } } FullServiceAuction = fullServiceAuction; #endregion var playerId = PlayerDatas.Instance.baseData.PlayerID; var auctionItem = AuctionItemConfig.Get(fullServiceAuction.itemId); var itemConfig = ItemConfig.Get(fullServiceAuction.itemId); if (itemConfig == null) { DebugEx.LogError("物品表没有找到该物品,物品ID为" + fullServiceAuction.itemId); return; } if (auctionItem == null) { DebugEx.LogError("拍卖物品表没有找到该物品,物品ID为" + fullServiceAuction.itemId); return; } AuctionItem = auctionItem; var jobBool = itemConfig.JobLimit == PlayerDatas.Instance.baseData.Job; var equipNeedBool = auctionHelpModel.WhetherEquipped(itemConfig.LV, itemConfig.EquipPlace); if (!equipNeedBool && jobBool) { m_NeedImage.SetActive(true); } if (model.BiddingItemInfoDic.ContainsKey(fullServiceAuction.itemGuid))//参与了竞价的物品 { var biddingItemInfo = model.BiddingItemInfoDic[fullServiceAuction.itemGuid]; m_ParticipateImage.SetActive(true); if (biddingItemInfo.biddingPlayer == playerId)//判断是否最高竞价 { m_HighestPriceImage.SetActive(true); } m_NeedImage.gameObject.SetActive(AuctionLogicUtil.IsSatisfyEquipBetterEquip(auctionItem)); if (model.IsParticipateInBidding(guid))//参与了竞价的物品 { m_HighestPriceImage.gameObject.SetActive(AuctionLogicUtil.IsMyTopPrice(auctionItem)); } DisplayState(); ItemCellModel cellModel = new ItemCellModel(fullServiceAuction.itemId, true, (ulong)fullServiceAuction.itemCount); ItemCellModel cellModel = new ItemCellModel(auctionItem.itemId, true, (ulong)auctionItem.itemCount); m_ItemCell.Init(cellModel); m_ItemCell.button.SetListener(() => { ItemAttrData attrData = new ItemAttrData(fullServiceAuction.itemId, true, (ulong)1); ItemAttrData attrData = new ItemAttrData(auctionItem.itemId, true, (ulong)1); itemTipsModel.SetItemTipsModel(attrData); }); var itemConfig = ItemConfig.Get(auctionItem.itemId); m_ItemName.text = itemConfig.ItemName; if (itemConfig.EquipPlace != 0) { m_EquipmentScoreObj.SetActive(true); m_Score.text = cellModel.score.ToString(); var isMyJobItem = itemConfig.JobLimit == 0 || itemConfig.JobLimit == PlayerDatas.Instance.baseData.Job; var equipScore = auctionHelpModel.GetEquipScore(itemConfig.LV, itemConfig.EquipPlace); m_StateIcon.SetActive(cellModel.score > equipScore && jobBool); m_DeclineIcon.SetActive(equipScore > cellModel.score && jobBool); m_StateIcon.SetActive(cellModel.score > equipScore && isMyJobItem); m_DeclineIcon.SetActive(equipScore > cellModel.score && isMyJobItem); } else { m_EquipmentScoreObj.SetActive(false); } int needJade = 0; int priceMax = 0; priceMax = auctionItem.BuyoutPrice * fullServiceAuction.itemCount; if (fullServiceAuction.biddingPrice == 0) int requireMoney = AuctionLogicUtil.GetBiddingRequireMoney(auctionItem); var config = AuctionItemConfig.Get(auctionItem.itemId); var topPrice = config.BuyoutPrice * auctionItem.itemCount; if (config.BuyoutPrice != 0 && requireMoney > topPrice)//竞价价格永远不能大于最高价 { needJade = auctionItem.BasePrice * fullServiceAuction.itemCount; requireMoney = topPrice; } else { needJade = fullServiceAuction.biddingPrice + auctionItem.BiddingAdd * fullServiceAuction.itemCount; } if (auctionItem.BuyoutPrice != 0 && needJade > priceMax)//竞价价格永远不能大于最高价 { needJade = priceMax; } m_JadeNumber.text = fullServiceAuction.biddingPrice.ToString(); m_JadeNumber1.text = priceMax.ToString(); if (auctionItem.BuyoutPrice == 0) { m_PriceButton.gameObject.SetActive(false); } else { m_PriceButton.gameObject.SetActive(true); } m_JadeNumber.text = auctionItem.biddingPrice.ToString(); m_JadeNumber1.text = topPrice.ToString(); m_PriceButton.gameObject.SetActive(config.BuyoutPrice != 0); m_PriceButton.SetListener(() => //一口价 { int jade = (int)PlayerDatas.Instance.baseData.diamond; string str = Language.Get("PMH_02", priceMax); ConfirmCancel.ShowPopConfirm(Language.Get("L1003"), str, (bool isOk) => { if (isOk) { if (jade >= priceMax) { AuctionInquiry.Instance.SendSellAuctionItem(fullServiceAuction.itemGuid, priceMax); } else { WindowCenter.Instance.Open<RechargeTipWin>(); } } }); AuctionLogicUtil.SendBiddingItem(auctionItem, true); }); m_JadeNumber2.text = needJade.ToString(); m_JadeNumber2.text = requireMoney.ToString(); m_BiddingButton.SetListener(() => //竞价 { int jade = (int)PlayerDatas.Instance.baseData.diamond; string str = Language.Get("PMH_01", needJade); ConfirmCancel.ShowPopConfirm(Language.Get("L1003"), str, (bool isOk) => { if (isOk) { if (jade >= needJade) { AuctionInquiry.Instance.SendSellAuctionItem(fullServiceAuction.itemGuid, needJade); } else { WindowCenter.Instance.Open<RechargeTipWin>(); } } }); AuctionLogicUtil.SendBiddingItem(auctionItem, false); }); } void DisplayState() { if (FullServiceAuction != null) { cacheIsWarmUp = auctionHelpModel.IsItemWarmUp(FullServiceAuction); if (cacheIsWarmUp) { m_BiddingText.text = Language.Get("PMH_07"); } else if (FullServiceAuction.biddingPrice != 0) { m_BiddingText.text = Language.Get("PMH_06"); } else { m_BiddingText.text = Language.Get("PMH_05"); } } Display(auctionItem); DisplayTime(auctionItem); } private void LateUpdate() { if (AuctionItem != null && FullServiceAuction != null) timer += Time.deltaTime; if (timer >= 0.5f) { var timeNow = TimeUtility.ServerNow; TimeSpan timeSpan = timeNow - FullServiceAuction.putAwayTime; int minute = (int)timeSpan.TotalMinutes; DateTime overTime = FullServiceAuction.putAwayTime.AddMinutes(AuctionItem.FamilySaleMinutes + AuctionItem.NoticeSaleMinutes); DateTime extensionTime = FullServiceAuction.latestBiddingTime.AddSeconds(auctionHelpModel.ExtensionTime); m_TimeText.color = UIHelper.GetUIColor(TextColType.Green, true); if (minute < AuctionItem.NoticeSaleMinutes)//预热中 timer = 0f; AuctionItem auctionItem; if (model.TryGetServerAuctionItem(auctionItemGuid, out auctionItem)) { if (m_PriceButton.interactable) { m_PriceButton.interactable = false; m_PriceImage.gray = true; } if (m_BiddingButton.interactable) { m_BiddingButton.interactable = false; m_BiddingImage.gray = true; } int seconds = AuctionItem.NoticeSaleMinutes * 60 - (int)timeSpan.TotalSeconds; m_TimeText.text = Language.Get("PMH_03", TimeUtility.SecondsToHMS(seconds)); } else if (minute < (AuctionItem.WorldSaleMinutes + AuctionItem.NoticeSaleMinutes))//拍卖中 { SetButtonStatus(); int seconds = AuctionItem.WorldSaleMinutes * 60 - ((int)timeSpan.TotalSeconds - AuctionItem.NoticeSaleMinutes * 60); m_TimeText.text = Language.Get("PMH_04", TimeUtility.SecondsToHMS(seconds)); } if (overTime < extensionTime)//加时中 { SetButtonStatus(); var totalTick = auctionHelpModel.ExtensionTime * TimeSpan.TicksPerSecond; var realOverTime = overTime.AddTicks(totalTick); if (FullServiceAuction.latestBiddingTime >= overTime) { realOverTime = FullServiceAuction.latestBiddingTime.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(FullServiceAuction) != cacheIsWarmUp) { DisplayState(); DisplayTime(auctionItem); isWarmUp = AuctionLogicUtil.IsAuctionItemWarmUp(auctionItem); } } } private void SetButtonStatus() void Display(AuctionItem auctionItem) { var maxMoney = AuctionItem.BuyoutPrice * FullServiceAuction.itemCount; var needMoney = 0; if (FullServiceAuction.biddingPrice == 0) { needMoney = AuctionItem.BasePrice * FullServiceAuction.itemCount; } else { needMoney = FullServiceAuction.biddingPrice + AuctionItem.BiddingAdd * FullServiceAuction.itemCount; } if (!m_PriceButton.interactable || m_PriceImage.gray) { m_PriceButton.interactable = true; m_PriceImage.gray = false; } if ((!m_BiddingButton.interactable || m_BiddingImage.gray) && maxMoney > needMoney) { m_BiddingButton.interactable = true; m_BiddingImage.gray = false; } if (m_BiddingButton.interactable && needMoney >= maxMoney && AuctionItem.BuyoutPrice != 0) { m_BiddingButton.interactable = false; m_BiddingImage.gray = true; } 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); } void DisplayTime(AuctionItem auctionItem) { m_TimeText.text = AuctionLogicUtil.GetBiddingTimeLabel(auctionItem); } } System/Auction/MyAuctionCell.cs
@@ -144,7 +144,7 @@ int minute = (int)timeSpan.TotalMinutes; DateTime overTime = MyAuction.putAwayTime.AddMinutes(AuctionItem.FamilySaleMinutes + AuctionItem.NoticeSaleMinutes); DateTime extensionTime = MyAuction.latestBiddingTime.AddSeconds(auctionHelpModel.ExtensionTime); DateTime extensionTime = MyAuction.biddingTime.AddSeconds(auctionHelpModel.ExtensionTime); if (minute < AuctionItem.NoticeSaleMinutes)//预热中 { int seconds = AuctionItem.NoticeSaleMinutes * 60 - (int)timeSpan.TotalSeconds; @@ -159,9 +159,9 @@ { var totalTick = auctionHelpModel.ExtensionTime * TimeSpan.TicksPerSecond; var realOverTime = overTime.AddTicks(totalTick); if (MyAuction.latestBiddingTime >= overTime) if (MyAuction.biddingTime >= overTime) { realOverTime = MyAuction.latestBiddingTime.AddTicks(totalTick); realOverTime = MyAuction.biddingTime.AddTicks(totalTick); } TimeSpan timeSpan2 = realOverTime - timeNow; int timeSeconds = (int)timeSpan2.TotalSeconds; System/Auction/MyFocusCell.cs
@@ -199,7 +199,7 @@ int minute = (int)timeSpan.TotalMinutes; DateTime overTime = MyFocusItem.putAwayTime.AddMinutes(AuctionItem.FamilySaleMinutes + AuctionItem.NoticeSaleMinutes); DateTime extensionTime = MyFocusItem.latestBiddingTime.AddSeconds(auctionHelpModel.ExtensionTime); DateTime extensionTime = MyFocusItem.biddingTime.AddSeconds(auctionHelpModel.ExtensionTime); if (minute < AuctionItem.NoticeSaleMinutes)//预热中 { if (m_PriceButton.interactable) @@ -227,9 +227,9 @@ var totalTick = auctionHelpModel.ExtensionTime * TimeSpan.TicksPerSecond; var realOverTime = overTime.AddTicks(totalTick); if (MyFocusItem.latestBiddingTime >= overTime) if (MyFocusItem.biddingTime >= overTime) { realOverTime = MyFocusItem.latestBiddingTime.AddTicks(totalTick); realOverTime = MyFocusItem.biddingTime.AddTicks(totalTick); } TimeSpan timeSpan2 = realOverTime - timeNow; int timeSeconds = (int)timeSpan2.TotalSeconds; @@ -246,22 +246,7 @@ void DisplayState() { if (MyFocusItem != null) { cacheIsWarmUp = auctionHelpModel.IsItemWarmUp(MyFocusItem); if (cacheIsWarmUp) { m_BiddingText.text = Language.Get(MyFocusItem.auctionType == 0 ? "PMH_07" : "PMH_17"); } else if (MyFocusItem.biddingPrice != 0) { m_BiddingText.text = Language.Get("PMH_06"); } else { m_BiddingText.text = Language.Get("PMH_05"); } } m_BiddingText.text = AuctionLogicUtil.GetBiddingStateLabel(MyFocusItem); } private void SetButtonStatus() System/Realm/RealmPoolBehaviour.cs
@@ -56,8 +56,7 @@ { var config = RealmConfig.Get(realmLevel); var progress = Mathf.Clamp01((float)model.totalExp / config.expLimit); var progressInt = (int)(progress * 100); m_Progress.text = StringUtility.Contact(progressInt, "%"); m_Progress.text = StringUtility.Contact(progress.ToString("0.#"), "%"); DisplayWave(); DisplayEffect(); }