From f293a7484f17baf6c6b156f4e5a719a532fbe1fc Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期二, 18 九月 2018 17:01:04 +0800
Subject: [PATCH] 1559 兑换码开发

---
 System/FriendSystem/MailAllModel.cs       |   37 ++++++++++-
 System/Welfare/AwardExchangeModel.cs      |   24 +++++++-
 System/WindowBase/ModelCenter.cs          |    1 
 System/Welfare/ExchangeGetItemWin.cs      |   71 +++++++++--------------
 System/Welfare/ExchangeGetItemWin.cs.meta |    4 
 5 files changed, 84 insertions(+), 53 deletions(-)

diff --git a/System/FriendSystem/MailAllModel.cs b/System/FriendSystem/MailAllModel.cs
index 0ac7e2c..d38ac28 100644
--- a/System/FriendSystem/MailAllModel.cs
+++ b/System/FriendSystem/MailAllModel.cs
@@ -62,6 +62,8 @@
         get { return m_dailyModel ?? (m_dailyModel = ModelCenter.Instance.GetModel<DailyQuestModel>()); }
     }
 
+    AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
+
     public MailAllModel()
     {
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInit;
@@ -158,12 +160,14 @@
                 if (mailModelDict.ContainsKey(mailModel.PackList[i].GUID))
                 {
                     MailInfo info = mailModelDict[mailModel.PackList[i].GUID];
-                    switch(GetMailType(info))
+                    string mailTitle = GetMailTitle(info);
+                    if(mailTitle.Contains("<gcode>"))
                     {
-                        case "CodeRewardMail":
-                            WindowCenter.Instance.Open<ExchangeGetItemWin>();
-                            break;
-                            
+                        exchangeModel.SetAwardExchangeModel(info.Items);
+                    }
+                    else if(GetMailType(info) == "CodeRewardMail")
+                    {
+                        exchangeModel.SetAwardExchangeModel(info.Items);
                     }
                 }
             }
@@ -428,6 +432,7 @@
             }
 
         }
+        mailTitleStr = mailTitleStr.Replace("<gcode>","");
     }
 
     public string GetMailType(MailInfo info)
@@ -444,6 +449,28 @@
         return string.Empty;
     }
 
+    public string GetMailTitle(MailInfo info)
+    {
+        if (smatch.IsMatch(info.Text))
+        {
+            Match match = smatch.Match(info.Text);
+            MailConfig _mailModel = Config.Instance.Get<MailConfig>(match.Groups[1].Value);
+            if (_mailModel != null)
+            {
+                return _mailModel.Title;
+            }
+        }
+        else
+        {
+            string[] mailContentArray = info.Text.Split(new string[] { "<$_$>" }, StringSplitOptions.RemoveEmptyEntries);
+            if (mailContentArray.Length > 0)
+            {
+                return mailContentArray[1];
+            }
+        }
+        return string.Empty;
+    }
+
     StringBuilder todayDailySB = new StringBuilder();
     public string GetTodayDailyNotify(DateTime getTime)
     {
diff --git a/System/Welfare/AwardExchangeModel.cs b/System/Welfare/AwardExchangeModel.cs
index f1058c5..44f6a7c 100644
--- a/System/Welfare/AwardExchangeModel.cs
+++ b/System/Welfare/AwardExchangeModel.cs
@@ -7,8 +7,9 @@
 {
     public class AwardExchangeModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
     {
-        public PlayerPackModel.DecomposeGetMatInfo[] getItems { get; private set; }
+        public MailItemModel[] getItems { get; private set; }
 
+        bool isLogin = true;
         public override void Init()
         {
            
@@ -16,7 +17,7 @@
 
         public void OnBeforePlayerDataInitialize()
         {
-
+            isLogin = true;
         }
 
         public void OnAfterPlayerDataInitialize()
@@ -26,12 +27,29 @@
 
         public void OnPlayerLoginOk()
         {
-            
+            isLogin = false;
         }
 
         public override void UnInit()
         {
            
         }
+
+        public void SetAwardExchangeModel(MailItemModel[] Items)
+        {
+            getItems = null;
+            if (Items == null || isLogin) return;
+
+            getItems = Items;
+            if(!WindowCenter.Instance.CheckOpen<ExchangeGetItemWin>())
+            {
+                WindowCenter.Instance.Open<ExchangeGetItemWin>();
+            }
+        }
+
+        public void ClearAwardExchangeModel()
+        {
+            getItems = null;
+        }
     }
 }
diff --git a/System/Welfare/ExchangeGetItemWin.cs b/System/Welfare/ExchangeGetItemWin.cs
index 0cdd4f1..a5a5bff 100644
--- a/System/Welfare/ExchangeGetItemWin.cs
+++ b/System/Welfare/ExchangeGetItemWin.cs
@@ -6,37 +6,31 @@
 {
     public class ExchangeGetItemWin : Window
     {
-        [SerializeField] GameObject getItemObj;
-        [SerializeField] RectTransform getItemParent;
         [SerializeField] Button sureBtn;
+        [SerializeField] List<CommonItemBaisc> itemBaiscs = new List<CommonItemBaisc>();
 
-        List<GameObject> GetItemlist = new List<GameObject>();
-        AwardExchangeModel exchange { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
+        AwardExchangeModel exchangeModel { get { return ModelCenter.Instance.GetModel<AwardExchangeModel>(); } }
         ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
-
         protected override void BindController()
         {
 
         }
-
         protected override void AddListeners()
         {
             sureBtn.AddListener(CloseClick);
         }
-
         protected override void OnPreOpen()
         {
-            getItemObj.SetActive(false);
-            CreateGetItem();
+            SetDisplayModel();
         }
         protected override void OnAfterOpen()
         {
-            
+            transform.SetAsLastSibling();
         }
 
         protected override void OnPreClose()
         {
-            DestroyGetItemlist();
+            exchangeModel.ClearAwardExchangeModel();
         }
 
         protected override void OnAfterClose()
@@ -44,42 +38,33 @@
 
         }
 
-        private void CreateGetItem()
+        private void SetDisplayModel()
         {
-            GetItemlist.Clear();
-            if (exchange.getItems == null) return;
+            if (exchangeModel == null) return;
 
-            for (int i = 0; i < exchange.getItems.Length; i++)
+            for(int i = 0; i < itemBaiscs.Count; i++)
             {
-                GameObject item = Instantiate(getItemObj);
-                PlayerPackModel.DecomposeGetMatInfo  matInfo = exchange.getItems[i];
-                item.transform.SetParent(getItemParent);
-                item.transform.localPosition = Vector3.zero;
-                item.transform.localScale = Vector3.one;
-                item.name = StringUtility.Contact("getItem",i);
-                item.gameObject.SetActive(true);
-                CommonItemBaisc itemBasic = item.transform.Find("CommonItemCell").GetComponent<CommonItemBaisc>();
-                ItemCellModel cellModel = new ItemCellModel(matInfo.ItemID, false, (ulong)matInfo.Count, matInfo.IsBind,
-                    "", PackType.rptDeleted, false, ConfigParse.Analysis(matInfo.UserData));
-                itemBasic.Init(cellModel);
-                itemBasic.cellBtn.RemoveAllListeners();
-                itemBasic.cellBtn.AddListener(() =>
+                if(i < exchangeModel.getItems.Length)
                 {
-                    ItemAttrData attrData = new ItemAttrData(matInfo.ItemID, false, (ulong)matInfo.Count, -1, matInfo.IsBind,
-                        false, PackType.rptDeleted, "", ConfigParse.Analysis(matInfo.UserData));
-                    tipsModel.SetItemTipsModel(attrData);
-
-                });
-                itemBasic.gameObject.SetActive(true);
-                GetItemlist.Add(item);
-            }
-        }
-
-        private void DestroyGetItemlist()
-        {
-            for (int i = 0; i < GetItemlist.Count; i++)
-            {
-                Destroy(GetItemlist[i]);
+                    MailItemModel itemModel = exchangeModel.getItems[i];
+                    itemBaiscs[i].gameObject.SetActive(true);
+                    ItemCellModel cellModel = new ItemCellModel((int)itemModel.ItemID,false
+                        ,(ulong)itemModel.Count, itemModel.IsBind,"",PackType.rptDeleted,
+                        false,ConfigParse.Analysis(itemModel.UserData));
+                    itemBaiscs[i].Init(cellModel);
+                    itemBaiscs[i].cellBtn.RemoveAllListeners();
+                    itemBaiscs[i].cellBtn.AddListener(()=>
+                    {
+                        ItemAttrData attrData = new ItemAttrData((int)itemModel.ItemID, false
+                        , (ulong)itemModel.Count,-1,itemModel.IsBind,false, PackType.rptDeleted,
+                        "", ConfigParse.Analysis(itemModel.UserData));
+                        tipsModel.SetItemTipsModel(attrData);
+                    });
+                }
+                else
+                {
+                    itemBaiscs[i].gameObject.SetActive(false);
+                }
             }
         }
 
diff --git a/System/Welfare/ExchangeGetItemWin.cs.meta b/System/Welfare/ExchangeGetItemWin.cs.meta
index 8dace72..999e7e3 100644
--- a/System/Welfare/ExchangeGetItemWin.cs.meta
+++ b/System/Welfare/ExchangeGetItemWin.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
-guid: b88138dfb3783c34db741e9d6a847c2a
-timeCreated: 1531139769
+guid: b367524e0821f67439d7c80ed1a0254f
+timeCreated: 1537257075
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/System/WindowBase/ModelCenter.cs b/System/WindowBase/ModelCenter.cs
index d9750f7..e555f65 100644
--- a/System/WindowBase/ModelCenter.cs
+++ b/System/WindowBase/ModelCenter.cs
@@ -194,6 +194,7 @@
             RegisterModel<GodBeastModel>();
             RegisterModel<PrayForDurgModel>();
             RegisterModel<FeatureNoticeModel>();
+            RegisterModel<AwardExchangeModel>();
             inited = true;
         }
 

--
Gitblit v1.8.0