From 5a1508b5110caedd3af6f4badbe0d45e084a87c1 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期一, 01 四月 2019 17:35:49 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Auction/AuctionModel.cs |  195 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 125 insertions(+), 70 deletions(-)

diff --git a/System/Auction/AuctionModel.cs b/System/Auction/AuctionModel.cs
index e5a611d..de62fc7 100644
--- a/System/Auction/AuctionModel.cs
+++ b/System/Auction/AuctionModel.cs
@@ -10,13 +10,6 @@
 
 namespace Snxxz.UI
 {
-    public class AddAuctionItemInfoClass
-    {
-        public string ItemGUID;//鐗╁搧GUID
-        public int ItemID;//鐗╁搧ID
-        public bool Bool;
-    }
-
     public class QueryRemainingClass
     {
         public bool UpBool;
@@ -33,10 +26,9 @@
         List<string> m_MyBiddingItemGuids = new List<string>();//鎷嶅崠琛岀帺瀹剁珵浠蜂腑鐨勭墿鍝佷俊鎭� 
         List<string> m_MyFocusAuctionItemGuids = new List<string>();//鎷嶅崠琛屽叧娉ㄤ腑鐨勬媿鍝佽鎯�
         List<string> m_AuctionRecords = new List<string>();//鎷嶅崠琛岀帺瀹舵媿鍗栬褰�
+        List<FocusAuctionItem> m_FocusItems = new List<FocusAuctionItem>();//鍏虫敞鐨勬媿鍝佺殑涓婃灦鎻愰啋锛堝脊妗嗘樉绀猴級
 
         List<int> m_MyFocusItemIds = new List<int>();//鍏虫敞鐨勭墿鍝両D
-
-        public Dictionary<int, AddAuctionItemInfoClass> AddAuctionItemInfoDic = new Dictionary<int, AddAuctionItemInfoClass>();//鍏虫敞鐨勬媿鍝佺殑涓婃灦鎻愰啋锛堝脊妗嗘樉绀猴級
 
         public QueryRemainingClass QueryRemaining = new QueryRemainingClass();
 
@@ -45,6 +37,7 @@
 
         public bool isLocationQuery { get; set; }
         public string locationGuid { get; set; }
+        public bool isServerPrepare { get; private set; }
 
         public event Action myAuctionRefresh;
         public event Action serverAuctionRefresh;//鍏ㄦ湇鎷嶅搧鏁版嵁璇锋眰
@@ -55,8 +48,7 @@
         public event Action myFocusAuctionRefresh;//鎷嶅崠琛屽叧娉ㄤ腑鐨勬媿鍝佷俊鎭彉鏇达紙淇℃伅姣忔閲嶇疆锛�
         public event Action auctionItemRefresh;//鎷嶅崠琛屾暟鎹埛鏂�(浠呯敤浜庢暟鎹埛鏂�)
         public event Action onAuctionRemove;//鎷嶅崠琛岀墿鍝佹竻闄�
-        public event Action onFairyAuctionRemove;//娓呴櫎浠欑洘鐗╁搧
-        public event Action AddAuctionItemInfoUpdate;
+        public event Action onFocusAuctionRefresh;
 
         AuctionHelpModel auctionHelpModel { get { return ModelCenter.Instance.GetModel<AuctionHelpModel>(); } }
 
@@ -69,20 +61,24 @@
         public void OnBeforePlayerDataInitialize()
         {
             isLocationQuery = false;
+            isServerPrepare = false;
+
             m_MyAuctionItemGuids.Clear();
             m_FairyAuctionItemGuids.Clear();
             m_AuctionRecords.Clear();
-            AddAuctionItemInfoDic.Clear();
             m_MyBiddingItemGuids.Clear();
             m_MyFocusAuctionItemGuids.Clear();
             m_MyFocusItemIds.Clear();
+
             PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine;
         }
 
         public void OnPlayerLoginOk()
         {
-            RefreshRedpoint();
             PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;
+
+            isServerPrepare = true;
+            RefreshRedpoint();
         }
 
 
@@ -106,6 +102,7 @@
             {
                 m_ServerAuctionItemGuids.Clear();
                 m_AuctionItems.Clear();
+                m_FocusItems.Clear();
             }
         }
 
@@ -114,9 +111,9 @@
             if (PlayerDatas.Instance.baseData.FamilyId == 0)
             {
                 m_FairyAuctionItemGuids.Clear();
-                if (onFairyAuctionRemove != null)
+                if (fairyAuctionRefresh != null)
                 {
-                    onFairyAuctionRemove();
+                    fairyAuctionRefresh();
                 }
             }
         }
@@ -225,6 +222,17 @@
             return false;
         }
 
+        public bool TryGetFocusAuctionPop(out FocusAuctionItem item)
+        {
+            item = default(FocusAuctionItem);
+            if (m_FocusItems.Count > 0)
+            {
+                item = m_FocusItems[0];
+                return true;
+            }
+            return false;
+        }
+
         public List<string> GetServerAuctionItems()
         {
             List<string> guids = new List<string>();
@@ -325,6 +333,14 @@
             return m_MyFocusItemIds.Contains(id);
         }
 
+        public void RemoveFocusItemPop()
+        {
+            if (m_FocusItems.Count > 0)
+            {
+                m_FocusItems.RemoveAt(0);
+            }
+        }
+
         public void ReceivePackage(HB501_tagGCAuctionItemInfo package)// 鎷嶅崠琛屾媿鍗栦腑鐨勭墿鍝佷俊鎭�
         {
             List<string> fullServiceAuctionList = new List<string>();
@@ -343,11 +359,8 @@
                 item.itemId = (int)data.ItemID;
                 item.itemCount = (int)data.ItemCount;
                 item.putAwayTime = DateTime.Parse(data.AddTime);
-                var str = UIHelper.ServerStringTrim(data.BiddingTime);
-                if (!str.Equals(string.Empty))
-                {
-                    item.biddingTime = DateTime.Parse(str);
-                }
+                var biddingTimeLabel = UIHelper.ServerStringTrim(data.BiddingTime);
+                item.biddingTime = string.IsNullOrEmpty(biddingTimeLabel) ? DateTime.MinValue : DateTime.Parse(biddingTimeLabel);
                 item.biddingPrice = data.BidderPrice;
                 item.customData = data.UserData;
 
@@ -369,6 +382,11 @@
             }
             else if (package.QueryDir == 3)//瀹氫綅鏌ヨ
             {
+                if (WindowCenter.Instance.IsOpen<AuctionHouseWin>())
+                {
+                    return;
+                }
+                m_ServerAuctionItemGuids.Clear();
                 m_ServerAuctionItemGuids.AddRange(fullServiceAuctionList);
                 auctionHelpModel.SelectedGenreNow = 0;
                 isLocationQuery = true;
@@ -400,11 +418,8 @@
                 item.itemId = (int)data.ItemID;
                 item.itemCount = (int)data.ItemCount;
                 item.putAwayTime = DateTime.Parse(data.AddTime);
-                var str = UIHelper.ServerStringTrim(data.BiddingTime);
-                if (!str.Equals(string.Empty))
-                {
-                    item.biddingTime = DateTime.Parse(str);
-                }
+                var biddingTimeLabel = UIHelper.ServerStringTrim(data.BiddingTime);
+                item.biddingTime = string.IsNullOrEmpty(biddingTimeLabel) ? DateTime.MinValue : DateTime.Parse(biddingTimeLabel);
                 item.biddingPrice = data.BidderPrice;
                 item.customData = data.UserData;
 
@@ -455,25 +470,31 @@
 
         public void ReceivePackage(HB504_tagGCAddAuctionItemInfo package)//鎷嶅崠琛屾柊涓婃灦鎷嶅搧(鐜╁鏈夊叧娉ㄧ殑鎷嶅搧 )
         {
+            if (!isServerPrepare)
+            {
+                return;
+            }
             for (int i = 0; i < package.AddCount; i++)
             {
                 var data = package.AddAuctionItemList[i];
-                AddAuctionItemInfoClass addAuctionItemInfo = new AddAuctionItemInfoClass();
-                addAuctionItemInfo.ItemGUID = UIHelper.ServerStringTrim(data.ItemGUID);
-                addAuctionItemInfo.ItemID = (int)data.ItemID;
-                addAuctionItemInfo.Bool = true;
-                if (AddAuctionItemInfoDic.ContainsKey(addAuctionItemInfo.ItemID))
+                var guid = UIHelper.ServerStringTrim(data.ItemGUID);
+                if (m_FocusItems.FindIndex((x) =>
                 {
-                    AddAuctionItemInfoDic[addAuctionItemInfo.ItemID] = addAuctionItemInfo;
-                }
-                else
+                    return x.itemId == data.ItemID || x.itemGuid.Equals(guid);
+                }) != -1)
                 {
-                    AddAuctionItemInfoDic.Add(addAuctionItemInfo.ItemID, addAuctionItemInfo);
+                    continue;
                 }
+                var focusItem = new FocusAuctionItem()
+                {
+                    itemGuid = guid,
+                    itemId = (int)data.ItemID,
+                };
+                m_FocusItems.Add(focusItem);
             }
-            if (AddAuctionItemInfoUpdate != null)
+            if (onFocusAuctionRefresh != null)
             {
-                AddAuctionItemInfoUpdate();
+                onFocusAuctionRefresh();
             }
         }
 
@@ -496,11 +517,8 @@
                 item.itemId = (int)data.ItemID;
                 item.itemCount = (int)data.ItemCount;
                 item.putAwayTime = DateTime.Parse(data.AddTime);
-                var str = UIHelper.ServerStringTrim(data.BiddingTime);
-                if (!str.Equals(string.Empty))
-                {
-                    item.biddingTime = DateTime.Parse(str);
-                }
+                var biddingTimeLabel = UIHelper.ServerStringTrim(data.BiddingTime);
+                item.biddingTime = string.IsNullOrEmpty(biddingTimeLabel) ? DateTime.MinValue : DateTime.Parse(biddingTimeLabel);
                 item.biddingPrice = data.BidderPrice;
                 item.customData = data.UserData;
                 item.familyPlayers = new List<int>();
@@ -538,11 +556,8 @@
                 item.itemId = (int)data.ItemID;
                 item.itemCount = (int)data.ItemCount;
                 item.putAwayTime = DateTime.Parse(data.AddTime);
-                var str = UIHelper.ServerStringTrim(data.BiddingTime);
-                if (!str.Equals(string.Empty))
-                {
-                    item.biddingTime = DateTime.Parse(str);
-                }
+                var biddingTimeLabel = UIHelper.ServerStringTrim(data.BiddingTime);
+                item.biddingTime = string.IsNullOrEmpty(biddingTimeLabel) ? DateTime.MinValue : DateTime.Parse(biddingTimeLabel);
                 item.biddingPrice = data.BidderPrice;
                 item.customData = data.UserData;
 
@@ -577,6 +592,8 @@
 
         public void ReceivePackage(HB508_tagGCRefreshAuctionItemInfo package)//鎷嶅崠琛屽埛鏂版媿鍝�(鍙繘琛屽埛鏂�)
         {
+            var refreshFairyAuction = false;
+
             for (int i = 0; i < package.RefreshCount; i++)
             {
                 var data = package.RefreshAuctionItemList[i];
@@ -586,37 +603,43 @@
                 AuctionItem item;
                 if (!TryGetAuctionItem(guid, out item))
                 {
-                    continue;
+                    item = new AuctionItem(guid);
+                    PushAuctionItem(item);
                 }
+
+                var _autionType = item.auctionType;
 
                 item.auctionType = data.AuctionType;
                 item.putAwayTime = DateTime.Parse(data.AddTime);
-                item.biddingTime = DateTime.Parse(data.BiddingTime);
+                var biddingTimeLabel = UIHelper.ServerStringTrim(data.BiddingTime);
+                item.biddingTime = string.IsNullOrEmpty(biddingTimeLabel) ? DateTime.MinValue : DateTime.Parse(biddingTimeLabel);
                 item.biddingPlayer = (int)data.BidderID;
                 item.biddingPrice = (int)data.BidderPrice;
-                var str = UIHelper.ServerStringTrim(data.BiddingTime);
-                if (!str.Equals(string.Empty))
-                {
-                    item.biddingTime = DateTime.Parse(str);
-                }
 
-                if (m_FairyAuctionItemGuids.Contains(guid) && item.auctionType != 1)// 鎷嶅崠琛屼粰鐩熸媿鍗栦腑鐨勭墿鍝佷俊鎭�
+                if (_autionType == 1 && item.auctionType != 1)// 鎷嶅崠琛屼粰鐩熸媿鍗栦腑鐨勭墿鍝佷俊鎭�
                 {
-                    m_FairyAuctionItemGuids.Remove(guid);
-                    if (onFairyAuctionRemove != null)
-                    {
-                        onFairyAuctionRemove();
-                    }
+                    refreshFairyAuction = true;
                 }
-                if (auctionItemRefresh != null)
+            }
+
+            if (refreshFairyAuction)
+            {
+                if (fairyAuctionRefresh != null)
                 {
-                    auctionItemRefresh();
+                    fairyAuctionRefresh();
                 }
+            }
+
+            if (auctionItemRefresh != null)
+            {
+                auctionItemRefresh();
             }
         }
 
         public void ReceivePackage(HB509_tagGCClearAuctionItemInfo package)//鎷嶅崠琛屾竻闄ゆ媿鍝� 
         {
+            var refreshFairyAuction = false;
+
             for (int i = 0; i < package.ClearCount; i++)
             {
                 var ItemGUIDList = package.ClearAuctionItemList[i];
@@ -629,10 +652,7 @@
                 if (m_FairyAuctionItemGuids.Contains(guid))// 娓呴櫎鎷嶅崠琛屼粰鐩熸媿鍗栦腑鐨勭墿鍝佷俊鎭�
                 {
                     m_FairyAuctionItemGuids.Remove(guid);
-                    if (onFairyAuctionRemove != null)
-                    {
-                        onFairyAuctionRemove();
-                    }
+                    refreshFairyAuction = true;
                 }
                 var index = m_ServerAuctionItemGuids.IndexOf(guid);
                 if (index != -1)//娓呴櫎鍏ㄦ湇鎷嶅搧鐨勬煇涓�浠剁墿鍝�
@@ -649,6 +669,13 @@
                 }
 
                 RemoveAuctionItem(guid);
+            }
+            if (refreshFairyAuction)
+            {
+                if (fairyAuctionRefresh != null)
+                {
+                    fairyAuctionRefresh();
+                }
             }
             if (onAuctionRemove != null)
             {
@@ -675,11 +702,8 @@
                 item.itemCount = data.ItemCount;
                 item.familyId = (int)data.FamilyID;
                 item.putAwayTime = DateTime.Parse(data.AddTime);
-                var str = UIHelper.ServerStringTrim(data.BiddingTime);
-                if (!str.Equals(string.Empty))
-                {
-                    item.biddingTime = DateTime.Parse(str);
-                }
+                var biddingTimeLabel = UIHelper.ServerStringTrim(data.BiddingTime);
+                item.biddingTime = string.IsNullOrEmpty(biddingTimeLabel) ? DateTime.MinValue : DateTime.Parse(biddingTimeLabel);
                 item.biddingPrice = data.BidderPrice;//绔炴媿鐜╁鍑轰环
                 item.biddingPlayer = (int)data.BidderID;//绔炴媿鐜╁ID锛屼篃灏辨槸褰撳墠鏈�楂樼珵浠风帺瀹禝D
                 item.customData = data.UserData;
@@ -693,6 +717,32 @@
             {
                 myBiddingAuctionRefresh();
             }
+        }
+
+        public void SendBiddingItem(AuctionItem item, bool immediatly)
+        {
+            if (item == null)
+            {
+                return;
+            }
+            var config = AuctionItemConfig.Get(item.itemId);
+            var cost = immediatly ? config.BuyoutPrice * item.itemCount : AuctionLogicUtil.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>();
+                    }
+                }
+            });
         }
 
         #region 瀹氫綅鏌ヨ
@@ -847,6 +897,11 @@
         }
     }
 
+    public struct FocusAuctionItem
+    {
+        public string itemGuid;//鐗╁搧GUID
+        public int itemId;//鐗╁搧ID
+    }
 }
 
 

--
Gitblit v1.8.0