From f2f6a288f1df9d5cf2eb07cf0ded09c1a6ce3af2 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期三, 15 八月 2018 16:01:55 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/Dungeon/TrialDungeonModel.cs |  133 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 123 insertions(+), 10 deletions(-)

diff --git a/System/Dungeon/TrialDungeonModel.cs b/System/Dungeon/TrialDungeonModel.cs
index d8d55fe..3f7b2c3 100644
--- a/System/Dungeon/TrialDungeonModel.cs
+++ b/System/Dungeon/TrialDungeonModel.cs
@@ -10,6 +10,7 @@
     {
         Dictionary<int, List<TrialExchangeConfig>> trialTokenExchangeDict = new Dictionary<int, List<TrialExchangeConfig>>();
         Dictionary<int, int> lineToTokenClassDict;
+        public Dictionary<int, List<int>> trialClassTokens = new Dictionary<int, List<int>>();
         public List<int> trialTokens = new List<int>();
         PlayerPackModel packModel { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
         DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
@@ -54,6 +55,16 @@
                 if (!trialTokens.Contains(configs[i].tokenId))
                 {
                     trialTokens.Add(configs[i].tokenId);
+                    List<int> _tokens;
+                    if (!trialClassTokens.TryGetValue(itemConfig.LV, out _tokens))
+                    {
+                        _tokens = new List<int>();
+                        trialClassTokens.Add(itemConfig.LV, _tokens);
+                    }
+                    if (!_tokens.Contains(configs[i].tokenId))
+                    {
+                        _tokens.Add(configs[i].tokenId);
+                    }
                 }
             }
             var funcConfig = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("LineToItemStage");
@@ -67,6 +78,10 @@
         private void RefreshItemCountAct(PackType packType, int arg2, int itemId)
         {
             if (packType == PackType.rptItem && trialTokens.Contains(itemId))
+            {
+                UpdateRedpoint();
+            }
+            else if (packType == PackType.rptEquip)
             {
                 UpdateRedpoint();
             }
@@ -144,9 +159,14 @@
             {
                 NewBieCenter.Instance.RemoveNewBieGuide(TRIALEXCHANGE_GUIDE);
             }
-            CA32F_tagCMTrialExchange pak = new CA32F_tagCMTrialExchange();
-            pak.ID = (uint)_id;
-            GameNetSystem.Instance.SendInfo(pak);
+            var tokenConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(config.tokenId);
+            ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"),
+                Language.Get("TokenUseConfirm", config.tokenCount, tokenConfig.ItemName, config.description), (bool isOk) =>
+                   {
+                       CA32F_tagCMTrialExchange pak = new CA32F_tagCMTrialExchange();
+                       pak.ID = (uint)_id;
+                       GameNetSystem.Instance.SendInfo(pak);
+                   });
             return true;
         }
 
@@ -182,6 +202,44 @@
             SysNotifyMgr.Instance.ShowTip("TrialExchangeLimit");
         }
 
+        public int EquipCompare(int _itemId)
+        {
+            var config = ConfigManager.Instance.GetTemplate<ItemConfig>(_itemId);
+            var equipPlace = config.EquipPlace;
+            if (equipPlace == 0)
+            {
+                return 0;
+            }
+            var singlepack = packModel.GetSinglePackModel(PackType.rptEquip);
+            if (singlepack == null)
+            {
+                return 1;
+            }
+            var equipItem = singlepack.GetItemModelByIndex(equipPlace);
+            if (equipItem == null)
+            {
+                return 1;
+            }
+            var compareConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(equipItem.itemId);
+            if (compareConfig == null)
+            {
+                return 1;
+            }
+            if (compareConfig.ItemColor != config.ItemColor)
+            {
+                return compareConfig.ItemColor > config.ItemColor ? -1 : 1;
+            }
+            if (compareConfig.StarLevel != config.StarLevel)
+            {
+                return compareConfig.StarLevel > config.StarLevel ? -1 : 1;
+            }
+            if (compareConfig.LV != config.LV)
+            {
+                return compareConfig.LV > config.LV ? -1 : 1;
+            }
+            return 0;
+        }
+
         #region 绾㈢偣
         void UpdateRedpoint()
         {
@@ -199,22 +257,77 @@
 
         public bool TryGetSatisfyExchange(out int maxClass)
         {
-            var configs = ConfigManager.Instance.GetAllValues<TrialExchangeConfig>();
             maxClass = 0;
-            for (int i = 0; i < configs.Count; i++)
+            foreach (var _class in trialTokenExchangeDict.Keys)
             {
-                var count = GetTrialTokenCount(configs[i].tokenId);
-                if (count >= configs[i].tokenCount)
+                List<TrialExchangeConfig> list;
+                if (TryGetTrialExchanges(_class, out list))
                 {
-                    var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(configs[i].tokenId);
-                    if (itemConfig.LV > maxClass)
+                    for (int i = 0; i < list.Count; i++)
                     {
-                        maxClass = itemConfig.LV;
+                        if (SatisfyExchangeBetter(list[i].id))
+                        {
+                            var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(list[i].tokenId);
+                            if (itemConfig.LV > maxClass)
+                            {
+                                maxClass = itemConfig.LV;
+                            }
+                            break;
+                        }
                     }
                 }
             }
             return maxClass != 0;
         }
+
+        public bool SatisfyExchangeBetter(int _id)
+        {
+            var config = ConfigManager.Instance.GetTemplate<TrialExchangeConfig>(_id);
+            if (config == null)
+            {
+                return false;
+            }
+            var count = GetTrialTokenCount(config.tokenId);
+            if (count < config.tokenCount)
+            {
+                return false;
+            }
+            var exchangeItemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(config.exchangeItemID);
+            if (exchangeItemConfig.EquipPlace == 0)
+            {
+                return true;
+            }
+            if (EquipCompare(config.exchangeItemID) == 1)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        public bool IsAnySatisfyExchangeBetterEquip(int _class, out int _id)
+        {
+            _id = -1;
+            List<TrialExchangeConfig> list;
+            if (TryGetTrialExchanges(_class, out list))
+            {
+                for (int i = 0; i < list.Count; i++)
+                {
+                    var itemConfig = ConfigManager.Instance.GetTemplate<ItemConfig>(list[i].exchangeItemID);
+                    if (SatisfyExchangeBetter(list[i].id) && itemConfig.EquipPlace != 0)
+                    {
+                        _id = list[i].id;
+                        return true;
+                    }
+                }
+            }
+            return false;
+        }
+
+        public bool IsAnySatisfyExchangeBetter()
+        {
+            int _class = 0;
+            return TryGetSatisfyExchange(out _class);
+        }
         #endregion
     }
 }

--
Gitblit v1.8.0