From e627bb5b475ee9def6e2cb014ca0a93f97615840 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期一, 25 三月 2019 19:09:03 +0800
Subject: [PATCH] 3335 灵根开发

---
 System/Role/ReikiRootModel.cs |   53 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/System/Role/ReikiRootModel.cs b/System/Role/ReikiRootModel.cs
index d228154..b1cd453 100644
--- a/System/Role/ReikiRootModel.cs
+++ b/System/Role/ReikiRootModel.cs
@@ -53,6 +53,8 @@
 
         public const int FUNCTION = 36;
 
+        public readonly Redpoint redpoint = new Redpoint(10101, 1010101);
+
         public event Action onCacheFreePointRefresh;
         public event Action onReikiRootPointRefresh;
 
@@ -104,11 +106,14 @@
                 m_RecommendReikiRoots.Add(job, new List<int>(m_RecommendProportion[job].Keys));
             }
 
-            reikiRoots.Add((int)AttrEnum.Mater);
-            reikiRoots.Add((int)AttrEnum.Wood);
-            reikiRoots.Add((int)AttrEnum.Water);
-            reikiRoots.Add((int)AttrEnum.Fire);
-            reikiRoots.Add((int)AttrEnum.Earth);
+            var config = ReikiRootConfig.GetValues()[0];
+            maxQuality = config.qualityArea.Length;
+
+            reikiRoots.Add((int)PropertyType.Mater);
+            reikiRoots.Add((int)PropertyType.Wood);
+            reikiRoots.Add((int)PropertyType.Water);
+            reikiRoots.Add((int)PropertyType.Fire);
+            reikiRoots.Add((int)PropertyType.Earth);
 
         }
 
@@ -136,11 +141,7 @@
 
         public int GetReikiRootQuality(int id)
         {
-            if (m_ReikiRootPoints.ContainsKey(id))
-            {
-                return GetReikiRootQuality(id, m_ReikiRootPoints[id]);
-            }
-            return GetReikiRootQuality(id, 0);
+            return GetReikiRootQuality(id, GetReikiRootPoint(id));
         }
 
         public int GetReikiRootPoint(int id)
@@ -188,9 +189,9 @@
             if (m_RecommendReikiRoots.ContainsKey(job))
             {
                 var reikiRoots = m_RecommendReikiRoots[job];
-                reikiRoots.Sort(QualityCompare);
                 while (remainPoint > 0)
                 {
+                    reikiRoots.Sort(QualityCompare);
                     var id = reikiRoots[0];
                     var quality = GetReikiRootQuality(id, m_CacheReikiRootPoints[id]);
                     var addpoint = 0;
@@ -267,7 +268,7 @@
             {
                 propertyDict.Add(config.propertyPerPoint.x, 0);
             }
-            propertyDict[config.propertyPerPoint.x] += config.propertyPerPoint.y;
+            propertyDict[config.propertyPerPoint.x] += config.propertyPerPoint.y * point;
 
             if (!propertyDict.ContainsKey(config.promoteProperty))
             {
@@ -316,13 +317,16 @@
 
         int QualityCompare(int lhs, int rhs)
         {
-            var lhsQuality = GetReikiRootQuality(lhs);
-            var rhsQuality = GetReikiRootQuality(rhs);
-            if (mainReikiRoot == lhs || mainReikiRoot == rhs)
+            var lhsQuality = GetReikiRootQuality(lhs, GetReikiRootCachePoint(lhs));
+            var rhsQuality = GetReikiRootQuality(rhs, GetReikiRootCachePoint(rhs));
+            if (lhs != rhs)
             {
-                if (lhsQuality == rhsQuality)
+                if (mainReikiRoot == lhs || mainReikiRoot == rhs)
                 {
-                    return mainReikiRoot == lhs ? -1 : 1;
+                    if (lhsQuality == rhsQuality)
+                    {
+                        return mainReikiRoot == lhs ? -1 : 1;
+                    }
                 }
             }
             return lhsQuality.CompareTo(rhsQuality);
@@ -339,6 +343,9 @@
                 case PlayerDataType.CDBPlayerRefresh_Earth:
                     RefreshReikiRootPoint();
                     break;
+                case PlayerDataType.FreePoint:
+                    RefreshRedpoint();
+                    break;
             }
         }
 
@@ -346,13 +353,23 @@
         {
             foreach (var id in reikiRoots)
             {
-                m_ReikiRootPoints[id] = (int)UIHelper.GetPropertyMapPlayerData((AttrEnum)id);
+                m_ReikiRootPoints[id] = (int)UIHelper.GetPropertyMapPlayerData((PropertyType)id);
             }
             if (onReikiRootPointRefresh != null)
             {
                 onReikiRootPointRefresh();
             }
         }
+
+        void RefreshRedpoint()
+        {
+            var existFreePoint = false;
+            if (FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.ReikiRoot))
+            {
+                existFreePoint = freePoint > 0;
+            }
+            redpoint.state = existFreePoint ? RedPointState.Simple : RedPointState.None;
+        }
     }
 
     public struct ReikiRootRecommend

--
Gitblit v1.8.0