From a659d49e4de12ceb03512fb1927ed4f98dfd28dc Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期二, 12 三月 2019 15:00:05 +0800
Subject: [PATCH] 3335 更新装备洗练功能.

---
 System/EquipTrain/EquipTrainModel.cs |   76 +++++++++++++++++++++++++++++--------
 1 files changed, 59 insertions(+), 17 deletions(-)

diff --git a/System/EquipTrain/EquipTrainModel.cs b/System/EquipTrain/EquipTrainModel.cs
index 6b59de2..2f89ea2 100644
--- a/System/EquipTrain/EquipTrainModel.cs
+++ b/System/EquipTrain/EquipTrainModel.cs
@@ -27,6 +27,12 @@
         public override void Init()
         {
             ParseConfig();
+
+            var levels = equipModel.GetAllEquipSets();
+            foreach (var level in levels)
+            {
+                equipTrains[level] = new EquipTrainSet(level);
+            }
         }
 
         public override void UnInit()
@@ -178,6 +184,32 @@
                 return;
             }
 
+            if (invevitable)
+            {
+                var properties = GetTrainedProperties(selectedLevel.value, selectedPlace.value);
+                var type = GetTrainType(selectedPlace.value);
+                var trainLevel = GetTrainLevel(selectedLevel.value, selectedPlace.value);
+                var data = EquipWashConfig.Get(type, trainLevel);
+                var isPerfect = false;
+                switch (index)
+                {
+                    case 1:
+                        isPerfect = properties[index - 1] >= data.config.attMax1;
+                        break;
+                    case 2:
+                        isPerfect = properties[index - 1] >= data.config.attMax2;
+                        break;
+                    case 3:
+                        isPerfect = properties[index - 1] >= data.config.attMax3;
+                        break;
+                }
+
+                if (isPerfect)
+                {
+                    return;
+                }
+            }
+
             if (propertyBars.Count > index)
             {
                 propertyBars[index].inevitable.value = invevitable;
@@ -255,17 +287,29 @@
                 return TrainState.Empty;
             }
 
-            var currentStarLevel = GetTrainLevel(equip.config.LV, equip.config.EquipPlace);
-            var absoluteMax = GetMaxTrainLevel(equip.config.EquipPlace);
-            if (currentStarLevel >= absoluteMax)
+            var type = GetTrainType(place);
+            var currentStarLevel = GetTrainLevel(level, place);
+            var absoluteMax = GetMaxTrainLevel(place);
+            var data = EquipWashConfig.Get(type, Mathf.Clamp(currentStarLevel, 1, absoluteMax));
+            if (data == null)
             {
-                return TrainState.MaxLevel;
+                return TrainState.Empty;
             }
 
-            var relativeMax = GetMaxTrainLevel(equip.config.LV, equip.config.EquipPlace);
-            if (currentStarLevel >= relativeMax)
+            var properties = GetTrainedProperties(level, place);
+            var isFull = properties.x >= data.config.attMax1 && properties.y >= data.config.attMax2 && properties.z >= data.config.attMax3;
+            if (isFull)
             {
-                return TrainState.StarLimit;
+                if (currentStarLevel >= absoluteMax)
+                {
+                    return TrainState.MaxLevel;
+                }
+
+                var relativeMax = GetMaxTrainLevel(equip.config.LV, equip.config.EquipPlace);
+                if (currentStarLevel >= relativeMax)
+                {
+                    return TrainState.StarLimit;
+                }
             }
 
             return TrainState.Allowable;
@@ -316,7 +360,7 @@
             var unSavedProperties = GetUnSavedProperties(level, place);
             var trainedProperties = GetTrainedProperties(level, place);
             var trainLevel = GetTrainLevel(level, place);
-            var data = EquipWashConfig.Get(GetTrainType(place), Mathf.Clamp(trainLevel + 1, 1, absoluteMax));
+            var data = EquipWashConfig.Get(GetTrainType(place), Mathf.Clamp(trainLevel, 1, absoluteMax));
 
             if (data != null)
             {
@@ -370,25 +414,23 @@
 
         private TrainOperateType CalculateTrainOperateType(int level, int place)
         {
-            var currentLevel = GetTrainLevel(level, place);
-            var maxLevel = GetMaxTrainLevel(level, place);
-            if (maxLevel > 0 && currentLevel >= maxLevel)
-            {
-                return TrainOperateType.Max;
-            }
-
             var unSavedProperties = GetUnSavedProperties(level, place);
             if (unSavedProperties != Int3.zero)
             {
                 return TrainOperateType.Save;
             }
 
-            var trainable = GetEquipPlaceTrainState(level, place) == TrainState.Allowable;
-            if (trainable)
+            var trainState = GetEquipPlaceTrainState(level, place);
+            if (trainState == TrainState.Allowable)
             {
                 return TrainOperateType.Train;
             }
 
+            if (trainState == TrainState.StarLimit || trainState == TrainState.MaxLevel)
+            {
+                return TrainOperateType.Max;
+            }
+
             return TrainOperateType.None;
         }
 

--
Gitblit v1.8.0