From b36979b59d5825972f970d09b28e05ac45629132 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期二, 14 八月 2018 14:35:12 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/BlastFurnace/BlastFurnaceModel.cs |   82 +++++++++++++++++++++++++++++++++++------
 1 files changed, 70 insertions(+), 12 deletions(-)

diff --git a/System/BlastFurnace/BlastFurnaceModel.cs b/System/BlastFurnace/BlastFurnaceModel.cs
index f175f1c..06aa331 100644
--- a/System/BlastFurnace/BlastFurnaceModel.cs
+++ b/System/BlastFurnace/BlastFurnaceModel.cs
@@ -83,12 +83,14 @@
         treasureRefineDict.Clear();
         FuncOpen.Instance.OnFuncStateChangeEvent -= RefreshFuncOpenState;
         playerPack.RefreshItemCountAct -= RefreshMat;
+        playerPack.RefreshItemSumUseCntAct -= RefreshItemUsce;
     }
 
     public void OnAfterPlayerDataInitialize()
     {
         playerPack.RefreshItemCountAct += RefreshMat;
         FuncOpen.Instance.OnFuncStateChangeEvent += RefreshFuncOpenState;
+        playerPack.RefreshItemSumUseCntAct += RefreshItemUsce;
     }
 
     private void RefreshFuncOpenState(int funcId)
@@ -370,34 +372,64 @@
     /// <summary>
     /// 寰楀埌棰勮鍚堟垚涓硅嵂鐨勫垪琛�
     /// </summary>
-    public List<int> GetPreviewMakeDruglist(AlchemyConfig alchemyModel)
+    public Dictionary<int, int> GetPreviewMakeDruglist(AlchemyConfig alchemyModel)
     {
         JsonData jsonData = JsonMapper.ToObject(alchemyModel.AlchemPreviewItem);
-        List<int> drugIdlist = new List<int>();
+        PreviewItemDict.Clear();
         if (jsonData.IsArray)
         {
             for (int i = 0; i < jsonData.Count; i++)
             {
-                int itemId = int.Parse(jsonData[i].ToString());
-                drugIdlist.Add(itemId);
+                if (jsonData[i].IsArray)
+                {
+                    int itemId = int.Parse(jsonData[i][0].ToString());
+                    if (jsonData[i].Count > 1)
+                    {
+                        int effectId = int.Parse(jsonData[i][1].ToString());
+                        PreviewItemDict.Add(itemId, effectId);
+                    }
+                    else
+                    {
+                        PreviewItemDict.Add(itemId, 0);
+                    }
+                }
             }
         }
-        return drugIdlist;
+        return PreviewItemDict;
     }
 
-    public List<int> GetPreviewSpecMakeDruglist(AlchemySpecConfig alchemyModel)
+    Dictionary<int, int> PreviewItemDict = new Dictionary<int, int>();
+    public Dictionary<int, int> GetPreviewSpecMakeDruglist(AlchemySpecConfig alchemyModel)
     {
         JsonData jsonData = JsonMapper.ToObject(alchemyModel.AlchemPreviewItem);
-        List<int> drugIdlist = new List<int>();
+        PreviewItemDict.Clear();
         if (jsonData.IsArray)
         {
             for (int i = 0; i < jsonData.Count; i++)
             {
-                int itemId = int.Parse(jsonData[i].ToString());
-                drugIdlist.Add(itemId);
+                if(jsonData[i].IsArray)
+                {
+                    int itemId = int.Parse(jsonData[i][0].ToString());
+                    if (jsonData[i].Count > 1)
+                    {
+                        int effectId = int.Parse(jsonData[i][1].ToString());
+                        PreviewItemDict.Add(itemId,effectId);
+                    }
+                    else
+                    {
+                        PreviewItemDict.Add(itemId,0);
+                    }
+                }
             }
         }
-        return drugIdlist;
+        return PreviewItemDict;
+    }
+
+    public int GetEffectIdByItemId(int itemId)
+    {
+        int effectId = 0;
+        PreviewItemDict.TryGetValue(itemId,out effectId);
+        return effectId;
     }
 
     /// <summary>
@@ -699,6 +731,14 @@
         CheckRecycleStoreRed();
     }
 
+    private void RefreshItemUsce(int id)
+    {
+        if(playerPack.CheckIsDrugById(id))
+        {
+            CheckMakerDandrugCondition();
+        }
+    }
+
     public void CheckMakerDandrugCondition()
     {
         for (int i = alchemyModellist.Count - 1; i > -1; i--)
@@ -726,7 +766,7 @@
             {
                 if(!CheckNormalAlchemyIsReachMaxUse(alchemyModellist[i]))
                 {
-                    if (IsNormalMatEnough(alchemyModellist[i]))
+                    if (IsNormalMatEnough(alchemyModellist[i]) && !IsHaveReachFull(alchemyModellist[i]))
                     {
                         danDrugRedPointlist[i].state = RedPointState.Simple;
                         return;
@@ -773,11 +813,29 @@
         return isEnough;
     }
 
+    public bool IsHaveReachFull(AlchemyConfig alchemyConfig)
+    {
+        if (alchemyConfig == null) return false;
+        List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig).Keys.ToList();
+        for(int i = 0; i < previewlist.Count; i++)
+        {
+            if(playerPack.CheckIsDrugById(previewlist[i]))
+            {
+                AttrFruitConfig fruitConfig = ConfigManager.Instance.GetTemplate<AttrFruitConfig>(previewlist[i]);
+                if(playerPack.IsReachMaxUseDrug(fruitConfig))
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     public bool CheckNormalAlchemyIsReachMaxUse(AlchemyConfig alchemyConfig)
     {
         if (alchemyConfig == null) return false;
 
-        List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig);
+        List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig).Keys.ToList();
         for(int i = 0; i < previewlist.Count; i++)
         {
             if(playerPack.CheckIsDrugById(previewlist[i]))

--
Gitblit v1.8.0