少年修仙传客户端代码仓库
client_linchunjie
2019-03-30 38635aaa15d71ac8461a6582e1671ef2d1d7f791
3335 拍卖行修改
7个文件已修改
337 ■■■■ 已修改文件
System/Auction/AuctionInquiryModel.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/AuctionLogicUtil.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctionWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FamilyAuctioncell.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/FullServiceAuctioncell.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyAuctionCell.cs 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Auction/MyAuctionWin.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | 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;
        }