From a2f60684672fa50c8793e9f548ccf57e23fc15e5 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期五, 12 四月 2019 14:15:22 +0800
Subject: [PATCH] 6490 【2.0】【前端】打宝界面和境界压制调整

---
 Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs      |    0 
 System/DogzDungeon/DogzDungeonWin.cs                                          |   29 +++-
 Lua/Gen/SnxxzUIWorldBossModelWrap.cs                                          |    2 
 System/FindPrecious/PersonalBossWin.cs                                        |   26 +++
 System/FindPrecious/BossHomeWin.cs                                            |   30 +++
 System/FindPrecious/WorldBossModel.cs                                         |   67 +++++++-
 System/FindPrecious/WorldBossBreifInfoBehaviour.cs                            |   39 +++++
 System/CrossServerBoss/CrossServerBossWin.cs                                  |   33 +++-
 Core/GameEngine/Model/Config/MapConfig.cs                                     |   27 ++-
 Core/GameEngine/Model/Config/MapConfig.cs.meta                                |    2 
 Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs.meta |    0 
 System/FindPrecious/WorldBossWin.cs                                           |   36 +++-
 System/FindPrecious/DemonJarWin.cs                                            |   40 ++++-
 System/FindPrecious/ElderGodAreaWin.cs                                        |   25 +++
 System/WorldMap/WorldMapUnLockTip.cs                                          |   34 +++-
 15 files changed, 302 insertions(+), 88 deletions(-)

diff --git a/Core/GameEngine/Model/Config/MapConfig.cs b/Core/GameEngine/Model/Config/MapConfig.cs
index 87188a5..e8847e4 100644
--- a/Core/GameEngine/Model/Config/MapConfig.cs
+++ b/Core/GameEngine/Model/Config/MapConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:           Fish
-//    [  Date ]:           Thursday, February 14, 2019
+//    [  Date ]:           Friday, April 12, 2019
 //--------------------------------------------------------
 
 using System.Collections.Generic;
@@ -16,6 +16,7 @@
     public readonly int MapID;
 	public readonly string Name;
 	public readonly int LV;
+	public readonly int realmLevel;
 	public readonly int MapFBType;
 	public readonly int LocalReborn;
 	public readonly int SkillReborn;
@@ -44,32 +45,34 @@
 
 			int.TryParse(tables[2],out LV); 
 
-			int.TryParse(tables[3],out MapFBType); 
+			int.TryParse(tables[3],out realmLevel); 
 
-			int.TryParse(tables[4],out LocalReborn); 
+			int.TryParse(tables[4],out MapFBType); 
 
-			int.TryParse(tables[5],out SkillReborn); 
+			int.TryParse(tables[5],out LocalReborn); 
 
-			int.TryParse(tables[6],out CanRide); 
+			int.TryParse(tables[6],out SkillReborn); 
 
-			int.TryParse(tables[7],out CanOutPet); 
+			int.TryParse(tables[7],out CanRide); 
 
-			int.TryParse(tables[8],out TeamLimit); 
+			int.TryParse(tables[8],out CanOutPet); 
 
-			string[] BornPointsStringArray = tables[9].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+			int.TryParse(tables[9],out TeamLimit); 
+
+			string[] BornPointsStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
 			BornPoints = new Vector3[BornPointsStringArray.Length];
 			for (int i=0;i<BornPointsStringArray.Length;i++)
 			{
 				BornPoints[i]=BornPointsStringArray[i].Vector3Parse();
 			}
 
-			int.TryParse(tables[10],out MainTaskID); 
+			int.TryParse(tables[11],out MainTaskID); 
 
-			MapTaskText = tables[11];
+			MapTaskText = tables[12];
 
-			int.TryParse(tables[12],out Camp); 
+			int.TryParse(tables[13],out Camp); 
 
-			int.TryParse(tables[13],out AtkType); 
+			int.TryParse(tables[14],out AtkType); 
         }
         catch (Exception ex)
         {
diff --git a/Core/GameEngine/Model/Config/MapConfig.cs.meta b/Core/GameEngine/Model/Config/MapConfig.cs.meta
index b9ef1ba..2f274ca 100644
--- a/Core/GameEngine/Model/Config/MapConfig.cs.meta
+++ b/Core/GameEngine/Model/Config/MapConfig.cs.meta
@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: db9da28a811a0af4db68188db3a20863
-timeCreated: 1550121374
+timeCreated: 1555048178
 licenseType: Pro
 MonoImporter:
   serializedVersion: 2
diff --git a/Core/GameEngine/Model/TelPartialConfig/ParticalLoadingBackGroundConfig.cs b/Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs
similarity index 100%
rename from Core/GameEngine/Model/TelPartialConfig/ParticalLoadingBackGroundConfig.cs
rename to Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs
diff --git a/Core/GameEngine/Model/TelPartialConfig/ParticalLoadingBackGroundConfig.cs.meta b/Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs.meta
similarity index 100%
rename from Core/GameEngine/Model/TelPartialConfig/ParticalLoadingBackGroundConfig.cs.meta
rename to Core/GameEngine/Model/TelPartialConfig/PartialLoadingBackGroundConfig.cs.meta
diff --git a/Lua/Gen/SnxxzUIWorldBossModelWrap.cs b/Lua/Gen/SnxxzUIWorldBossModelWrap.cs
index 436cff0..1ace9fc 100644
--- a/Lua/Gen/SnxxzUIWorldBossModelWrap.cs
+++ b/Lua/Gen/SnxxzUIWorldBossModelWrap.cs
@@ -260,7 +260,7 @@
                 
                 {
                     
-                        int gen_ret = gen_to_be_invoked.GetLatestUnLockBoss(  );
+                        int gen_ret = gen_to_be_invoked.GetRecommendBoss(  );
                         LuaAPI.xlua_pushinteger(L, gen_ret);
                     
                     
diff --git a/System/CrossServerBoss/CrossServerBossWin.cs b/System/CrossServerBoss/CrossServerBossWin.cs
index 4e929c2..cfcb6d2 100644
--- a/System/CrossServerBoss/CrossServerBossWin.cs
+++ b/System/CrossServerBoss/CrossServerBossWin.cs
@@ -24,6 +24,7 @@
         [SerializeField] ImageEx m_ImageGoto;
         [SerializeField] Button m_KillRecord;
         [SerializeField] Transform m_SurpassLevel;
+        [SerializeField] RectTransform m_NoDamageTip;
         [SerializeField] ToggleButton m_Subscribe;
 
         [SerializeField] RectTransform m_ContainerBoxCollectWeary;
@@ -33,8 +34,6 @@
 
         CrossServerBossModel model { get { return ModelCenter.Instance.GetModel<CrossServerBossModel>(); } }
         FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
-        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
-        BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
 
         #region Built-in
         protected override void BindController()
@@ -85,7 +84,7 @@
 
             DisplayItemDropTip(model.selectedBoss);
             DisplayBossBaseInfo(model.selectedBoss);
-            DisplayWearyValue(model.selectedBoss);
+            DisplayTimes(model.selectedBoss);
         }
 
         private void ShowKillRecords()
@@ -149,7 +148,7 @@
         {
             DisplayItemDropTip(_bossId);
             DisplayBossBaseInfo(_bossId);
-            DisplayWearyValue(_bossId);
+            DisplayTimes(_bossId);
         }
 
         private void DisplayBossBaseInfo(int _bossId)
@@ -191,26 +190,40 @@
             }
         }
 
-        private void DisplayItemDropTip(int _bossId)
+        private void DisplayItemDropTip(int bossId)
         {
-            var config = CrossServerBossConfig.Get(model.selectedBoss);
+            var config = CrossServerBossConfig.Get(bossId);
             switch (config.MonsterType)
             {
                 case 1:
                 case 2:
                 case 3:
+                    m_NoDamageTip.gameObject.SetActive(true);
                     m_SurpassLevel.gameObject.SetActive(false);
                     break;
                 case 4:
-                    var npcDropConfig = NPCDropItemConfig.Get(_bossId);
-                    m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+                    var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+                    var npcConfig = NPCConfig.Get(bossId);
+
+                    if (npcConfig.Realm > realmLevel)
+                    {
+                        m_NoDamageTip.gameObject.SetActive(true);
+                        m_SurpassLevel.gameObject.SetActive(false);
+                    }
+                    else
+                    {
+                        m_NoDamageTip.gameObject.SetActive(false);
+                        var dropConfig = NPCDropItemConfig.Get(bossId);
+                        var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
+                        m_SurpassLevel.gameObject.SetActive(noDrop);
+                    }
                     break;
             }
         }
 
-        private void DisplayWearyValue(int _bossId)
+        private void DisplayTimes(int bossId)
         {
-            var config = CrossServerBossConfig.Get(model.selectedBoss);
+            var config = CrossServerBossConfig.Get(bossId);
             switch (config.MonsterType)
             {
                 case 1:
diff --git a/System/DogzDungeon/DogzDungeonWin.cs b/System/DogzDungeon/DogzDungeonWin.cs
index a6c3823..e60a260 100644
--- a/System/DogzDungeon/DogzDungeonWin.cs
+++ b/System/DogzDungeon/DogzDungeonWin.cs
@@ -24,6 +24,7 @@
         [SerializeField] ImageEx m_ImageGoto;
         [SerializeField] Button m_KillRecord;
         [SerializeField] Transform m_SurpassLevel;
+        [SerializeField] RectTransform m_NoDamageTip;
         [SerializeField] ToggleButton m_Subscribe;
 
         [SerializeField] RectTransform m_ContainerBoxCollectWeary;
@@ -85,7 +86,7 @@
 
             DisplayItemDropTip(model.selectedBoss);
             DisplayBossBaseInfo(model.selectedBoss);
-            DisplayWearyValue(model.selectedBoss);
+            DisplaySkillTimes(model.selectedBoss);
         }
 
         private void ShowKillRecords()
@@ -232,7 +233,7 @@
         {
             DisplayItemDropTip(_bossId);
             DisplayBossBaseInfo(_bossId);
-            DisplayWearyValue(_bossId);
+            DisplaySkillTimes(_bossId);
         }
 
         private void DisplayBossBaseInfo(int _bossId)
@@ -274,24 +275,38 @@
             }
         }
 
-        private void DisplayItemDropTip(int _bossId)
+        private void DisplayItemDropTip(int bossId)
         {
-            var config = DogzDungeonConfig.Get(model.selectedBoss);
+            var config = DogzDungeonConfig.Get(bossId);
             switch (config.MonsterType)
             {
                 case 1:
                 case 2:
                 case 3:
+                    m_NoDamageTip.gameObject.SetActive(true);
                     m_SurpassLevel.gameObject.SetActive(false);
                     break;
                 case 4:
-                    var npcDropConfig = NPCDropItemConfig.Get(_bossId);
-                    m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+                    var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+                    var npcConfig = NPCConfig.Get(bossId);
+
+                    if (npcConfig.Realm > realmLevel)
+                    {
+                        m_NoDamageTip.gameObject.SetActive(true);
+                        m_SurpassLevel.gameObject.SetActive(false);
+                    }
+                    else
+                    {
+                        m_NoDamageTip.gameObject.SetActive(false);
+                        var dropConfig = NPCDropItemConfig.Get(bossId);
+                        var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
+                        m_SurpassLevel.gameObject.SetActive(noDrop);
+                    }
                     break;
             }
         }
 
-        private void DisplayWearyValue(int _bossId)
+        private void DisplaySkillTimes(int _bossId)
         {
             var config = DogzDungeonConfig.Get(model.selectedBoss);
             switch (config.MonsterType)
diff --git a/System/FindPrecious/BossHomeWin.cs b/System/FindPrecious/BossHomeWin.cs
index 4562285..d1821c0 100644
--- a/System/FindPrecious/BossHomeWin.cs
+++ b/System/FindPrecious/BossHomeWin.cs
@@ -26,12 +26,12 @@
         [SerializeField] Button m_Goto;
         [SerializeField] Button m_KillRecord;
         [SerializeField] Transform m_SurpassLevel;
+        [SerializeField] RectTransform m_NoDamageTip;
         [SerializeField] ToggleButton m_Subscribe;
 
         BossHomeModel model { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
         FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
-        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
 
         #region Built-in
         protected override void BindController()
@@ -111,8 +111,8 @@
                         break;
                 }
 
-                var npcDropConfig = NPCDropItemConfig.Get(model.selectedBoss);
-                m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+                DisplayTip(model.selectedBoss);
+
             }
         }
 
@@ -191,8 +191,8 @@
             yield return WaitingForSecondConst.WaitMS300;
             var bossId = model.selectedBoss;
             var config = BossHomeConfig.Get(bossId);
-            var npcDropConfig = NPCDropItemConfig.Get(bossId);
-            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+
+            DisplayTip(model.selectedBoss);
 
             switch (config.MonsterType)
             {
@@ -350,10 +350,28 @@
             }
         }
 
+        private void DisplayTip(int bossId)
+        {
+            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+            var config = NPCConfig.Get(bossId);
+
+            if (config.Realm > realmLevel)
+            {
+                m_NoDamageTip.gameObject.SetActive(true);
+                m_SurpassLevel.gameObject.SetActive(false);
+            }
+            else
+            {
+                m_NoDamageTip.gameObject.SetActive(false);
+                var dropConfig = NPCDropItemConfig.Get(bossId);
+                var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
+                m_SurpassLevel.gameObject.SetActive(noDrop);
+            }
+        }
+
     }
 
 }
-
 
 
 
diff --git a/System/FindPrecious/DemonJarWin.cs b/System/FindPrecious/DemonJarWin.cs
index 0baf954..dc93d1d 100644
--- a/System/FindPrecious/DemonJarWin.cs
+++ b/System/FindPrecious/DemonJarWin.cs
@@ -25,6 +25,7 @@
         [SerializeField] TimerBehaviour m_CountRemainTime;
         [SerializeField] Button m_Goto;
         [SerializeField] Transform m_SurpassLevel;
+        [SerializeField] RectTransform m_NoDamageTip;
         [SerializeField] ToggleButton m_Subscribe;
 
         [SerializeField] RectTransform m_ContainerDouble;
@@ -134,13 +135,13 @@
 
             DemonJarBossData bossData;
             model.TryGetBossData(model.selectedBoss, out bossData);
-            var npcDropConfig = NPCDropItemConfig.Get(bossData.id);
-            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
             m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
 
             m_BossIntroduce.Display(model.selectedBoss, true);
             m_Bosses.Init(bosses);
             m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
+
+            DisplayTip(model.selectedBoss);
         }
 
         private void ShowSkillRecord()
@@ -378,19 +379,18 @@
             return true;
         }
 
-        private void OnBossSelected(int _bossId)
+        private void OnBossSelected(int bossId)
         {
-            m_BossIntroduce.Display(_bossId, false);
-            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
+            m_BossIntroduce.Display(bossId, false);
+            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
 
             DemonJarBossData bossData;
-            model.TryGetBossData(_bossId, out bossData);
-            var npcDropConfig = NPCDropItemConfig.Get(bossData.id);
-            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+            model.TryGetBossData(bossId, out bossData);
 
-            var demonJarConfig = DemonJarConfig.Get(model.selectedBoss);
-            m_RewardDescription.text = Language.Get(demonJarConfig.RewardDescription);
+            var config = DemonJarConfig.Get(model.selectedBoss);
+            m_RewardDescription.text = Language.Get(config.RewardDescription);
 
+            DisplayTip(bossId);
             DisplayAutoAndDoubleTitle();
         }
 
@@ -434,6 +434,26 @@
             }
         }
 
+        private void DisplayTip(int bossId)
+        {
+            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+            var config = NPCConfig.Get(bossId);
+
+            if (config.Realm > realmLevel)
+            {
+                m_NoDamageTip.gameObject.SetActive(true);
+                m_SurpassLevel.gameObject.SetActive(false);
+            }
+            else
+            {
+                m_NoDamageTip.gameObject.SetActive(false);
+                var dropConfig = NPCDropItemConfig.Get(bossId);
+                var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
+                m_SurpassLevel.gameObject.SetActive(noDrop);
+            }
+        }
+
+
     }
 
 }
diff --git a/System/FindPrecious/ElderGodAreaWin.cs b/System/FindPrecious/ElderGodAreaWin.cs
index b5cdfff..0cf358f 100644
--- a/System/FindPrecious/ElderGodAreaWin.cs
+++ b/System/FindPrecious/ElderGodAreaWin.cs
@@ -22,6 +22,7 @@
         [SerializeField] Button m_Goto;
         [SerializeField] Button m_KillRecord;
         [SerializeField] ToggleButton m_Subscribe;
+        [SerializeField] RectTransform m_NoDamageTip;
 
         ElderGodAreaModel model { get { return ModelCenter.Instance.GetModel<ElderGodAreaModel>(); } }
         FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
@@ -82,6 +83,8 @@
             m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
             m_Bosses.Init(bosses);
             m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
+
+            DisplayTip(model.selectedBoss);
         }
 
         private void ShowKillRecords()
@@ -163,11 +166,13 @@
             m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
         }
 
-        private void OnBossSelected(int _bossId)
+        private void OnBossSelected(int bossId)
         {
             StopCoroutine("Co_DelayDisplayNpcBaseInfo");
             StartCoroutine("Co_DelayDisplayNpcBaseInfo");
-            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
+            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
+
+            DisplayTip(bossId);
         }
 
         private void DisplayNpcBaseInfo(bool immediately)
@@ -213,6 +218,22 @@
                 }
             }
         }
+
+        private void DisplayTip(int bossId)
+        {
+            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+            var config = NPCConfig.Get(bossId);
+
+            if (config.Realm > realmLevel)
+            {
+                m_NoDamageTip.gameObject.SetActive(true);
+            }
+            else
+            {
+                m_NoDamageTip.gameObject.SetActive(false);
+            }
+        }
+
     }
 
 }
diff --git a/System/FindPrecious/PersonalBossWin.cs b/System/FindPrecious/PersonalBossWin.cs
index cc20e4f..6670f46 100644
--- a/System/FindPrecious/PersonalBossWin.cs
+++ b/System/FindPrecious/PersonalBossWin.cs
@@ -19,6 +19,7 @@
         [SerializeField] BossIntroduceBehaviour m_BossIntroduce;
         [SerializeField] Text m_Times;
         [SerializeField] Button m_Goto;
+        [SerializeField] RectTransform m_NoDamageTip;
 
         PersonalBossModel model { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } }
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
@@ -39,7 +40,7 @@
         {
             totalTimes = dungeonModel.GetTotalTimes(PersonalBossModel.PERSONALBOSS_MAPID);
             enterTimes = dungeonModel.GetEnterTimes(PersonalBossModel.PERSONALBOSS_MAPID);
-            m_Times.text =  Language.Get("WorldBoss_Endurance0", totalTimes - enterTimes);
+            m_Times.text = Language.Get("WorldBoss_Endurance0", totalTimes - enterTimes);
             m_Times.color = UIHelper.GetUIColor((totalTimes - enterTimes) > 0 ? TextColType.Green : TextColType.Red, true);
         }
 
@@ -73,6 +74,8 @@
             m_BossIntroduce.Display(model.selectedBoss, true);
             m_Bosses.Init(bosses);
             m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
+
+            DisplayTip(model.selectedBoss);
         }
 
         private void GotoKillBoss()
@@ -136,10 +139,27 @@
             return true;
         }
 
-        private void OnBossSelected(int _bossId)
+        private void OnBossSelected(int bossId)
         {
-            m_BossIntroduce.Display(_bossId, false);
+            m_BossIntroduce.Display(bossId, false);
+            DisplayTip(bossId);
         }
+
+        private void DisplayTip(int bossId)
+        {
+            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+            var config = NPCConfig.Get(bossId);
+
+            if (config.Realm > realmLevel)
+            {
+                m_NoDamageTip.gameObject.SetActive(true);
+            }
+            else
+            {
+                m_NoDamageTip.gameObject.SetActive(false);
+            }
+        }
+
     }
 
 }
diff --git a/System/FindPrecious/WorldBossBreifInfoBehaviour.cs b/System/FindPrecious/WorldBossBreifInfoBehaviour.cs
index 3b2ee6f..4d2b463 100644
--- a/System/FindPrecious/WorldBossBreifInfoBehaviour.cs
+++ b/System/FindPrecious/WorldBossBreifInfoBehaviour.cs
@@ -14,6 +14,8 @@
     public class WorldBossBreifInfoBehaviour : FindPreciousBossBriefInfoBehaviour
     {
         [SerializeField] Image m_Attention;
+        [SerializeField] RectTransform m_UnLockCondition;
+        [SerializeField] Image m_UnLockRealm;
 
         protected override int selectedBossId {
             get {
@@ -90,6 +92,43 @@
             m_Attention.gameObject.SetActive(findPreciousModel.IsBossSubscribed(bossId));
         }
 
+        protected override void DrawBossBaseInfo(string icon, string name, int level, int realm)
+        {
+            m_Portrait.SetSprite(icon);
+            m_Portrait.SetNativeSize();
+            m_BossName.text = name;
+            m_BossLevel.text = Language.Get("Z1024", level);
+
+            m_RealmContainer.gameObject.SetActive(isUnLocked);
+            m_UnLockCondition.gameObject.SetActive(!isUnLocked);
+            if (!isUnLocked)
+            {
+                var unLockRealm = model.GetBossUnLockRealm(bossId);
+                var config = RealmConfig.Get(unLockRealm);
+                m_UnLockRealm.SetSprite(config.Img);
+            }
+            else
+            {
+                if (m_Realm != null && m_RealmContainer != null)
+                {
+                    if (RealmConfig.Has(realm))
+                    {
+                        m_RealmContainer.gameObject.SetActive(true);
+                        var realmConfig = RealmConfig.Get(realm);
+                        if (realmConfig != null)
+                        {
+                            m_Realm.SetSprite(realmConfig.Img);
+                        }
+                    }
+                    else
+                    {
+                        m_RealmContainer.gameObject.SetActive(false);
+                    }
+                }
+            }
+
+        }
+
     }
 
 }
diff --git a/System/FindPrecious/WorldBossModel.cs b/System/FindPrecious/WorldBossModel.cs
index f71a9fa..6a5c0c6 100644
--- a/System/FindPrecious/WorldBossModel.cs
+++ b/System/FindPrecious/WorldBossModel.cs
@@ -3,13 +3,11 @@
 using UnityEngine;
 using System;
 
-
 namespace Snxxz.UI
 {
     [XLua.LuaCallCSharp]
-	public class WorldBossModel : Model
+    public class WorldBossModel : Model
     {
-
         public const int WORLDBOSS_REDPOINT = 76001;
 
         int m_SelectedBoss = 0;
@@ -64,6 +62,7 @@
 
         public Redpoint worldBossRedPoint = new Redpoint(FindPreciousModel.FINDPRECIOUS_REDPOINTID, WORLDBOSS_REDPOINT);
         FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
+        RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
 
         public override void Init()
         {
@@ -82,13 +81,10 @@
         public List<int> GetWorldBosses()
         {
             var activedBossIds = new List<int>();
-            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
             for (int i = 0; i < sortedBossIds.Count; i++)
             {
                 var bossId = sortedBossIds[i];
-                var config = WorldBossConfig.Get(bossId);
-                var mapId = config.MapID;
-                if (mapModel.IsMapUnlocked(mapId))
+                if (IsBossUnLockedOrUnlockSoon(bossId))
                 {
                     activedBossIds.Add(bossId);
                 }
@@ -100,7 +96,6 @@
         public List<int> GetWorldBosses(int _mapId)
         {
             var bosses = new List<int>();
-            var mapModel = ModelCenter.Instance.GetModel<MapModel>();
             for (int i = 0; i < sortedBossIds.Count; i++)
             {
                 var bossId = sortedBossIds[i];
@@ -120,7 +115,7 @@
             return worldBosses.ContainsKey(_bossId) && worldBosses[_bossId].isUnLocked;
         }
 
-        public int GetLatestUnLockBoss()
+        public int GetRecommendBoss()
         {
             var playerLevel = PlayerDatas.Instance.baseData.LV;
             for (int i = sortedBossIds.Count - 1; i >= 0; i--)
@@ -136,6 +131,47 @@
             return sortedBossIds[0];
         }
 
+        public int GetBossUnLockRealm(int bossId)
+        {
+            if (!worldBosses.ContainsKey(bossId))
+            {
+                return 0;
+            }
+
+            var config = NPCConfig.Get(bossId);
+            var realmStage = realmModel.GetRealmStage(config.Realm);
+            var realms = new List<int>();
+            if (realmModel.TryGetRealmStages(realmStage, out realms))
+            {
+                return realms[0];
+            }
+            else
+            {
+                return 0;
+            }
+        }
+
+        private bool IsBossUnLockedOrUnlockSoon(int bossId)
+        {
+            var myRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
+            var myRealmStage = realmModel.GetRealmStage(myRealmLevel);
+
+            var config = NPCConfig.Get(bossId);
+            var bossRealmStage = realmModel.GetRealmStage(config.Realm);
+
+            if (myRealmStage >= bossRealmStage)
+            {
+                return true;
+            }
+
+            if (myRealmStage + 1 >= bossRealmStage)
+            {
+                return true;
+            }
+
+            return false;
+        }
+
         private void ParseConfig()
         {
             var worldBossConfigs = WorldBossConfig.GetValues();
@@ -147,18 +183,23 @@
             sortedBossIds.AddRange(worldBosses.Keys);
             sortedBossIds.Sort(WorldBossData.LevelCompare);
         }
+
     }
 
     public class WorldBossData
     {
-        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
+        RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
 
         public int id { get; private set; }
         public bool isUnLocked {
             get {
-                var config = WorldBossConfig.Get(id);
-                var mapUnLocked = mapModel.IsMapUnlocked(config.MapID);
-                return mapUnLocked;
+                var myRealmLevel = PlayerDatas.Instance.baseData.realmLevel;
+                var myRealmStage = realmModel.GetRealmStage(myRealmLevel);
+
+                var config = NPCConfig.Get(id);
+                var bossRealmStage = realmModel.GetRealmStage(config.Realm);
+
+                return myRealmStage >= bossRealmStage;
             }
         }
 
diff --git a/System/FindPrecious/WorldBossWin.cs b/System/FindPrecious/WorldBossWin.cs
index e8f0d0d..cfb8116 100644
--- a/System/FindPrecious/WorldBossWin.cs
+++ b/System/FindPrecious/WorldBossWin.cs
@@ -21,10 +21,10 @@
         [SerializeField] Button m_Goto;
         [SerializeField] Button m_KillRecord;
         [SerializeField] Transform m_SurpassLevel;
+        [SerializeField] RectTransform m_NoDamageTip;
         [SerializeField] ToggleButton m_Subscribe;
 
         WorldBossModel model { get { return ModelCenter.Instance.GetModel<WorldBossModel>(); } }
-        MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
         FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
         BossHomeModel bossHomeModel { get { return ModelCenter.Instance.GetModel<BossHomeModel>(); } }
@@ -78,16 +78,14 @@
             var bosses = new List<int>();
             bosses.AddRange(model.GetWorldBosses());
 
-            model.selectedBoss = model.GetLatestUnLockBoss();
+            model.selectedBoss = model.GetRecommendBoss();
             m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
 
             m_BossIntroduce.Display(model.selectedBoss, true);
             m_Bosses.Init(bosses);
             m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
 
-            var config = NPCConfig.Get(model.selectedBoss);
-            var npcDropConfig = NPCDropItemConfig.Get(model.selectedBoss);
-            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+            DisplayTip(model.selectedBoss);
         }
 
         private void ShowKillRecords()
@@ -128,12 +126,11 @@
             m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
         }
 
-        private void OnBossSelected(int _bossId)
+        private void OnBossSelected(int bossId)
         {
-            m_BossIntroduce.Display(_bossId, false);
-            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
-            var npcDropConfig = NPCDropItemConfig.Get(model.selectedBoss);
-            m_SurpassLevel.gameObject.SetActive(npcDropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > npcDropConfig.MaxLV);
+            m_BossIntroduce.Display(bossId, false);
+            m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(bossId);
+            DisplayTip(bossId);
         }
 
         private void OnBossWearyValue()
@@ -221,6 +218,25 @@
             }
         }
 
+        private void DisplayTip(int bossId)
+        {
+            var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
+            var config = NPCConfig.Get(bossId);
+
+            if (config.Realm > realmLevel)
+            {
+                m_NoDamageTip.gameObject.SetActive(true);
+                m_SurpassLevel.gameObject.SetActive(false);
+            }
+            else
+            {
+                m_NoDamageTip.gameObject.SetActive(false);
+                var dropConfig = NPCDropItemConfig.Get(bossId);
+                var noDrop = dropConfig == null || (dropConfig.MaxLV != 0 && PlayerDatas.Instance.baseData.LV > dropConfig.MaxLV);
+                m_SurpassLevel.gameObject.SetActive(noDrop);
+            }
+        }
+
     }
 
 }
diff --git a/System/WorldMap/WorldMapUnLockTip.cs b/System/WorldMap/WorldMapUnLockTip.cs
index 97a6cf0..25c93ee 100644
--- a/System/WorldMap/WorldMapUnLockTip.cs
+++ b/System/WorldMap/WorldMapUnLockTip.cs
@@ -12,28 +12,36 @@
 
     public class WorldMapUnLockTip : MonoBehaviour
     {
-        [SerializeField] Image m_LevelConditionSign;
-        [SerializeField] Image m_TreasureConditionSign;
-        [SerializeField] Text m_LevelCondtion;
-        [SerializeField] Text m_TreasureCondition;
-
-        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
+        [SerializeField] Image m_ConditionSign1;
+        [SerializeField] Image m_ConditionSign2;
+        [SerializeField] Text m_Condtion1;
+        [SerializeField] Text m_Condition2;
 
         public void Display(int _mapId)
         {
             var config = MapConfig.Get(_mapId);
-            m_LevelCondtion.text = Language.Get("WorldMap_LV", config.LV);
-            m_LevelCondtion.color = PlayerDatas.Instance.baseData.LV >= config.LV ? UIHelper.GetUIColor(TextColType.Green) : UIHelper.GetUIColor(TextColType.Red);
 
-            if (string.IsNullOrEmpty(config.MapTaskText))
+            if (config.realmLevel > 0)
             {
-                m_TreasureConditionSign.gameObject.SetActive(false);
-                m_TreasureCondition.text = "";
+                var realmConfig = RealmConfig.Get(config.realmLevel);
+                m_Condtion1.text = Language.Get("WorldMap_Realm", realmConfig.Name);
+                m_Condtion1.color = UIHelper.GetUIColor(PlayerDatas.Instance.baseData.realmLevel >= config.realmLevel ? TextColType.Green : TextColType.Red);
             }
             else
             {
-                m_TreasureConditionSign.gameObject.SetActive(true);
-                m_TreasureCondition.text = config.MapTaskText;
+                m_Condtion1.text = Language.Get("WorldMap_LV", config.LV);
+                m_Condtion1.color = UIHelper.GetUIColor(PlayerDatas.Instance.baseData.LV >= config.LV ? TextColType.Green : TextColType.Red);
+            }
+
+            if (string.IsNullOrEmpty(config.MapTaskText))
+            {
+                m_ConditionSign2.gameObject.SetActive(false);
+                m_Condition2.text = "";
+            }
+            else
+            {
+                m_ConditionSign2.gameObject.SetActive(true);
+                m_Condition2.text = config.MapTaskText;
             }
         }
 

--
Gitblit v1.8.0