From 41a6e87783d042bf3e0ecebfa772443f2b5ed95d Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 06 六月 2019 17:22:55 +0800
Subject: [PATCH] 7132 【2.0】【开发】打宝界面优化2

---
 System/CrossServerBoss/CrossServerBossModel.cs |  119 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 80 insertions(+), 39 deletions(-)

diff --git a/System/CrossServerBoss/CrossServerBossModel.cs b/System/CrossServerBoss/CrossServerBossModel.cs
index a7bd4cb..ba71549 100644
--- a/System/CrossServerBoss/CrossServerBossModel.cs
+++ b/System/CrossServerBoss/CrossServerBossModel.cs
@@ -37,32 +37,55 @@
             }
         }
 
-        public int bigBoxCollectCount {
-            get { return dogzDungeonModel.bigBoxCollectCount; }
-        }
-
-        public int smallBoxCollectCount {
-            get { return dogzDungeonModel.smallBoxCollectCount; }
-        }
-
+        int m_WearyValue = 0;
         public int wearyValue {
-            get {
-                return dogzDungeonModel.wearyValue;
+            get { return m_WearyValue; }
+            set {
+                if (m_WearyValue != value)
+                {
+                    m_WearyValue = value;
+                    UpdateRedpoint();
+                    if (bossWearyValueChangeEvent != null)
+                    {
+                        bossWearyValueChangeEvent();
+                    }
+                }
             }
         }
 
+        int m_BigBoxCollectCount = 0;
+        public int bigBoxCollectCount {
+            get { return m_BigBoxCollectCount; }
+            set {
+                if (m_BigBoxCollectCount != value)
+                {
+                    m_BigBoxCollectCount = value;
+                    UpdateRedpoint();
+                    if (bigBoxCollectCountChangeEvent != null)
+                    {
+                        bigBoxCollectCountChangeEvent();
+                    }
+                }
+            }
+        }
+
+        int m_SmallBoxCollectCount = 0;
+        public int smallBoxCollectCount {
+            get { return m_SmallBoxCollectCount; }
+            set { m_SmallBoxCollectCount = value; }
+        }
+
+        public event Action bossWearyValueChangeEvent;
         public event Action<int> bossSelectedEvent;
         public event Action bigBoxCollectCountChangeEvent;
         public event Action boxSurplusChangeEvent;
         public event Action eliteSurplusChangeEvent;
 
-        public DogzDungeonBox dogzDungeonBox = new DogzDungeonBox();
-        public DogzDungeonElite dogzDungeonElite = new DogzDungeonElite();
+        public CrossServerBossBox boxInfo = new CrossServerBossBox();
+        public CrossServerBossElite eliteInfo = new CrossServerBossElite();
         public Redpoint redpoint = new Redpoint(FindPreciousModel.LOOTPRECIOUs_REDPOINTID, REDPOINT);
 
         FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
-        DogzDungeonModel dogzDungeonModel { get { return ModelCenter.Instance.GetModel<DogzDungeonModel>(); } }
-        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
         TeamModel teamModel { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
 
         public override void Init()
@@ -141,6 +164,13 @@
                 return false;
             }
 
+            var config = CrossServerBossConfig.Get(selectedBoss);
+            if (config.MonsterType == 4 && !findPreciousModel.IsRealmEnoughToKillBoss(selectedBoss))
+            {
+                error = 6;
+                return false;
+            }
+
             error = 0;
             return true;
         }
@@ -164,6 +194,9 @@
                 case 5:
                     SysNotifyMgr.Instance.ShowTip("CrossMap4");
                     break;
+                case 6:
+                    SysNotifyMgr.Instance.ShowTip("BossRealmHint2", NPCConfig.Get(selectedBoss).Realm);
+                    break;
             }
         }
 
@@ -183,14 +216,30 @@
             var npcIds = new List<int>();
             npcIds.Add(bigBoxNpcId);
             npcIds.Add(eliteMonsters[0]);
-            npcIds.AddRange(bosses.Keys);
+
+            foreach (var bossId in bosses.Keys)
+            {
+                if (findPreciousModel.IsBossUnlock(bossId))
+                {
+                    npcIds.Add(bossId);
+                }
+            }
 
             return npcIds;
         }
 
-        public List<int> GetBosses()
+        public List<int> GetShowBosses()
         {
-            return new List<int>(bosses.Keys);
+            var showBosses = new List<int>();
+            foreach (var bossId in bosses.Keys)
+            {
+                if (findPreciousModel.IsBossUnlock(bossId))
+                {
+                    showBosses.Add(bossId);
+                }
+            }
+
+            return showBosses;
         }
 
         public int GetRecommendNpc()
@@ -202,12 +251,10 @@
 
             if (wearyValue < GeneralDefine.bossWearyValues[2])
             {
-                var playerLevel = PlayerDatas.Instance.baseData.LV;
                 for (int i = sortedBossIds.Count - 1; i >= 0; i--)
                 {
                     var bossId = sortedBossIds[i];
-                    var npcConfig = NPCConfig.Get(bossId);
-                    if (IsBossUnLocked(bossId) && findPreciousModel.IsBossAlive(bossId) && playerLevel >= npcConfig.NPCLV)
+                    if (IsBossUnLocked(bossId) && findPreciousModel.IsBossAlive(bossId))
                     {
                         return bossId;
                     }
@@ -221,7 +268,7 @@
 
         public int GetRecommendKillElite()
         {
-            var Elite = dogzDungeonElite.GetAliveElite();
+            var Elite = eliteInfo.GetAliveElite();
             if (Elite == 0)
             {
                 Elite = eliteMonsters[0];
@@ -230,19 +277,19 @@
             return Elite;
         }
 
-        public bool IsBossUnLocked(int _bossId)
+        public bool IsBossUnLocked(int bossId)
         {
-            if (_bossId == bigBoxNpcId || _bossId == smallBoxNpcId)
+            if (bossId == bigBoxNpcId || bossId == smallBoxNpcId)
             {
                 return true;
             }
 
-            if (eliteMonsters.Contains(_bossId))
+            if (eliteMonsters.Contains(bossId))
             {
                 return true;
             }
 
-            return bosses.ContainsKey(_bossId) && bosses[_bossId].isUnLocked;
+            return bosses.ContainsKey(bossId) && findPreciousModel.IsBossUnlock(bossId);
         }
 
         public void RequestBoxAndEliteSurplusInfo()
@@ -328,31 +375,31 @@
                 var npcInfo = _npcInfoes.NPCInfoList[i];
                 if (npcInfo.NPCID == bigBoxNpcId)
                 {
-                    dogzDungeonBox.bigBoxSurplus = (int)npcInfo.Cnt;
+                    boxInfo.bigBoxSurplus = (int)npcInfo.Cnt;
                     updatedBigBox = true;
                 }
 
                 if (npcInfo.NPCID == smallBoxNpcId)
                 {
-                    dogzDungeonBox.smallBoxSurplus = (int)npcInfo.Cnt;
+                    boxInfo.smallBoxSurplus = (int)npcInfo.Cnt;
                     updatedSmallBox = true;
                 }
 
                 if (eliteMonsters.Contains((int)npcInfo.NPCID))
                 {
-                    dogzDungeonElite.UpdateEliteInfo((int)npcInfo.NPCID, (int)npcInfo.Cnt);
+                    eliteInfo.UpdateEliteInfo((int)npcInfo.NPCID, (int)npcInfo.Cnt);
                     updatedEliteNpcIds.Add((int)npcInfo.NPCID);
                 }
             }
 
             if (!updatedBigBox)
             {
-                dogzDungeonBox.bigBoxSurplus = 0;
+                boxInfo.bigBoxSurplus = 0;
             }
 
             if (!updatedSmallBox)
             {
-                dogzDungeonBox.smallBoxSurplus = 0;
+                boxInfo.smallBoxSurplus = 0;
             }
 
             if (boxSurplusChangeEvent != null)
@@ -364,7 +411,7 @@
             {
                 if (!updatedEliteNpcIds.Contains(item))
                 {
-                    dogzDungeonElite.UpdateEliteInfo(item, 0);
+                    eliteInfo.UpdateEliteInfo(item, 0);
                 }
             }
 
@@ -400,12 +447,12 @@
 
             if (containBox)
             {
-                dogzDungeonBox.UpdateBoxRefreshTime(boxRefreshSecond);
+                boxInfo.UpdateBoxRefreshTime(boxRefreshSecond);
             }
 
             if (containElite)
             {
-                dogzDungeonElite.UpdateEliteRefreshTime(eliteRefreshSecond);
+                eliteInfo.UpdateEliteRefreshTime(eliteRefreshSecond);
             }
 
             if (WindowCenter.Instance.IsOpen("CrossServerBossWin"))
@@ -553,12 +600,6 @@
     public class CrossServerBossData
     {
         public int id { get; private set; }
-        public bool isUnLocked {
-            get {
-                return true;
-            }
-        }
-
         public CrossServerBossData(int _id)
         {
             this.id = _id;

--
Gitblit v1.8.0