少年修仙传客户端代码仓库
client_Hale
2019-03-30 04f02561c712748a2447638ad84814bb1af2172d
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
2个文件已添加
9个文件已修改
747 ■■■■■ 已修改文件
System/Auction/AuctionHelpModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionInquiry.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionInquiryModel.cs 67 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionLogicUtil.cs 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionLogicUtil.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctioncell.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FullServiceAuctionWin.cs 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FullServiceAuctioncell.cs 295 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyAuctionCell.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyFocusCell.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Realm/RealmPoolBehaviour.cs 3 ●●●● 补丁 | 查看 | 原始文档 | 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();
        }