From f97a8a604bbd94fb07b6730ee6a79a18f35beb00 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 25 十二月 2018 14:23:15 +0800
Subject: [PATCH] 王者仙盟

---
 Core/GameEngine/Model/Config/KingTreasureConfig.cs                                    |   47 +++++++++
 System/Treasure/KingTreasureModel.cs                                                  |   90 +++++++++++++++++
 Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta                               |   12 ++
 Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs |   49 +++++----
 System/Treasure/KingTreasureWin.cs                                                    |   64 ++++++++++++
 5 files changed, 232 insertions(+), 30 deletions(-)

diff --git a/Core/GameEngine/Model/Config/KingTreasureConfig.cs b/Core/GameEngine/Model/Config/KingTreasureConfig.cs
new file mode 100644
index 0000000..fcc8976
--- /dev/null
+++ b/Core/GameEngine/Model/Config/KingTreasureConfig.cs
@@ -0,0 +1,47 @@
+锘�//--------------------------------------------------------
+//    [Author]:			绗簩涓栫晫
+//    [  Date ]:		   Tuesday, December 25, 2018
+//--------------------------------------------------------
+
+using UnityEngine;
+using System;
+
+namespace TableConfig {
+
+    
+	public partial class KingTreasureConfig : ConfigBase {
+
+		public int ID { get ; private set ; }
+		public int MWID { get ; private set ; }
+		public int LV { get ; private set ; }
+		public string AddAttr { get ; private set; } 
+
+		public override string getKey()
+        {
+            return ID.ToString();
+        }
+
+		public override void Parse() {
+			try
+            {
+                ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
+			
+				MWID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; 
+			
+				LV=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; 
+			
+				AddAttr = rawContents[3].Trim();
+            }
+            catch (Exception ex)
+            {
+                DebugEx.Log(ex);
+            }
+		}
+	
+	}
+
+}
+
+
+
+
diff --git a/Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta b/Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta
new file mode 100644
index 0000000..50ba03e
--- /dev/null
+++ b/Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 69a1de784b915e14b98e3e9276d76115
+timeCreated: 1545706375
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs b/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
index a75003a..d12f980 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
@@ -1,24 +1,25 @@
-锘�//--------------------------------------------------------
-//    [Author]:           绗簩涓栫晫
-//    [  Date ]:           Thursday, May 03, 2018
-//--------------------------------------------------------
-
-using Snxxz.UI;
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-public class DTCA352_tagMCMagicWeaponLVInfo : DtcBasic {
-
-    public override void Done(GameNetPackBasic vNetPack)
-    {
-        base.Done(vNetPack);
-        var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
-        ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
-    }
-
-}
-
-
-
-
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Thursday, May 03, 2018
+//--------------------------------------------------------
+
+using Snxxz.UI;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class DTCA352_tagMCMagicWeaponLVInfo : DtcBasic {
+
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
+        ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
+        ModelCenter.Instance.GetModel<KingTreasureModel>().OnReceivePackage(package);
+    }
+
+}
+
+
+
+
diff --git a/System/Treasure/KingTreasureModel.cs b/System/Treasure/KingTreasureModel.cs
index 981ed2f..ef86615 100644
--- a/System/Treasure/KingTreasureModel.cs
+++ b/System/Treasure/KingTreasureModel.cs
@@ -1,4 +1,5 @@
-锘縰sing System.Collections;
+锘縰sing System;
+using System.Collections;
 using System.Collections.Generic;
 using TableConfig;
 using UnityEngine;
@@ -6,6 +7,11 @@
 {
     public class KingTreasureModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
     {
+        Dictionary<int, TreasureStatus> treasureStatusDict = new Dictionary<int, TreasureStatus>();
+        Dictionary<int, Dictionary<int, Division>> treasureDivisionDict = new Dictionary<int, Dictionary<int, Division>>();
+
+        public event Action<int> treasureStatusRefresh;
+
         public int wearCountLimit { get; private set; }
 
         public override void Init()
@@ -15,7 +21,7 @@
 
         public void OnBeforePlayerDataInitialize()
         {
-
+            treasureStatusDict.Clear();
         }
 
         public void OnPlayerLoginOk()
@@ -35,6 +41,86 @@
             {
                 wearCountLimit = int.Parse(config.Numerical1);
             }
+
+            var configs = Config.Instance.GetAllValues<KingTreasureConfig>();
+            for (int i = 0; i < configs.Count; i++)
+            {
+                Dictionary<int, Division> dict;
+                if (!treasureDivisionDict.TryGetValue(configs[i].MWID, out dict))
+                {
+                    dict = new Dictionary<int, Division>();
+                    treasureDivisionDict.Add(configs[i].MWID, dict);
+                }
+                dict.Add(configs[i].LV, new Division()
+                {
+                    division = configs[i].LV,
+                    propertys = ConfigParse.GetDic<int, int>(configs[i].AddAttr),
+                });
+            }
+        }
+
+        public bool TryGetDivision(int treasureId, int divisionLevel, out Division division)
+        {
+            Dictionary<int, Division> dict;
+            division = default(Division);
+            return treasureDivisionDict.TryGetValue(treasureId, out dict)
+                && dict.TryGetValue(divisionLevel, out division);
+        }
+
+        public bool TryGetStatus(int treasureId, out TreasureStatus status)
+        {
+            return treasureStatusDict.TryGetValue(treasureId, out status);
+        }
+
+        public void OnReceivePackage()
+        {
+
+        }
+
+        public void OnReceivePackage(HA352_tagMCMagicWeaponLVInfo package)
+        {
+            for (int i = 0; i < package.Count; i++)
+            {
+                var data = package.InfoList[i];
+                TreasureStatus status;
+                if (!TryGetStatus((int)data.MWID, out status))
+                {
+                    status = new TreasureStatus();
+                    treasureStatusDict.Add((int)data.MWID, status);
+                }
+                if (treasureStatusRefresh != null)
+                {
+                    treasureStatusRefresh((int)data.MWID);
+                }
+            }
+        }
+
+        public struct Division
+        {
+            public int division;
+            public Dictionary<int, int> propertys;
+        }
+
+        public class TreasureStatus
+        {
+            public int division { get; private set; }
+            public bool isWear { get; private set; }
+
+            public void OnReceive(int division)
+            {
+                this.division = division;
+            }
+
+            public void OnReceive(bool isWear)
+            {
+                this.isWear = isWear;
+            }
+
+            public void Reset()
+            {
+                division = 0;
+                isWear = false;
+            }
         }
     }
 }
diff --git a/System/Treasure/KingTreasureWin.cs b/System/Treasure/KingTreasureWin.cs
index de6dc03..8ee862f 100644
--- a/System/Treasure/KingTreasureWin.cs
+++ b/System/Treasure/KingTreasureWin.cs
@@ -23,9 +23,12 @@
         [SerializeField] RectTransform m_ContainerEnd;
         [SerializeField] Text m_SeasonEndRemind;
         [SerializeField] RectTransform m_ContainerGot;
+        [SerializeField] Image m_DivisionIcon;
         [SerializeField] Text m_Division;
         [SerializeField] Text m_Score;
+        [SerializeField] RectTransform m_ContainerBaseProperty;
         [SerializeField] PropertyBehaviour[] m_BasePropertys;
+        [SerializeField] RectTransform m_ContainerSpecialProperty;
         [SerializeField] PropertyBehaviour[] m_SpecialPropertys;
         [SerializeField] Text m_Remind;
         [SerializeField] Button m_Goto;
@@ -98,6 +101,9 @@
         void DisplayState()
         {
             Treasure treasure;
+            m_ContainerEnd.gameObject.SetActive(false);
+            m_ContainerGot.gameObject.SetActive(false);
+            m_ContainerOnGoing.gameObject.SetActive(false);
             if (model.TryGetTreasure(model.selectedTreasure, out treasure))
             {
                 if (treasure.state == TreasureState.Collected)
@@ -113,17 +119,67 @@
 
         void DisplayGot()
         {
-
+            m_ContainerGot.gameObject.SetActive(true);
+            KingTreasureModel.TreasureStatus status;
+            List<int> basePropertys = new List<int>();
+            List<int> specialPropertys = new List<int>();
+            if (kingTreasureModel.TryGetStatus(model.selectedTreasure, out status))
+            {
+                //--todo 鏄剧ず娈典綅绛夌骇
+                KingTreasureModel.Division division;
+                if (kingTreasureModel.TryGetDivision(model.selectedTreasure, status.division, out division))
+                {
+                    if (division.propertys != null)
+                    {
+                        foreach (var key in division.propertys.Keys)
+                        {
+                            var config = Config.Instance.Get<PlayerPropertyConfig>(key);
+                            if (config.type == 2)
+                            {
+                                specialPropertys.Add(key);
+                            }
+                            else
+                            {
+                                basePropertys.Add(key);
+                            }
+                        }
+                    }
+                }
+                m_ContainerBaseProperty.gameObject.SetActive(basePropertys.Count > 0);
+                m_ContainerSpecialProperty.gameObject.SetActive(specialPropertys.Count > 0);
+                if (basePropertys.Count > 0)
+                {
+                    for (int i = 0; i < m_BasePropertys.Length; i++)
+                    {
+                        m_BasePropertys[i].gameObject.SetActive(i < basePropertys.Count);
+                        if (i < basePropertys.Count)
+                        {
+                            m_BasePropertys[i].DisplayUpper(basePropertys[i], division.propertys[basePropertys[i]]);
+                        }
+                    }
+                }
+                if (specialPropertys.Count > 0)
+                {
+                    for (int i = 0; i < m_SpecialPropertys.Length; i++)
+                    {
+                        m_SpecialPropertys[i].gameObject.SetActive(i < specialPropertys.Count);
+                        if (i < specialPropertys.Count)
+                        {
+                            m_BasePropertys[i].DisplayUpper(basePropertys[i], division.propertys[basePropertys[i]]);
+                        }
+                    }
+                }
+            }
         }
 
         void DisplayEnd()
         {
-
+            m_ContainerEnd.gameObject.SetActive(true);
         }
 
         void DisplayOnGoing()
         {
-
+            m_ContainerOnGoing.gameObject.SetActive(true);
         }
 
         void DisplayTween()
@@ -139,7 +195,7 @@
 
         private void Goto()
         {
-
+            //--todo 璺宠浆鑷宠禌瀛g洰鏍�
         }
 
     }

--
Gitblit v1.8.0